Imported Upstream version 1.7.2
diff --git a/ChangeLog b/ChangeLog
index 1120811..d7de948 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,3874 @@
-=== release 1.7.1 ===
+=== release 1.7.2 ===
 
-2015-12-24  Sebastian Dröge <slomo@coaxion.net>
+2016-02-19  Sebastian Dröge <slomo@coaxion.net>
 
 	* configure.ac:
-	  releasing 1.7.1
+	  releasing 1.7.2
+
+2016-02-19 10:32:28 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/af.po:
+	* po/az.po:
+	* po/bg.po:
+	* po/ca.po:
+	* po/cs.po:
+	* po/da.po:
+	* po/de.po:
+	* po/el.po:
+	* po/en_GB.po:
+	* po/eo.po:
+	* po/es.po:
+	* po/eu.po:
+	* po/fi.po:
+	* po/fr.po:
+	* po/gl.po:
+	* po/hr.po:
+	* po/hu.po:
+	* po/id.po:
+	* po/it.po:
+	* po/ja.po:
+	* po/ky.po:
+	* po/lt.po:
+	* po/lv.po:
+	* po/mt.po:
+	* po/nb.po:
+	* po/nl.po:
+	* po/or.po:
+	* po/pl.po:
+	* po/pt_BR.po:
+	* po/ro.po:
+	* po/ru.po:
+	* po/sk.po:
+	* po/sl.po:
+	* po/sq.po:
+	* po/sr.po:
+	* po/sv.po:
+	* po/tr.po:
+	* po/uk.po:
+	* po/vi.po:
+	* po/zh_CN.po:
+	  po: Update translations
+
+2016-02-18 14:32:23 +0000  Julien Isorce <j.isorce@samsung.com>
+
+	* pkgconfig/gstreamer-bad-audio-uninstalled.pc.in:
+	* pkgconfig/gstreamer-bad-base-uninstalled.pc.in:
+	* pkgconfig/gstreamer-bad-video-uninstalled.pc.in:
+	* pkgconfig/gstreamer-codecparsers-uninstalled.pc.in:
+	* pkgconfig/gstreamer-gl-uninstalled.pc.in:
+	* pkgconfig/gstreamer-insertbin-uninstalled.pc.in:
+	* pkgconfig/gstreamer-mpegts-uninstalled.pc.in:
+	* pkgconfig/gstreamer-player-uninstalled.pc.in:
+	* pkgconfig/gstreamer-plugins-bad-uninstalled.pc.in:
+	* pkgconfig/gstreamer-wayland-uninstalled.pc.in:
+	  uninstalled.pc: add support for non libtool build systems
+	  Currently the .la path is provided which requires to use libtool as
+	  mentioned in the GStreamer manual section-helloworld-compilerun.html.
+	  It is fine as long as the application is built using libtool.
+	  So currently it is not possible to compile a GStreamer application
+	  within gst-uninstalled with CMake or other build system different
+	  than autotools.
+	  This patch allows to do the following in gst-uninstalled env:
+	  gcc test.c -o test $(pkg-config --cflags --libs gstreamer-1.0 \
+	  gstreamer-gl-1.0)
+	  Previously it required to prepend libtool --mode=link
+	  https://bugzilla.gnome.org/show_bug.cgi?id=720778
+
+2016-02-18 16:21:38 +0000  Julien Isorce <j.isorce@samsung.com>
+
+	* gst-libs/gst/gl/gstgldebug.c:
+	  gldebug: make sure debug is initialized when calling gst_gl_insert_debug_marker
+	  Usually gl debug is initialized in gst_gl_context_create_thread.
+	  But this function is not used when using the GstGLContextGPUProcess
+	  from ChromiumGStreamerBackend.
+	  Received signal 11 SEGV_MAPERR 000000000000
+	  gst_debug_category_get_threshold
+	  gst_gl_insert_debug_marker
+	  gst_gl_base_filter_gl_start
+
+2016-02-18 10:33:20 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/Makefile.am:
+	* gst-libs/gst/gl/egl/gstglcontext_egl.c:
+	* gst-libs/gst/gl/utils/gles_versions.h:
+	* gst-libs/gst/gl/utils/opengl_versions.h:
+	  gl: Fix compiler warning about unused const variable with gcc 6
+	  CC       libgstgl_x11_la-gstglcontext_glx.lo
+	  In file included from gstglcontext_glx.c:39:0:
+	  ../utils/opengl_versions.h:52:43: error: ‘gles2_versions’ defined but not used [-Werror=unused-const-variable]
+	  static const struct { int major, minor; } gles2_versions[] = {
+	  ^~~~~~~~~~~~~~
+
+2016-02-18 10:29:21 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/Makefile.am:
+	  gl: Move private headers from SOURCES to noinst_HEADERS
+
+2016-02-18 00:24:04 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/modplug/gstmodplug.cc:
+	  modplug: Fix compiler warning about C++11 compatibility
+	  gstmodplug.cc:94:17: error: invalid suffix on literal; C++11 requires a space between literal and string macro [-Werror=literal-suffix]
+	  #define FORMATS "{ "GST_AUDIO_NE (S32)", "GST_AUDIO_NE (S16)", U8 }"
+	  ^
+	  gstmodplug.cc:94:39: error: invalid suffix on literal; C++11 requires a space between literal and string macro [-Werror=literal-suffix]
+	  #define FORMATS "{ "GST_AUDIO_NE (S32)", "GST_AUDIO_NE (S16)", U8 }"
+	  ^
+
+2016-02-16 15:10:34 +0100  David Fernandez <d.fernandezlop@gmail.com>
+
+	* ext/curl/gstcurlbasesink.c:
+	  curlbasesink: don't send empty buffers
+	  Fixes problem in curlhttpsink when qtmux uses faststart.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762013
+
+2016-02-17 11:16:53 +0100  Thibault Saunier <tsaunier@gnome.org>
+
+	* ext/ladspa/gstladspafilter.c:
+	  ladspa: Fix some debugs
+
+2016-01-26 09:34:00 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* sys/uvch264/gstuvch264_src.c:
+	  uvch264_src: Fix caps memory leak
+	  v4l_caps and new_caps are being allocated new memory before freeing the
+	  old allocation.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761108
+
+2015-12-24 15:36:54 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* gst/mpegtsdemux/mpegtsbase.c:
+	  mpegtsbase: Refactor code to check for subclass seek handling
+	  If subclass is not able to handle seek event, then there is no need to
+	  stop streaming and send flush events. We should simply return FALSE
+	  https://bugzilla.gnome.org/show_bug.cgi?id=758516
+
+2015-12-24 15:10:16 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* gst/mpegtsdemux/mpegtsbase.c:
+	  mpegtsbase: Add condition to check for non working negative rate
+	  tsdemux is not able to handle negative playback rates.
+	  But in mpegtsbase, the same check is not being done.
+	  added a check to not handle negative rate while seeking unless
+	  the same is handled upstream.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=758516
+
+2016-02-17 13:00:46 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglfilter.c:
+	  glfilter: insert the debug marker from the GL thread
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761538
+
+2016-02-17 11:42:23 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglimagesink.c:
+	  glimagesink: remove unsed reconfigure variable
+
+2016-01-13 13:17:56 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglimagesink.c:
+	* ext/gl/gstglimagesink.h:
+	  glimagesink: don't push a reconfigure event from the GL thread
+	  Doing so may cause deadlocks when other elements attempt destroy or created
+	  GL resources.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760559
+
+2016-01-21 10:40:36 +0800  Wang Xin-yu (王昕宇) <comicfans44@gmail.com>
+
+	* ext/gl/gstglvideomixer.c:
+	  glvideomixer: don't leak pad's vertex buffer on release_pad
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760873
+
+2016-02-17 01:08:18 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglmixer.c:
+	* ext/gl/gstglmixer.h:
+	* ext/gl/gstglmosaic.c:
+	* ext/gl/gstglmosaic.h:
+	* ext/gl/gstglstereomix.c:
+	* ext/gl/gstglstereomix.h:
+	* ext/gl/gstglvideomixer.c:
+	* ext/gl/gstglvideomixer.h:
+	  glmixer: Remove usage of GstGLMixerFrameData
+	  Subclasses can just iterate over the list of pads themselves
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760873
+
+2016-01-13 14:41:22 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglmixer.c:
+	  glmixer: don't hold the object lock while calling into GL
+	  Doing so can deadlock between the GL thread and the object lock e.g.
+	  when performing reconfigure events in glimagesink on a resize event.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760559
+
+2016-02-16 22:34:43 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* common:
+	  Update common: make check-exports not fail for libgstgl.def
+	  Should fix distcheck on some build bots.
+
+2016-01-26 09:37:04 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* sys/acmenc/acmenc.c:
+	* sys/acmmp3dec/acmmp3dec.c:
+	  acmenc/acmmp3dec: remove unnecessary break after return
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761109
+
+2015-07-21 18:02:38 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* configure.ac:
+	  configure: improve check for wayland-scanner binary
+	  The plugin doesn't need the wayland-scanner package to be built
+	  or run, it only needs the wayland-scanner program during compile time.
+	  When cross-compiling, build systems might not have the wayland-scanner
+	  package for the target system as it is a developer's tool, while it should
+	  still be possible to use wayland-scanner from the host system.
+	  This patch fixes it by not requiring the wayland-scanner package but
+	  just the binary itself.
+	  Note that the check is done outside of the PKG_CHECK_MODULES
+	  as it doesn't work inside of it.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752688
+
+2016-01-21 11:53:33 +0100  Philippe Normand <philn@igalia.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+	  adaptivedemux: restore bitrate averaging support
+	  This was accidentally removed in commit ccff3be3.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733959
+
+2016-01-20 15:33:28 +0100  Philippe Normand <philn@igalia.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: remove queue2 overrun notification
+	  Due to performance impact concerns this is removed. An alternative
+	  approach would be to rely on buffering messages monitoring.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=733959
+
+2016-02-16 16:18:21 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdevice.c:
+	  vkdevice: add the necessary but arbitrary queue priority
+	  Silences an error in the validation layers.
+
+2016-02-16 16:12:07 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: add the necessary call to check if the physical device supports the surface
+	  Silences an error in the validation layers.
+
+2016-02-16 15:53:56 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkapi.h:
+	* ext/vulkan/vkinstance.c:
+	  vulkan: update to SDK 1.0.3.1
+
+2016-02-16 15:36:41 +1100  Matthew Waters <matthew@centricular.com>
+
+	* configure.ac:
+	  vulkan/build: search for the correct library
+	  SDK 1.0.1 used libvulkan-1.so, 1.0.2 uses libvulkan.so
+
+2016-02-16 11:51:28 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: iterate over the device queue's using the new iteration API
+
+2016-02-16 11:49:24 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkdevice.h:
+	  vkdevice: add callback iteration over the device queue's
+
+2016-02-16 11:22:37 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkqueue.c:
+	* ext/vulkan/vkqueue.h:
+	  vkqueue: add context helpers
+
+2016-02-11 01:31:14 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkdevice.h:
+	* ext/vulkan/vkdisplay.c:
+	* ext/vulkan/vkdisplay.h:
+	* ext/vulkan/vkinstance.c:
+	* ext/vulkan/vkinstance.h:
+	* ext/vulkan/vksink.c:
+	* ext/vulkan/vkupload.c:
+	* ext/vulkan/vkutils.c:
+	* ext/vulkan/vkutils.h:
+	  vkutils: move object-specific context queries to their respective files
+	  vkutils now just contains some utility functions to further simplify retrieving
+	  multiple objects.
+
+2016-02-11 00:50:53 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkdevice.h:
+	  vkdevice: remove unneeded error parameter from get_queue()
+
+2016-02-10 18:06:46 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkupload.c:
+	* ext/vulkan/vkupload.h:
+	  vkupload: implement an uploader abstraction
+
+2016-02-10 19:50:27 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdisplay.c:
+	  vkdisplay: unref the instance
+	  fixes memory leak
+
+2016-02-10 19:34:55 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkinstance.c:
+	* ext/vulkan/vkswapper.c:
+	  vulkan: chain up in finalize
+	  They were missing in some cases
+
+2016-02-10 18:58:32 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vksink.c:
+	  vksink: only unref if the pointers are non-NULL
+
+2016-02-10 18:05:47 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkimagememory.c:
+	  vkimagememory: free the managing struct on _free
+	  fixes a memory leak
+
+2016-02-09 18:26:40 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdevice.c:
+	  vkdevice: perform a waitIdle before destroying the device
+
+2016-02-09 17:46:53 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkbuffermemory.c:
+	* ext/vulkan/vkbuffermemory.h:
+	* ext/vulkan/vkimagememory.c:
+	* ext/vulkan/vkimagememory.h:
+	  Revert "vulkan: remove views from the memory objects."
+	  This reverts commit 1ea817298ee4d5ef9b00f888f8ebe16a888b1150.
+
+2016-02-09 17:31:26 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkbuffermemory.c:
+	* ext/vulkan/vkbuffermemory.h:
+	* ext/vulkan/vkbufferpool.c:
+	* ext/vulkan/vkimagememory.c:
+	* ext/vulkan/vkimagememory.h:
+	  vulkanmemory: remove bind variants
+
+2016-02-09 16:21:00 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkbuffermemory.c:
+	* ext/vulkan/vkbuffermemory.h:
+	* ext/vulkan/vkimagememory.c:
+	* ext/vulkan/vkimagememory.h:
+	  vulkan: remove views from the memory objects.
+	  They are not used and it's not possible to create the view before binding the
+	  VkDeviceMemory object to them.
+
+2016-02-09 11:34:57 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: alpha flags are now supported by LunarG's driver
+
+2016-02-09 00:07:38 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/Makefile.am:
+	* ext/vulkan/vk.h:
+	* ext/vulkan/vk_fwd.h:
+	* ext/vulkan/vkbufferpool.c:
+	* ext/vulkan/vkbufferpool.h:
+	* ext/vulkan/vkupload.c:
+	  vulkan: add a vulkanbuffer bufferpool
+
+2016-02-08 22:49:15 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/Makefile.am:
+	* ext/vulkan/gstvulkan.c:
+	* ext/vulkan/vksink.c:
+	* ext/vulkan/vkswapper.c:
+	* ext/vulkan/vkswapper.h:
+	* ext/vulkan/vkupload.c:
+	* ext/vulkan/vkupload.h:
+	  vulkan: add upload element
+
+2016-02-08 18:28:29 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkutils.c:
+	  vkutils: fix assert inversion
+
+2016-02-08 18:27:16 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkbuffermemory.h:
+	* ext/vulkan/vkimagememory.h:
+	  vulkan: add caps feature names for the buffer and image memories
+
+2016-02-08 14:44:20 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vksink.c:
+	* ext/vulkan/vkutils.c:
+	* ext/vulkan/vkutils.h:
+	  vulkan: add device to handle_context_query
+
+2016-02-08 14:32:10 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vksink.c:
+	* ext/vulkan/vkutils.c:
+	  vulkan: move instance_open into the utility ensure_element_data
+	  So callers don't have to perform it themselves.
+
+2016-02-08 14:25:49 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkinstance.c:
+	* ext/vulkan/vkinstance.h:
+	* ext/vulkan/vksink.c:
+	  vkinstance: add signal for overriding device creation
+
+2016-02-08 12:22:11 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkbuffermemory.c:
+	* ext/vulkan/vkbuffermemory.h:
+	* ext/vulkan/vkimagememory.c:
+	* ext/vulkan/vkimagememory.h:
+	* ext/vulkan/vkmacros.h:
+	* ext/vulkan/vkmemory.c:
+	* ext/vulkan/vkmemory.h:
+	* ext/vulkan/vkswapper.c:
+	  vulkan: separate allocation and binding of memory
+
+2016-02-08 12:14:44 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkbuffermemory.c:
+	  vkbuffermemory: follow the rest of the struct macros
+
+2016-02-05 19:31:49 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: use buffer memory to upload video frames to the GPU
+
+2016-02-05 19:18:40 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/Makefile.am:
+	* ext/vulkan/vk.h:
+	* ext/vulkan/vk_fwd.h:
+	* ext/vulkan/vkbuffermemory.c:
+	* ext/vulkan/vkbuffermemory.h:
+	* ext/vulkan/vkinstance.c:
+	  vulkan: add a buffer memory allocator
+	  Wraps the VkBuffer in a GstMemory subclass.
+
+2016-02-05 19:11:51 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkmemory.h:
+	  vkmemory: align struct members in the header
+
+2016-02-05 19:10:43 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkmacros.h:
+	  vkmacros: use specific _INIT macros to initialize structures
+
+2016-02-05 19:09:41 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkimagememory.c:
+	* ext/vulkan/vkimagememory.h:
+	  vkimagememory: add get_{width,height) functions
+
+2016-01-27 15:20:49 +1100  Matthew Waters <matthew@centricular.com>
+
+	* configure.ac:
+	* ext/vulkan/vkapi.h:
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkinstance.c:
+	* ext/vulkan/vkinstance.h:
+	* ext/vulkan/vkswapper.c:
+	* ext/vulkan/xcb/vkwindow_xcb.c:
+	  vulkan: update to release 1.0.1.1
+
+2016-01-22 14:34:06 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/xcb/vkwindow_xcb.c:
+	  vulkan/xcb: flush after mapping the window
+	  Otherwise the map may not reach the server and not appear.
+
+2016-01-04 16:51:26 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: fix semaphore usage
+
+2015-12-31 16:34:24 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkinstance.c:
+	  vulkan: add some debugging about the supported extensions
+
+2015-12-31 15:58:37 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: get the function pointers from the correct object
+	  GetPhysicalDevice* functions are instance functions rather than device
+	  functions.
+
+2015-12-31 15:38:37 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkinstance.c:
+	* ext/vulkan/vkinstance.h:
+	  vkinstance: add the necessary winsys extension
+
+2015-12-31 15:34:45 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vk_fwd.h:
+	* ext/vulkan/vkdisplay.h:
+	  vkdisplay: forward declare GstVulkanDisplayType
+
+2015-12-31 15:32:15 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkapi.h:
+	  vkapi: remove unneeded headers
+	  vkapi is for accessing the vulkan headers with the correct defines applied so
+	  doesn't need any interal headers.
+
+2015-12-30 15:15:40 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkimagememory.c:
+	  vkimagememory: fix the memory barrier access masks
+	  silences the following warnings from the validation layer
+	  AccessMask xxx must have required access bit xxx and may have optional bits 0
+	  when layout is VK_IMAGE_LAYOUT_TRANSFER_{SRC,DST}_OPTIMAL
+
+2015-12-30 15:14:23 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: only wait on the semaphore once
+	  It's invalid usage and we may deadlock
+
+2015-12-31 01:27:54 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkimagememory.c:
+	  vkimagememory: initialize flags and don't crash on errors
+
+2015-12-30 14:06:01 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkerror.c:
+	* ext/vulkan/vkerror.h:
+	* ext/vulkan/vkinstance.c:
+	* ext/vulkan/vkswapper.c:
+	  vulkan: update error db for 0.10.2
+
+2015-12-29 16:05:17 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vk.h:
+	* ext/vulkan/vkapi.h:
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkdevice.h:
+	* ext/vulkan/vkdisplay.c:
+	* ext/vulkan/vkdisplay.h:
+	* ext/vulkan/vkimagememory.c:
+	* ext/vulkan/vkinstance.c:
+	* ext/vulkan/vkmacros.h:
+	* ext/vulkan/vkmemory.c:
+	* ext/vulkan/vkmemory.h:
+	* ext/vulkan/vkswapper.c:
+	* ext/vulkan/vkswapper.h:
+	* ext/vulkan/vkutils.c:
+	* ext/vulkan/vkwindow.c:
+	* ext/vulkan/vkwindow.h:
+	* ext/vulkan/xcb/vkdisplay_xcb.c:
+	* ext/vulkan/xcb/vkdisplay_xcb.h:
+	* ext/vulkan/xcb/vkwindow_xcb.c:
+	* ext/vulkan/xcb/vkwindow_xcb.h:
+	  vulkan: update to SDK 0.10.2
+
+2015-12-07 17:33:43 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/Makefile.am:
+	* ext/vulkan/vk.h:
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkdisplay.c:
+	* ext/vulkan/vkdisplay.h:
+	* ext/vulkan/vkinstance.c:
+	* ext/vulkan/vkinstance.h:
+	* ext/vulkan/vksink.c:
+	* ext/vulkan/vkutils.c:
+	* ext/vulkan/vkutils.h:
+	* ext/vulkan/vkutils_private.h:
+	  vulkan: implement GstContext helpers
+	  Based off libgstgl's implementation
+
+2015-12-07 17:21:12 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vk_fwd.h:
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkdevice.h:
+	* ext/vulkan/vksink.c:
+	  vkdevice: remove gst_vulkan_device_close()
+	  When sharing the device between multiple elements/application, we need
+	  to use th erefcount to know when to close the device.
+
+2015-12-07 17:00:37 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vk_fwd.h:
+	* ext/vulkan/vkinstance.c:
+	* ext/vulkan/vkinstance.h:
+	* ext/vulkan/vksink.c:
+	  vkinstance: remove gst_vulkan_instance_close
+	  Sharing the instance across multiple elements/application will require
+	  using the refcount instead to know when to close and destroy the instance.
+
+2015-12-07 16:46:28 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: remove outdated comment
+
+2015-12-07 16:39:53 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkswapper.c:
+	  vkswapper: always match lock/unlock of the render lock
+	  If a draw event comes from the winsys before we've rendered a buffer we were
+	  deadlocking.
+
+2015-12-02 17:54:30 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkimagememory.c:
+	* ext/vulkan/vkmemory.c:
+	  vkmemory: debug output the memory properties requested
+
+2015-12-02 17:14:49 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkimagememory.c:
+	  vkimagememory: don't leak GstMapInfo in failure cases on _map()
+
+2015-12-02 17:10:39 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkinstance.c:
+	* ext/vulkan/vkswapper.c:
+	  vulkan: de-C99 struct declarations
+
+2015-12-01 18:37:34 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vk_fwd.h:
+	* ext/vulkan/vkswapper.c:
+	* ext/vulkan/vkswapper.h:
+	* ext/vulkan/vkwindow.c:
+	* ext/vulkan/vkwindow.h:
+	* ext/vulkan/xcb/xcb_event_source.c:
+	  vkwindow/swapper: implement redraw handling
+	  only xcb has been implemented
+
+2015-12-01 16:28:28 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/vulkan/vkdisplay.c:
+	* ext/vulkan/vkdisplay.h:
+	* ext/vulkan/vksink.h:
+	* ext/vulkan/vkswapper.c:
+	* ext/vulkan/vkswapper.h:
+	* ext/vulkan/vkwindow.c:
+	* ext/vulkan/vkwindow.h:
+	* ext/vulkan/xcb/vkdisplay_xcb.c:
+	* ext/vulkan/xcb/vkwindow_xcb.c:
+	* ext/vulkan/xcb/xcb_event_source.c:
+	  vulkan: implement quitting and resizing the window
+	  As before, only xcb has been implemented.
+
+2015-10-24 17:29:05 +1100  Matthew Waters <matthew@centricular.com>
+
+	* configure.ac:
+	* ext/Makefile.am:
+	* ext/vulkan/.gitignore:
+	* ext/vulkan/Makefile.am:
+	* ext/vulkan/gstvulkan.c:
+	* ext/vulkan/vk.h:
+	* ext/vulkan/vk_fwd.h:
+	* ext/vulkan/vkdevice.c:
+	* ext/vulkan/vkdevice.h:
+	* ext/vulkan/vkdisplay.c:
+	* ext/vulkan/vkdisplay.h:
+	* ext/vulkan/vkerror.c:
+	* ext/vulkan/vkerror.h:
+	* ext/vulkan/vkimagememory.c:
+	* ext/vulkan/vkimagememory.h:
+	* ext/vulkan/vkinstance.c:
+	* ext/vulkan/vkinstance.h:
+	* ext/vulkan/vkmemory.c:
+	* ext/vulkan/vkmemory.h:
+	* ext/vulkan/vkqueue.c:
+	* ext/vulkan/vkqueue.h:
+	* ext/vulkan/vksink.c:
+	* ext/vulkan/vksink.h:
+	* ext/vulkan/vkswapper.c:
+	* ext/vulkan/vkswapper.h:
+	* ext/vulkan/vkutils.c:
+	* ext/vulkan/vkutils.h:
+	* ext/vulkan/vkwindow.c:
+	* ext/vulkan/vkwindow.h:
+	* ext/vulkan/xcb/Makefile.am:
+	* ext/vulkan/xcb/vkdisplay_xcb.c:
+	* ext/vulkan/xcb/vkdisplay_xcb.h:
+	* ext/vulkan/xcb/vkwindow_xcb.c:
+	* ext/vulkan/xcb/vkwindow_xcb.h:
+	* ext/vulkan/xcb/xcb_event_source.c:
+	* ext/vulkan/xcb/xcb_event_source.h:
+	  new vulkan based video sink
+	  Currently xcb is the only winsys that is implemented and there's no redraws et
+	  al
+
+2016-02-16 12:38:21 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/files/Makefile.am:
+	* tests/files/cbr_stream.mp3:
+	* tests/files/stream.mp2:
+	* tests/files/vbr_stream.mp3:
+	  tests: remove test files no longer needed
+
+2016-02-16 10:44:33 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* Makefile.am:
+	* configure.ac:
+	* docs/plugins/gst-plugins-bad-plugins-docs.sgml:
+	* docs/plugins/gst-plugins-bad-plugins-sections.txt:
+	* docs/plugins/inspect/plugin-mpg123.xml:
+	* ext/Makefile.am:
+	* ext/mpg123/Makefile.am:
+	* ext/mpg123/gstmpg123audiodec.c:
+	* ext/mpg123/gstmpg123audiodec.h:
+	* gst-plugins-bad.spec.in:
+	* tests/check/Makefile.am:
+	* tests/check/elements/.gitignore:
+	* tests/check/elements/mpg123audiodec.c:
+	  mpg123: move plugin from -bad to -ugly
+	  https://bugzilla.gnome.org/show_bug.cgi?id=719849
+
+2016-02-16 19:59:13 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gtk/gstgtkbasesink.c:
+	* ext/gtk/gstgtkbasesink.h:
+	  gtk(gl)sink: remove the signal handlers on finalize
+	  It's possible that the sink element will be freed before the widget is
+	  destroyed.  When the widget was eventually destroyed, it was attempting to
+	  access member variables of the freed sink struct which resulted in undefined
+	  behaviour.
+	  Fix by disconnecting our signal on finalize.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762098
+
+2016-02-16 08:48:23 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/gstgldebug.c:
+	* gst-libs/gst/gl/gstglviewconvert.c:
+	  gl: Remove leftover g_prints
+	  One was commented out, but we also don't use // comments :)
+
+2016-02-16 14:41:37 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstgldebug.c:
+	  gldebug: use the correct spelling for behavior
+	  The headers use the american spelling of behavior not the UK/AUS version with
+	  the extra U.
+
+2016-02-16 13:58:42 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcontext.c:
+	* gst-libs/gst/gl/gstgldebug.c:
+	  glcontext: don't enable GL debug for messages that won't be logged
+	  This is an optimization to avoid pointless string processing.
+
+2016-02-16 13:01:20 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* ext/gl/gstglvideoflip.c:
+	  glvideoflip: don't ignore method changes when caps aren't set (yet)
+
+2016-02-16 00:33:50 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* Makefile.am:
+	* configure.ac:
+	* gst/rtp/Makefile.am:
+	* gst/rtp/gstrtp.c:
+	* gst/rtp/gstrtph265depay.c:
+	* gst/rtp/gstrtph265depay.h:
+	* gst/rtp/gstrtph265pay.c:
+	* gst/rtp/gstrtph265pay.h:
+	  rtp: move RTP H.265 payloader/depayloader to -good
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761606
+
+2015-10-07 23:49:58 +0200  Stian Selnes <stian@pexip.com>
+
+	* configure.ac:
+	* gst/netsim/Makefile.am:
+	* gst/netsim/gstnetsim.c:
+	* gst/netsim/gstnetsim.h:
+	* tests/check/Makefile.am:
+	* tests/check/elements/netsim.c:
+	  netsim: Add netsim element
+	  Resurrected from the Farstream repository and given an
+	  overhaul to fix races, deadlocks etc.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=756252
+
+2015-11-20 19:38:03 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* ext/dash/gstdashdemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  dashdemux: gst_dash_demux_get_live_seek_range returns positive values
+	  https://bugzilla.gnome.org/show_bug.cgi?id=752374
+
+2016-02-10 10:31:19 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/gl/gstglsyncmeta.c:
+	  gl: syncmeta: define GL_TIMEOUT_IGNORED in more portable way
+
+2016-02-10 16:37:22 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* gst-libs/gst/gl/gstglshader.c:
+	  gstglshader: cache uniform locations
+	  Avoid redundant calls to glGetUniformLocation. The results can be cached once
+	  the shader has been linked.
+
+2016-02-10 15:40:02 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/videotexturecache.m:
+	  applemedia: videotesturecache: let CVOpenGLESTextureCache flush every 1s
+	  Leave kCVOpenGLESTextureCacheMaximumTextureAgeKey to the default (1s). We used
+	  to set it to 0 and flush manually, but apparently (looking at the GLES profiler)
+	  0 means "disable the cache entirely".
+
+2016-02-10 13:08:43 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* gst-libs/gst/gl/gstglcontext.c:
+	  gstglcontext: micro optimization to gst_gl_context_thread_add
+	  Invoke the callback right away when called on the context thread. Removes
+	  overhead when nesting libgstgl calls (for example when working with the sync
+	  meta).
+
+2016-01-06 21:39:00 +0000  Julien MOUTTE <julien@moutte.net>
+
+	* ext/rtmp/gstrtmpsink.c:
+	* ext/rtmp/gstrtmpsink.h:
+	  rtpmsink: Implement setcaps that uses streamheader
+	  This allow adding rtmpsink after the flv streaming have started. Otherwise,
+	  FLV streamheader is never sent to the server, which cannot figure-out
+	  what is this stream about. It should also help in certain renegotiation
+	  figures. The sink will no longer work without an streamheader in caps,
+	  though there is no known implementation of flvdemux that does not
+	  support this.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760242
+
+2016-02-09 21:35:19 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/smoothstreaming/gstmssmanifest.c:
+	  mssdemux: remove unnecessary check
+	  stream->current_fragment has the value of g_list_previous (iter) which has
+	  just been checked. No need to check it again.
+	  Just to be safe, use a g_assert() to check fragment before dereferencing.
+	  CID #1352041
+
+2016-02-09 17:24:50 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: plug mpd client leak
+	  On parsing error, free the mpd client object
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760120
+
+2016-01-04 12:12:45 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: fix memory leak in gst_dash_demux_update_manifest_data
+	  new_client local variable was not freed in case of errors.
+	  Also, the buffer is not unmapped.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760120
+
+2015-11-10 22:01:38 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstmpdparser.c:
+	* ext/dash/gstmpdparser.h:
+	* tests/check/elements/dash_mpd.c:
+	  mpdparser: renamed gst_mpd_client_get_next_segment_availability_end_time to gst_mpd_client_get_next_segment_availability_start_time
+	  The function actually returns the segment availability start time (as defined by the standard).
+	  That is at the end of the segment, but it is called availability start time.
+	  Availability end time is something else (the time when the segment is no longer
+	  available on the server). The function name was misleading.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757655
+
+2015-11-10 22:00:58 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* ext/dash/gstmpdparser.c:
+	  mpdparser: corrected getting segment availability
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757655
+
+2015-11-19 15:30:34 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/dash_mpd.c:
+	  mpdparser: tests: added unit test for getting segment availability when segment timeline is used
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757655
+
+2016-01-07 12:50:06 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/adaptive_demux_engine.c:
+	  adaptive_demux: tests: improved validation of pads
+	  When removing a pad, the on_demuxPadRemoved function must find a stream
+	  for that pad.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760328
+
+2016-01-07 12:48:12 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/adaptive_demux_engine.c:
+	  adaptive_demux: tests: fix pad used for AppSink event
+	  on_demuxNewPad registered the on_appsink_event callback on a wrong pad.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760328
+
+2016-01-08 16:25:12 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/adaptive_demux_engine.c:
+	* tests/check/elements/adaptive_demux_engine.h:
+	  adaptivedemux: tests: remove unused demux_sent_eos callback
+	  The demux_sent_eos callback is unused in tests. It was also registered on
+	  a wrong pad, so it actually triggered when demux received eos from a
+	  fragment download.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760328
+
+2016-01-08 18:17:21 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/dash_demux.c:
+	  adaptivedemux: tests: remove unneeded youtube xmlns from manifests
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760328
+
+2016-02-09 14:07:54 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/vtdec.c:
+	  applemedia: vtdec: implement GstElement::set_context
+
+2016-02-09 14:04:09 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/vtdec.c:
+	  applemedia: vtdec: update copyright
+
+2016-02-09 13:42:48 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/avfvideosrc.m:
+	  applemedia: avfvideosrc: implement GstElement::set_context
+	  Needed to properly handle gst.gl.app_context(s).
+
+2016-02-09 13:39:18 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/avfvideosrc.m:
+	  applemedia: avfvideosrc: add myself to the copyright holders
+
+2016-02-09 13:56:32 +1100  Matthew Waters <matthew@centricular.com>
+
+	* win32/common/libgstgl.def:
+	  gl: update win32 .def file
+
+2016-02-09 13:08:21 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglsyncmeta.c:
+	  glsyncmeta: add compatibility definition for GL_TIMEOUT_IGNORED
+
+2016-02-09 12:14:04 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gtk/gtkgstglwidget.c:
+	* gst-libs/gst/gl/gstglsyncmeta.c:
+	* gst-libs/gst/gl/gstglsyncmeta.h:
+	* sys/androidmedia/gstamcvideodec.c:
+	  glsyncmeta: separate out gpu/cpu waits.
+	  CPU waits are more expensive and are only required if the CPU is ever going to
+	  access the data. GPU waits perform inter-context synchronisation and are cheaper
+	  as they don't require CPU intervention.
+
+2016-02-08 23:17:34 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: remove overwritten value
+	  ret is overwitten before used with the return of the subclass seek.
+	  CID #1352044
+
+2016-02-08 15:00:35 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/resindvd/resindvdbin.c:
+	  resindvd: remove commented out include
+	  Commit 211828979b8c10abf3c74d964bc698dbda4d497d removed rsnaudiomunge,
+	  no need for this commented out include for a file that doesn't exist
+	  anymore.
+
+2016-02-08 14:26:46 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/resindvd/resindvdsrc.c:
+	* ext/resindvd/resindvdsrc.h:
+	  Revert "resindvd: get rid of _stdint.h include"
+	  This reverts commit 0eff6e1991cb24cb65f07c481742782acaa8ec62.
+	  Breaks the build when linking with dvdnav.h
+
+2016-02-08 13:43:22 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/x265/gstx265enc.h:
+	  x265enc: get rid of _stdint.h include
+	  It was never needed since it doesn't use any standard integer fixed width
+	  types. Only the Glib types.
+
+2016-02-08 13:32:46 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/resindvd/resindvdsrc.c:
+	* ext/resindvd/resindvdsrc.h:
+	  resindvd: get rid of _stdint.h include
+
+2016-02-08 12:44:53 +0100  Piotr Drąg <piotrdrag@gmail.com>
+
+	* po/POTFILES.skip:
+	  po: update POTFILES
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761704
+
+2016-02-08 12:23:12 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/effects/gstgleffectidentity.c:
+	  gleffects: identity: add the shader to the hash table
+	  So that we don't recreate it every frame and leak memory.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761578
+
+2016-02-05 20:02:22 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/Makefile.am:
+	  tests: extend the AM_TESTS_ENVIRONMENT from check.mak
+	  To get the CK_DEFAULT_TIMEOUT defined for all tests
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761472
+
+2016-02-05 18:06:32 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* README:
+	* common:
+	  Automatic update of common submodule
+	  From e97c9bb to b64f03f
+
+2016-02-05 15:34:51 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst/rtp/gstrtph265depay.c:
+	* gst/rtp/gstrtph265depay.h:
+	  gstrtph265depay: keep consistency with rtph264depay
+	  Use gst_rtp_drop_meta() and the same function prototype for
+	  gst_rtp_copy_meta() to keep consistency with the RTP elements in
+	  gst-plugins-good
+
+2016-02-05 21:33:38 +0530  Arun Raghavan <arun@centricular.com>
+
+	* sys/tinyalsa/tinyalsasink.c:
+	  tinyalsasink: Use glib CLAMP() instead of our own macro
+
+2016-02-05 13:56:34 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst/rtp/gstrtph265depay.c:
+	  rtph265depay: fix termination of access unit
+	  Only consider the access unit complete when the next-occurring VCL NAL unit
+	  has the first bit after its NAL unit header equal to 1.
+
+2016-02-02 13:50:25 +0000  David Waring <david.waring@rd.bbc.co.uk>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: Update position in stream->segment for new stream segment message.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761458
+
+2016-02-05 15:43:22 +0530  Arun Raghavan <arun@centricular.com>
+
+	* sys/tinyalsa/tinyalsasink.c:
+	  tinyalsasink: Limit period size and count to what the h/w permits
+
+2016-02-05 10:43:49 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstgldebug.c:
+	* gst-libs/gst/gl/gstglfeature.h:
+	* gst-libs/gst/gl/gstglsl_private.h:
+	* gst-libs/gst/gl/wayland/wayland_event_source.h:
+	* win32/common/libgstgl.def:
+	  gl: add .def file for msvc builds
+	  Also internalize some API from being exported.
+
+2016-02-02 17:02:41 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/elements/.gitignore:
+	* tests/check/elements/mssdemux.c:
+	  tests: mssdemux: add unit tests
+	  Adds unit tests similar to the ones that we have for DASH and HLS.
+	  Tests:
+	  * manifest parsing finishes successfully
+	  * some queries (duration, seekable, latency)
+	  * seeking with various values and flags
+
+2016-02-02 16:54:10 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/smoothstreaming/gstmssdemux.c:
+	* ext/smoothstreaming/gstmssmanifest.c:
+	* ext/smoothstreaming/gstmssmanifest.h:
+	  mssdemux: implement snap seeking
+	  Implement snap seek flags handling in stream_seek to allow the
+	  parent class to handle it for us
+	  https://bugzilla.gnome.org/show_bug.cgi?id=759158
+
+2016-02-02 16:51:22 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/smoothstreaming/gstmssdemux.c:
+	  mssdemux: use correct seek position on reverse seeks
+	  Otherwise it was always using the 'start' value, leading to wrong
+	  behavior
+
+2016-02-02 11:30:31 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/smoothstreaming/gstmssdemux.c:
+	  mssdemux: only update download position if the seek requests to
+	  Some seeks are only updating the stop position, there is no need
+	  to change the current downloading position.
+
+2016-02-02 09:52:17 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/smoothstreaming/gstmssmanifest.c:
+	  mssdemux: do not assert on fragment reloads for non-live
+	  It can be used as a resource to verify if the server has updated
+	  something in the Manifest when downloads are failing
+
+2016-01-27 10:48:53 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/elements/dash_demux.c:
+	  tests: dashdemux: add tests for snap flags seeking
+	  Similar to HLS but DASH has the extra issue that it can have
+	  multiple streams so snapping can be tricky as streams usually
+	  won't be aligned.
+	  For now, those tests handle the case of only having a single
+	  stream.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=759158
+
+2016-02-01 10:49:23 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstmpdparser.c:
+	  dashdemux: implement snap seek handling
+	  Handle snap seeking at the stream_seek method and let superclass
+	  do the rest to support snap seeking
+	  https://bugzilla.gnome.org/show_bug.cgi?id=759158
+
+2016-01-27 13:31:10 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/dash/gstmpdparser.c:
+	* ext/dash/gstmpdparser.h:
+	* ext/smoothstreaming/gstmssdemux.c:
+	* ext/smoothstreaming/gstmssmanifest.c:
+	* ext/smoothstreaming/gstmssmanifest.h:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+	  adaptivedemux: handle snap seeks
+	  Adaptive demuxers need to start downloading from specific positions
+	  (fragments) for every stream, this means that all streams can snap-seek
+	  to a different position when requested. Snap seeking in this case will
+	  be done in 2 steps:
+	  1) do the snap seeking on the pad that received the seek event and
+	  get the final position
+	  2) use this position to do a regular seek on the other streams to
+	  make sure they all start from the same position
+	  More arguments were added to the stream_seek function, allowing better control
+	  of how seeking is done. Knowing the flags and the playback direction allows
+	  subclasses to handle snap-seeking.
+	  And also adds a new return parameter to inform of the final
+	  selected seeking position that is used to align the other streams.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=759158
+
+2016-01-26 23:43:24 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+	  adaptivedemux: add utility function to get stream from pad
+	  Simplifies the code a bit and avoid repeating this
+	  common operation
+
+2016-02-04 12:50:43 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst/videoparsers/gsth264parse.c:
+	  h264parse: remove unused mview_mode value
+	  Since commit b77f8e172a3f0be6be5cb4a72e654253404e694f the new value
+	  assigned to mview_mode hasn't been used. That commit changed the following
+	  "if" check to an "else if", which means the original value of mview_mode
+	  is used.
+
+2016-02-04 12:17:31 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst-libs/gst/gl/gstglquery.c:
+	  glquery: remove unnecessary pointer check
+	  All uses of query->context in gstglquery.c assume it exists. We can assume
+	  this as well before unrefing it. Furthermore, gst_object_unref() will just
+	  silently return if it ever were to not exist.
+
+2016-02-04 18:15:56 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst/videoparsers/gsth265parse.c:
+	  h265parse: avoid sending unnecessary downstream caps queries/events
+	  h265 versions of the following commits:
+	  f352691a04896d0de3381fe8ee85ada948bd6337
+	  try the current caps before querying downstream
+	  72bc7d7f736a10117fedb8e1d4013a4946cfefbc
+	  increase caps equality check for no codec_data
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761014
+
+2016-02-04 16:36:28 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst/videoparsers/gsth264parse.c:
+	  h264parse: increase caps equality check for no codec_data
+	  When converting from avc to byte-stream, there will not be any codec_data
+	  in the src caps.  Remove it before the equality check to avoid sending caps
+	  events downstream on every SPS/PPS change.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761014
+
+2016-02-04 15:34:04 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst/videoparsers/gsth264parse.c:
+	  h264parse: try the current caps before querying downstream
+	  If we have a stream that contains an unchanging SPS/PPS for every video frame,
+	  we don't need to to constantly query downstream for it's supported caps if the
+	  current caps are compatible with the negotiated caps.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761014
+
+2016-02-04 17:31:03 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglbasefilter.c:
+	  glbasefilter: enable qos by default
+	  Improves the responsiveness of the pipeline when resources are close/above the
+	  limitations of the hardware.
+	  Any subclass that wishes not to enable qos can do so themselves.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761519
+
+2016-02-04 15:11:15 +1100  Matthew Waters <matthew@centricular.com>
+
+	* sys/androidmedia/gstamcvideodec.c:
+	  amcvideodec: pass the correct time value to wait_for_sync
+	  When we are not waiting, we need to pass -1 to signal that we just want to check
+	  that the frame was/n't rendered.  Avoids waiting for frames that will never be
+	  rendered.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761014
+
+2016-02-04 15:07:44 +1100  Matthew Waters <matthew@centricular.com>
+
+	* sys/androidmedia/gstamcvideodec.c:
+	  amcvideodec: advance the ready counter ourselves when render=FALSE
+	  When not rendering the video frame, e.g. when freeing an unreleased sync frame,
+	  we will not receive a frame listener callback.
+	  Reduces the amount of 'on_frame_available miss detected' messages when dropping
+	  frames.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761014
+
+2016-02-04 14:25:12 +1100  Jan Schmidt <jan@centricular.com>
+
+	* sys/decklink/gstdecklinkaudiosrc.cpp:
+	  decklinkaudiosrc: Fix discont tracking
+	  Don't reset the marker that's tracking disconts until
+	  either the discont disappears or we resync.
+
+2016-02-03 21:22:28 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* sys/Makefile.am:
+	* sys/cdrom/Makefile.am:
+	* sys/cdrom/gstcdplayer.c:
+	* sys/cdrom/gstcdplayer.h:
+	* sys/cdrom/gstcdplayer_ioctl.c:
+	* sys/cdrom/gstcdplayer_ioctl.h:
+	* sys/cdrom/gstcdplayer_ioctl_bsd.h:
+	* sys/cdrom/gstcdplayer_ioctl_irix.h:
+	* sys/cdrom/gstcdplayer_ioctl_solaris.h:
+	  Remove ancient and dead cdrom control plugin
+	  This was never even ported to 0.10, and I don't think
+	  it's particularly useful, since it's just a control
+	  interface really. Let's remove it.
+
+2016-02-03 21:16:18 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/interfaces/photography.c:
+	* gst-libs/gst/interfaces/photography.h:
+	* gst/coloreffects/gstcoloreffects.h:
+	* gst/debugutils/fpsdisplaysink.c:
+	  docs: remove some leftover 'Since 0.10.x' markers
+
+2016-02-03 21:13:58 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/debugutils/.gitignore:
+	* gst/debugutils/Makefile.am:
+	* gst/debugutils/debugutils-marshal.list:
+	* gst/debugutils/fpsdisplaysink.c:
+	  debugutils: use generic marshaller
+
+2016-02-03 16:28:42 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/opus/gstopusdec.c:
+	  opus: fix FEC
+	  FEC may only be used when PLC is enabled on the audio decoder,
+	  as it relies on empty buffers to generate audio from the next
+	  buffer. Hooking to the gap events doesn't work as the audio
+	  decoder does not like more buffers output than it sends.
+	  The length of data to generate using FEC from the next packet
+	  is determined by rounding the gap duration to nearest. This
+	  ensures that duration imprecision does not cause quantization
+	  to 2.5 milliseconds less than available. Doing so causes the
+	  Opus API to fail decoding. Such duration imprecision is common
+	  in live cases.
+	  The buffer to consider when determining the length of audio
+	  to be decoded is the previous buffer when using FEC, and the
+	  new buffer otherwise. In the FEC case, this means we determine
+	  the amount of audio from the previous buffer, whether it was
+	  missing or not (and get the data either from this buffer, or
+	  the current one if the previous one was missing).
+
+2016-02-03 10:59:23 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstgltransformation.c:
+	  gltransformation: reconfigure the src when changing to/from passthrough
+	  Otherwise it's very possible that any GL resources have not been created yet.
+
+2016-02-03 10:52:08 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglvideoflip.c:
+	* ext/gl/gstglvideoflip.h:
+	  glvideoflip: correctly update the output caps on method changes
+	  When changing methods we may need different output caps.
+
+2016-02-02 11:20:17 -0800  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/tinyalsa/tinyalsasink.c:
+	  tinyalsasink: fix tinalsa typo
+
+2016-02-02 11:06:52 -0800  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* sys/tinyalsa/tinyalsasink.c:
+	  tinyalsasink: fix sample launch line
+
+2016-02-02 14:46:30 +0000  David Waring <david.waring@rd.bbc.co.uk>
+
+	* gst-libs/gst/player/Makefile.am:
+	  libs: player: use configured GST_PKG_CONFIG_PATH when invoking the introspection scanner
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761460
+
+2016-02-02 15:20:48 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* ext/opus/gstopusdec.c:
+	  opusdec: fix wrong buffer being checked for missing data
+	  This caused a decoding error if the resulting (wrong) buffer size
+	  was passed to the Opus decoding API.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=758158
+
+2016-02-02 16:26:09 +0530  Arun Raghavan <arun@centricular.com>
+
+	* sys/tinyalsa/tinyalsasink.c:
+	  tinyalsasink: Use int type if we support a single rate/channel count
+	  Avoids using an int range if the field we're setting is not actually a
+	  range.
+
+2016-02-02 18:36:34 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/eagl/gstglcontext_eagl.m:
+	  Revert "gl/eagl: try getting a gles3 context"
+	  This reverts commit 96b9666d596be115fd4b446ef846508b7fd05c24.
+	  This reverts commit d11385d167d8843604ea23a05e2dea40b8bbac35.
+	  This breaks the texture sharing with the applemedia elements as
+	  CVOpenGLESTextureCache seems to have an arbitrary restriction on GLES2 only.
+
+2016-02-02 16:21:14 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	  glcolorconvert: don't skip subset structures
+	  We may need them to transform into a different set of formats.
+	  Fixes YUV->YUV with two glcolorconverts, e.g:
+	  format=I420 ! glcolorconvert ! glcolorconvert ! format=NV12
+
+2016-02-02 16:19:54 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglbasefilter.c:
+	  glbasefilter: always call gl_start when not called already
+	  Fixes elements transitioning out of passthrough mode using GL resources that
+	  hadn'e been allocated yet.
+
+2016-02-02 15:14:25 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	  glcolorconvert: fix RGB,rectangle->planar YUV conversion
+	  Converting to GRAY is no fun.  Another case of normalized vs unnormalized
+	  texture coordinates.
+
+2016-02-02 13:51:18 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	  glcolorconvert: fix YUY2/UYVY,rectangle->RGB conversion
+	  1.0 / width does not offset by one pixel in rectangular textures (which use
+	  unnormalized coordinates).
+	  Provide the actual pixel offset as a uniform to the shader.
+
+2016-01-27 16:42:09 +0530  Arun Raghavan <arun@centricular.com>
+
+	* configure.ac:
+	* sys/Makefile.am:
+	* sys/tinyalsa/Makefile.am:
+	* sys/tinyalsa/tinyalsa.c:
+	* sys/tinyalsa/tinyalsasink.c:
+	* sys/tinyalsa/tinyalsasink.h:
+	  tinyalsa: Add a new sink plugin using tinyalsa
+	  This uses the tinyalsa library to playback to an ALSA device. Future
+	  work can include using the mmap interface.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761230
+
+2016-02-02 12:50:26 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	  glcolorconvert: perform better negotiation
+	  1. Correctly describe what we can caps we can transform to/from.
+	  i.e. no YUV->YUV or GRAY->YUV or YUV->GRAY (except for passthrough).
+	  2. Prefer similar formats and ignore incompatible formats on fixation.
+
+2016-01-26 23:15:10 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/elements/dash_demux.c:
+	  tests: dashdemux: add test for updating stop position
+	  Test that a seek that only updates the stop position works
+	  as expected
+
+2016-02-01 09:48:33 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: only update current reading position when needed
+	  If the seek doesn't set the start/stop position, no need to
+	  reposition the download index.
+
+2016-01-29 20:34:42 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: respect seeking parameter
+	  Instead of using the segment values, use the parameter
+	  requested in the seeking argument
+
+2016-02-01 14:25:42 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/elements/dash_mpd.c:
+	  tests: dash: fix dash tests after index fix
+	  8e788f284508612982e8e38336eed676c2eec35a broke one of the
+	  dash mpd tests. This updates and fixes it.
+
+2016-02-01 12:23:32 +0000  Julien Isorce <j.isorce@samsung.com>
+
+	* gst-libs/gst/gl/gstglwindow.c:
+	  gstglwindow: initialize navigation_loop to NULL
+	  Useful when gst_gl_window.c::gst_gl_window_new is not used.
+	  This is the case when using a custom GstGLWindow.
+	  (ex: GstGLWindowGPUProcess from Chromium)
+
+2016-02-01 09:26:37 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/gl/eagl/gstglcontext_eagl.m:
+	  gl: eagl: fix build
+	  gstglcontext_eagl.m:238:45: error: too few arguments to function call,
+	  expected at least 4, have 3
+
+2016-02-01 15:13:03 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* ext/gl/gstgldownloadelement.c:
+	  gldownload: allow video/x-raw as input
+	  ...and just passthrough. This is useful for pipelines where downstream must be
+	  non-GL but upstream can optionally be GL.
+
+2016-02-01 12:57:32 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/eagl/gstglcontext_eagl.m:
+	  gl/eagl: try getting a gles3 context
+	  Fallback to a gles2 context if that fails
+
+2016-01-21 16:10:48 +0800  Wang Xin-yu (王昕宇) <comicfans44@gmail.com>
+
+	* ext/gl/gstglvideomixer.c:
+	  glvideomixer: fix checker vbo leak
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760925
+
+2016-01-24 15:47:12 +0100  Holger Kaelberer <holger.k@elberer.de>
+
+	* tests/examples/qt/qml/main.qml:
+	  tests: fix warning in qml example
+	  https://bugzilla.gnome.org/show_bug.cgi?id=756082
+
+2016-01-24 15:42:32 +0100  Holger Kaelberer <holger.k@elberer.de>
+
+	* configure.ac:
+	  qt: Fix build for android
+	  https://bugzilla.gnome.org/show_bug.cgi?id=756082
+
+2016-02-01 01:01:10 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/snapshot/Makefile.am:
+	* ext/snapshot/gstsnapshot.c:
+	* ext/snapshot/gstsnapshot.h:
+	  Remove dead snapshot plugin
+	  Was never ported and doesn't look like
+	  we want it or need it in this form, can
+	  do the same with the libgstvideo sample
+	  conversion utility API now, but better
+	  and in a more flexible way.
+
+2016-02-01 00:49:48 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* configure.ac:
+	* ext/rsvg/gstrsvgdec.h:
+	* ext/rsvg/gstrsvgoverlay.h:
+	  rsvg: bump requirement to 2.36.2
+	  Which allows us to simplify the configure check and
+	  some special-casing in the code, and is plenty old
+	  in any case.
+
+2016-02-01 00:29:37 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/Makefile.am:
+	* ext/libfame/Makefile.am:
+	* ext/libfame/README:
+	* ext/libfame/gstlibfame.c:
+	* ext/libfame/gstlibfame.h:
+	* m4/Makefile.am:
+	* m4/libfame.m4:
+	  Remove dead libfame plugin
+	  Was never even ported to 0.10, and the lib
+	  has been unmaintained for ever and doesn't
+	  even seem to be packaged any more.
+
+2016-01-31 19:09:57 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/Makefile.am:
+	* ext/audiofile/Makefile.am:
+	* ext/audiofile/README:
+	* ext/audiofile/gstaf.c:
+	* ext/audiofile/gstafparse.c:
+	* ext/audiofile/gstafparse.h:
+	* ext/audiofile/gstafsink.c:
+	* ext/audiofile/gstafsink.h:
+	* ext/audiofile/gstafsrc.c:
+	* ext/audiofile/gstafsrc.h:
+	* po/POTFILES.skip:
+	  Remove dead audiofile plugin
+	  This was never even ported to 0.10.
+
+2016-01-31 19:04:20 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* .gitignore:
+	* configure.ac:
+	* docs/plugins/gst-plugins-bad-plugins.args:
+	* docs/plugins/gst-plugins-bad-plugins.interfaces:
+	* ext/Makefile.am:
+	* ext/gsettings/Makefile.am:
+	* ext/gsettings/gstgsettings.h:
+	* ext/gsettings/gstgsettingsaudiosink.c:
+	* ext/gsettings/gstgsettingsaudiosink.h:
+	* ext/gsettings/gstgsettingsaudiosrc.c:
+	* ext/gsettings/gstgsettingsaudiosrc.h:
+	* ext/gsettings/gstgsettingsvideosink.c:
+	* ext/gsettings/gstgsettingsvideosink.h:
+	* ext/gsettings/gstgsettingsvideosrc.c:
+	* ext/gsettings/gstgsettingsvideosrc.h:
+	* ext/gsettings/gstswitchsink.c:
+	* ext/gsettings/gstswitchsink.h:
+	* ext/gsettings/gstswitchsrc.c:
+	* ext/gsettings/gstswitchsrc.h:
+	* ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:
+	* ext/gsettings/plugin.c:
+	* m4/gsettings.m4:
+	* po/POTFILES.in:
+	* tests/check/Makefile.am:
+	  Remove gsettings plugin which was never ported
+	  Don't think we need this any longer or want to
+	  support it, and clearly no one has been missing
+	  it all these years either, so let's just get rid
+	  of it.
+
+2016-01-31 16:02:33 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/smoothstreaming/Makefile.am:
+	* ext/smoothstreaming/gstmssdemux.h:
+	  smoothstreaming: remove unused dependency on uridownloader
+
+2016-01-31 14:42:21 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* configure.ac:
+	* ext/faad/Makefile.am:
+	* ext/faad/gstfaad.c:
+	* ext/faad/gstfaad.h:
+	  faad: simplify configure check and require faad >= 2.7
+	  Just check whether LATM is defined which is only available
+	  in 2.7 and later. Allows us to simplify the configure check
+	  a little and we can get rid of some hackish workarounds for
+	  problems with earlier version headers.
+
+2016-01-30 17:31:41 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* sys/dvb/gstdvbsrc.c:
+	  dvbsrc: drop unnecessary use of _stdint.h
+
+2016-01-29 23:39:26 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxftypes.c:
+	  mxftypes: Generate UUIDs according to RFC4122 version 4 (aka random)
+	  Instead of fully random UUIDs, these should follow a scheme.
+
+2016-01-29 21:09:44 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmetadata.c:
+	  mxfmetadata: Properly write video line map data as an array of 32 bit integers
+
+2016-01-29 20:58:27 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmetadata.c:
+	  mxfmetadata: DMSchemes in the Preface is a required field
+	  Even if it has 0 entries.
+
+2016-01-29 18:41:52 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxful.c:
+	  mxful: Fix Content Storage UL
+
+2016-01-29 18:28:03 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmetadata.c:
+	  mxfmetadata: Best effort values must be written and if unset must contain the distinguished value
+	  It's invalid to not write them at all.
+
+2016-01-29 17:36:11 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxful.c:
+	  mxful: Add missing OperationalPattern UL, which fixes an off-by-one with the others
+
+2016-01-29 17:07:08 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmux.c:
+	  mxfmux: Our body partition is always complete and closed
+	  We have no metadata in it.
+
+2016-01-29 17:02:01 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmux.c:
+	  mxfmux: Use IndexSID of 2 instead of 1
+	  Some tools complain if essence and index have the same SID.
+
+2016-01-29 16:38:23 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmux.c:
+	  mxfmux: Rewrite body partition pack on EOS and mark it as complete/closed
+
+2016-01-29 23:28:59 +1100  Matthew Waters <matthew@centricular.com>
+
+	* sys/androidmedia/gstamcvideodec.c:
+	  amcvideodec: guard against not finding a valid frame in loop
+	  Fixes sporadic crashes on finishing decoding a video.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761014
+
+2016-01-29 15:24:36 +1100  Matthew Waters <matthew@centricular.com>
+
+	* sys/androidmedia/gstamcvideodec.c:
+	* sys/androidmedia/gstamcvideodec.h:
+	* sys/androidmedia/org/freedesktop/gstreamer/androidmedia/GstAmcOnFrameAvailableListener.java:
+	  amcvideodec: set our data pointer in java to NULL on close
+	  The frame available callback can be called after deconfiguring the amc codec.
+	  Guard against this by setting the back pointer to NULL on close() and ignoring
+	  any NULL data pointer.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761014
+
+2016-01-29 15:07:59 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/Makefile.am:
+	* sys/applemedia/avfvideosrc.m:
+	* sys/applemedia/glcontexthelper.c:
+	* sys/applemedia/glcontexthelper.h:
+	* sys/applemedia/vtdec.c:
+	* sys/applemedia/vtdec.h:
+	  applemedia: refactor GL context code
+	  Rework the GL context code. Now both avfvideosrc and vtdec can create an
+	  internal GL context for pushing textures. Both elements will still try to
+	  use/switch to a local context where available (including after RECONFIGURE
+	  events).
+
+2016-01-29 10:35:15 +0800  Wang Xin-yu (王昕宇) <comicfans44@gmail.com>
+
+	* gst-libs/gst/gl/glprototypes/base.h:
+	  glprototypes: fix parameter type of glGenBuffers
+	  The number of buffers should be GLsizei instead of GLuint.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761272
+
+2015-12-08 14:09:58 +0800  Haihua Hu <b55597@freescale.com>
+
+	* ext/gl/effects/gstgleffectssources.c:
+	  gleffects: fix gleffects fisheye shader compile error
+	  On some embedded systems, sqrt() is not supported in the shader,
+	  use the actual value of sqrt(2) instead.
+	  Signed-off-by: Haihua Hu <b55597@freescale.com>
+	  Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=761271
+
+2016-01-29 14:03:26 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglvideomixer.c:
+	  glvideomixer: par may not exist in the caps
+	  Fixes a critical in the gst-validate tests:
+	  gst_structure_fixate_field_nearest_fraction: assertion 'gst_structure_has_field
+	  (structure, field_name)
+
+2016-01-29 12:45:57 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/egl/gstglcontext_egl.c:
+	* gst-libs/gst/gl/gstglcontext.c:
+	  glcontext: back out unintended lost_context changes
+
+2016-01-28 16:39:07 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/egl/gstglcontext_egl.c:
+	* gst-libs/gst/gl/egl/gstglcontext_egl.h:
+	* gst-libs/gst/gl/gstglcontext.c:
+	* gst-libs/gst/gl/utils/opengl_versions.h:
+	  egl: implement selecting opengl3 contexts
+
+2016-01-28 14:31:33 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/egl/gsteglimagememory.c:
+	* gst-libs/gst/gl/egl/gstglcontext_egl.c:
+	* gst-libs/gst/gl/egl/gstglcontext_egl.h:
+	  gl/egl: pass the error value to get_error_string()
+
+2016-01-28 18:20:44 +0100  Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+	* gst/rawparse/gstvideoparse.c:
+	  videoparse: initialize update_size to FALSE when updating info
+	  Otherwise, behavior will be undefined when no strides/offsets are set
+	  and it will likely go wrong.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760270
+
+2016-01-28 11:56:36 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/rawparse/gstvideoparse.c:
+	  videoparse: Fix framesize calculation
+	  When the framesize is not specified, we try and calculate a size from
+	  the strides and offset information. This was done with the sum of
+	  offsets + the size of the last frame. That is just wrong method. We also
+	  need to account for video meta that may be flipping two planes. An
+	  example is if you convert I420 to YV12 by flipping the two last offsets.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760270
+
+2016-01-28 19:36:47 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gdp/gstgdpdepay.c:
+	* gst/gdp/gstgdpdepay.h:
+	  gdpdepay: Add ts-offset property to adjust buffer timestamps
+
+2016-01-29 04:50:42 +1100  Jan Schmidt <jan@centricular.com>
+
+	* pkgconfig/gstreamer-bad-audio-uninstalled.pc.in:
+	* pkgconfig/gstreamer-bad-audio.pc.in:
+	* pkgconfig/gstreamer-bad-base-uninstalled.pc.in:
+	* pkgconfig/gstreamer-bad-base.pc.in:
+	* pkgconfig/gstreamer-bad-video-uninstalled.pc.in:
+	* pkgconfig/gstreamer-bad-video.pc.in:
+	* pkgconfig/gstreamer-gl-uninstalled.pc.in:
+	* pkgconfig/gstreamer-gl.pc.in:
+	  pkg-config: Don't generate and install pkg-config with relative paths
+	  Don't put relative paths in pkg-config files, including uninstalled
+	  ones. For those, use @abs_topbuilddir@ and @abs_topsrcdir@ as we
+	  do elsewhere.
+	  Remove libraries= directives, which doesn't seem to be a pkg-config
+	  variable that actually exists, but has been in all our pkg-config
+	  files for as long as they've existed.
+
+2016-01-28 16:49:53 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmpeg.c:
+	  mxfmpeg: Write the correct essence container UL for all codecs
+
+2016-01-28 16:41:31 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmpeg.c:
+	  mxfmpeg: Write version number into the picture essence coding UL
+
+2016-01-28 16:32:34 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmux.c:
+	  mxfmux: Write a timecode track into the source package too
+
+2016-01-11 15:47:24 +0100  Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+	* gst/rawparse/gstvideoparse.c:
+	* gst/rawparse/gstvideoparse.h:
+	  videoparse: use decide_allocation to check if downstream supports videometa
+	  If yes, we add them to each output buffers and we avoid frame copy.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760270
+
+2016-01-11 15:46:16 +0100  Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+	* gst/rawparse/gstrawparse.c:
+	* gst/rawparse/gstrawparse.h:
+	  rawparse: add 'decide_allocation' vfunc to let subclass parse an allocation query
+	  And so send an allocation query. This could be used to check whether
+	  downstream element supports some metas or not.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760270
+
+2016-01-08 17:17:01 +0100  Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+	* gst/rawparse/gstrawparse.c:
+	  rawparse: use size of buffer we got from adapter
+	  Otherwise position in stream could be wrong if subclass 'pre_push_frame'
+	  method changes the buffer size.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760270
+
+2016-01-07 14:27:27 +0100  Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+	* gst/rawparse/gstvideoparse.c:
+	* gst/rawparse/gstvideoparse.h:
+	  videoparse: add properties to set framesize, strides and planes offsets
+	  To make parser work with image having non-standard strides, plane
+	  offsets or with padding between images.
+	  For now, since element doesn't check for videometa, we can't directly
+	  push buffers when these properties are set so it convert the frame
+	  in the pre_push_buffer method to remove any custom padding.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760270
+
+2016-01-08 15:21:28 +0100  Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+	* gst/rawparse/gstrawparse.c:
+	* gst/rawparse/gstrawparse.h:
+	* gst/rawparse/gstvideoparse.c:
+	  rawparse: rename 'set_buffer_flags' vfunc to 'pre_push_buffer'
+	  to allow subclass to change other fields of the buffer.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760270
+
+2016-01-07 14:18:08 +0100  Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+	* gst/rawparse/gstvideoparse.c:
+	* gst/rawparse/gstvideoparse.h:
+	  videoparse: cache video info in instance
+	  To avoid initializing and filling video info each time we need it.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760270
+
+2016-01-28 15:38:45 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmetadata.c:
+	* gst/mxf/mxful.c:
+	* gst/mxf/mxful.h:
+	  mxfmux: Write This Generation UID into the Identification metadata
+	  It's required according to the standard and we forgot to actually write it to
+	  the file although we stored it in the data structures.
+
+2016-01-28 15:29:01 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmetadata.c:
+	  mxfmetadata: Add workaround for ffmpeg only writing one Video Line Map value
+	  https://ffmpeg.org/pipermail/ffmpeg-devel/2016-January/188202.html
+
+2015-10-14 21:13:57 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglmixer.c:
+	* ext/gl/gstglstereomix.c:
+	* ext/gl/gstglvideomixer.c:
+	* gst-libs/gst/video/gstvideoaggregator.c:
+	* gst-libs/gst/video/gstvideoaggregator.h:
+	* gst/compositor/compositor.c:
+	  videoaggregator: don't do caps processing that is not overridable
+	  Allows the subclass to completely override the chosen src caps.
+	  This is needed as videoaggregator generally has no idea exactly
+	  what operation is being performed.
+	  - Adds a fixate_caps vfunc for fixation
+	  - Merges gst_video_aggregator_update_converters() into
+	  gst_videoaggregator_update_src_caps() as we need some of its info
+	  for proper caps handling.
+	  - Pass the downstream caps to the update_caps vfunc
+	  https://bugzilla.gnome.org/show_bug.cgi?id=756207
+
+2016-01-27 20:23:21 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglcolorbalance.c:
+	  glcolorbalance: return HARDWARE from get_balance_type
+
+2016-01-27 20:04:00 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglsinkbin.c:
+	* ext/gl/gstglsinkbin.h:
+	  glsinkbin: add glcolorbalance element
+	  This makes playbin not plug videobalance as glcolorbalance already exists and
+	  implements the GstColorBalance interface.
+
+2016-01-27 19:56:36 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglvideomixer.c:
+	* gst-libs/gst/gl/Makefile.am:
+	* gst-libs/gst/gl/gl.h:
+	* gst-libs/gst/gl/gstglcontrolbindingproxy.c:
+	* gst-libs/gst/gl/gstglcontrolbindingproxy.h:
+	  gl: move control binding proxy implementation from glvideomixer
+	  Other elements may need to use it's functionality
+
+2016-01-27 18:17:06 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglcolorbalance.c:
+	  glcolorbalance: create the shader if it doesn't exist in the render callback
+	  Changing the properties may result in glcolorbalance moving from passthrough to
+	  non-passthrough and we weren't creating the shader in that case.
+
+2016-01-25 16:29:46 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/qt/gstqtsink.cc:
+	  qt: specify that we currently only take 2D textures
+	  Fixes black screen video playback on android without a caps filter.
+
+2016-01-25 19:11:38 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglvideoflip.c:
+	* ext/gl/gstglvideoflip.h:
+	  glvideoflip: incorporate the aspect ratio into the scale_x calculations
+	  1. Otherwise rotating the video will clip and show black bars due to
+	  gltransformation's implementation.
+	  2. The other option of make gltransformation aspect-agnostic produces
+	  incorrect output with perspective transformations.
+
+2016-01-27 14:36:36 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/avfvideosrc.m:
+	  applemedia: avfvideosrc: actually set the configured framerate
+	  Actually set the configured framerate. Before we only used to set the first
+	  matching framerate range. On iOS where the camera reports ranges [2, 60], we
+	  used to configure the camera to output anything between 2 and 60fps.
+
+2016-01-25 22:30:29 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/opencv/gstcvlaplace.cpp:
+	* ext/opencv/gstcvlaplace.h:
+	  opencv: add mask property to cvlaplace
+	  Add a "mask" property that sets whether the edges by cvLaplace should be
+	  used as a mask on the original input or not. The same way the original
+	  image is copied to the edges in edgedetect.
+
+2016-01-25 21:42:52 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/opencv/gstcvsobel.cpp:
+	* ext/opencv/gstcvsobel.h:
+	  opencv: add mask property to cvsobel
+	  Add a "mask" property that sets whether the detected derivative edges
+	  should be used as a mask on the original input or not. The same way
+	  the original image is added to the edges in edgedetect.
+
+2016-01-25 15:19:37 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/opencv/gstskindetect.cpp:
+	  opencv: update deprecated function in skindetect
+	  cvCvtPixToPlane() has been deprecated in OpenCV 3.0, and cvSplit() is the
+	  suggested replacement. Since cvSplit() is available in OpenCV 2.4, it is
+	  safe and cautious to update the function usage before it becomes an issue.
+
+2016-01-25 11:43:59 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/opencv/gstcvlaplace.cpp:
+	* ext/opencv/gstcvlaplace.h:
+	  opencv: fix cvlaplace
+	  cvlaplace was also affected by the silent change in OpenCV API, same as
+	  cvsobel. It hasn't been working for a while. It would return a plain black
+	  image. This commit updates the usage of cvLaplace by using cvCvtColor to
+	  create the grayscale intermediate image to process. This also means there
+	  is no need anymore to use GstBaseTransform's transform_caps, since the pads
+	  are RGB.
+
+2016-01-25 13:33:09 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* gst/videoparsers/gsth265parse.c:
+	  h265parse: Fix buffer leak when sps is not present
+	  When sps data is NULL, the buffer allocated and mapped is not being freed.
+	  In this scenario there is no need to allocate the buffer as we are supposed to return NULL.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761070
+
+2016-01-25 12:05:12 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* gst/videoparsers/gsth265parse.c:
+	  h265parse: Fix buffer memory leak.
+	  While setting caps, codec_data buffer is mapped, but not being unmapped
+	  leading to memory leaks.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761070
+
+2016-01-23 17:10:51 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/opencv/gstcvsobel.cpp:
+	* ext/opencv/gstcvsobel.h:
+	  opencv: fix cvsobel
+	  cvsobel han't been working for a while due to a silent change in OpenCV
+	  API. It would return a plain black image. This commit updates the usage
+	  of cvSobel by using cvCvtColor to create the grayscale image to process.
+	  This also means there is no need to use GstBaseTransform's transform_caps
+	  anymore, since the pads can be RGB.
+
+2016-01-23 05:30:05 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* pkgconfig/Makefile.am:
+	  pkg-config: Properly version and install base/audio/video .pc files
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760733#c17
+
+2016-01-22 16:43:03 +0000  Alex Ashley <alex.ashley@youview.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: fix leak of stream->internal_pad
+	  The function gst_adaptive_demux_stream_update_source() function creates
+	  a new GstPad called internal_pad. This pad is not freed when releasing
+	  the stream.
+	  The solution is to set GST_PAD_FLAG_NEED_PARENT so that the chain
+	  functions do not get called when the pad has no parent and then
+	  remove the parent in the gst_adaptive_demux_stream_free() function. This
+	  causes the refcount of the pad to be set to zero.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760982
+
+2016-01-21 22:00:44 +0800  John Chang <r97922153@gmail.com>
+
+	* ext/dash/gstmpdparser.c:
+	  mpdparser: Use RepresentationIndex instead of Initialization to get the URL of the RepresentationIndex
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760936
+
+2016-01-22 17:25:28 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/androidmedia/gst-android-hardware-camera.c:
+	  ahc: Fail gracefully if our callback class can't be found
+	  Instead of just ignoring that error and then calling JNI functions with NULL,
+	  which will kill the virtual machine.
+	  The error handling here needs some further improvements though, errors in more
+	  places are just ignored.
+
+2016-01-22 17:22:47 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/androidmedia/gst-android-hardware-camera.c:
+	  ahc: Initialize GError pointer with NULL
+	  Otherwise there will be assertions.
+
+2016-01-22 17:18:58 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/androidmedia/gstamcvideodec.c:
+	  amcvideodec: Only free GstAmcBuffer if it's not NULL
+	  And also free it on GL errors.
+
+2016-01-13 22:05:49 +0100  Julien Moutte <julien@ctondemand.com>
+
+	* sys/decklink/gstdecklink.cpp:
+	* sys/decklink/gstdecklink.h:
+	* sys/decklink/gstdecklinkvideosink.cpp:
+	* sys/decklink/gstdecklinkvideosrc.cpp:
+	* sys/decklink/gstdecklinkvideosrc.h:
+	  decklinkvideosrc: implement RGB capture support
+	  Combine mode and format to generate caps and support the flags from VideoChanged callback to support RGB capture.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760594
+
+2016-01-22 16:22:07 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/androidmedia/gstamc.h:
+	  amc: Add an assertion for NULL GErrors
+	  Should never happen! But an assertion is better than a NULL pointer
+	  dereference.
+
+2016-01-22 16:14:46 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/androidmedia/gst-android-graphics-imageformat.c:
+	* sys/androidmedia/gst-android-hardware-camera.c:
+	  ahc: Fix indentation
+
+2016-01-22 16:13:45 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* sys/androidmedia/gstamc.c:
+	* sys/androidmedia/gstamcaudiodec.c:
+	* sys/androidmedia/gstamcvideodec.c:
+	* sys/androidmedia/gstamcvideoenc.c:
+	  amc: MediaCodec::getOutputBuffer() can return NULL without exception
+	  Happens when doing zerocopy rendering, or when passing a wrong index to it.
+	  Handle this properly for zerocopy rendering, fail properly for the other
+	  cases.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760961
+
+2016-01-16 18:59:43 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/audio/Makefile.am:
+	* gst-libs/gst/base/Makefile.am:
+	* gst-libs/gst/video/Makefile.am:
+	* pkgconfig/Makefile.am:
+	  base/audio/video: Install headers and pkg-config files
+	  They are still considered unstable API but it would be good to give them some
+	  wider testing already to make sure the API is useful.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760733
+
+2016-01-16 18:56:26 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	* gst-libs/gst/Makefile.am:
+	* gst-libs/gst/audio/Makefile.am:
+	* gst-libs/gst/audio/gstaudioaggregator.c:
+	* gst-libs/gst/audio/gstaudioaggregator.h:
+	* gst/audiomixer/Makefile.am:
+	* gst/audiomixer/gstaudioaggregator.c:
+	* gst/audiomixer/gstaudioaggregator.h:
+	* gst/audiomixer/gstaudiointerleave.h:
+	* gst/audiomixer/gstaudiomixer.h:
+	* pkgconfig/gstreamer-bad-audio-uninstalled.pc.in:
+	* pkgconfig/gstreamer-bad-audio.pc.in:
+	  audio: Move audioaggregator base class to a library
+	  It's useful enough already to be used in other elements for audio aggregation,
+	  let's give people the opportunity to use it and give it some API testing.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760733
+
+2016-01-21 23:13:36 +0100  Holger Kaelberer <holger.k@elberer.de>
+
+	* gst-libs/gst/gl/android/gstglwindow_android_egl.c:
+	  glwindow: Fix android build
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760972
+
+2016-01-22 13:51:49 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/videotexturecache.m:
+	  applemedia: texture cache: copy the input metas
+	  Copy the input metas so avfvideosrc and vtenc can fast path to using
+	  CVPixelBuffer(s) even when using GLMemory.
+
+2016-01-21 13:50:44 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	  Merge branch 'android-hardware-camera'
+	  This branch adds support for Android Hardware Camera API through a new
+	  element called ahcsrc. This is the "old" Android Camera API, then only
+	  API available on Android 4.X.
+	  https://bugzilla.gnome.org/show_buf.cgi?id=737786
+
+2016-01-08 16:16:09 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/androidmedia/gstahcsrc.c:
+	  ahcsrc: Fix latency reporting
+	  Currently it was wrongly reporting min/max as being the shortest and
+	  longest possible frame duration. This is not how latency works in
+	  GStreamer.
+	  Fix by reporting min latency as being the longest possible duration of
+	  one frame. As we don't know how many buffers the stack can accumulate, we
+	  simply assume that max latency is the same (the usual default behaviour).
+
+2015-12-07 14:31:40 +0100  George Kiagiadakis <george.kiagiadakis@collabora.com>
+
+	* sys/androidmedia/gstahcsrc.c:
+	  ahcsrc: fix deadlock when flushing
+	  _data_queue_item_free() calls gst_buffer_unref(), which
+	  calls gst_ahc_src_buffer_free_func(), which calls
+	  g_mutex_lock() on self->mutex and there you go... deadlock!
+
+2015-12-24 12:51:13 +0900  Justin Kim <justin.kim@collabora.com>
+
+	* sys/androidmedia/Makefile.am:
+	* sys/androidmedia/gst-android-graphics-imageformat.c:
+	* sys/androidmedia/gst-android-graphics-imageformat.h:
+	* sys/androidmedia/gst-android-graphics-surfacetexture.c:
+	* sys/androidmedia/gst-android-graphics-surfacetexture.h:
+	* sys/androidmedia/gst-android-hardware-camera.c:
+	* sys/androidmedia/gst-android-hardware-camera.h:
+	* sys/androidmedia/gst-android-media-mediacodec.c:
+	* sys/androidmedia/gst-android-media-mediacodec.h:
+	* sys/androidmedia/gst-android-media-mediacodecinfo.c:
+	* sys/androidmedia/gst-android-media-mediacodecinfo.h:
+	* sys/androidmedia/gst-android-media-mediacodeclist.c:
+	* sys/androidmedia/gst-android-media-mediacodeclist.h:
+	* sys/androidmedia/gst-android-media-mediaformat.c:
+	* sys/androidmedia/gst-android-media-mediaformat.h:
+	* sys/androidmedia/gstahcsrc.c:
+	* sys/androidmedia/gstahcsrc.h:
+	* sys/androidmedia/gstamc.c:
+	* sys/androidmedia/org/freedesktop/gstreamer/androidmedia/GstAhcCallback.java:
+	  ahcsrc: porting from 0.10 to 1.0
+
+2015-12-24 12:14:24 +0900  Justin Kim <justin.kim@collabora.com>
+
+	* gst-libs/gst/dvm/Makefile.am:
+	* gst-libs/gst/dvm/gstdvm.c:
+	* gst-libs/gst/dvm/gstdvm.h:
+	* pkgconfig/gstreamer-dvm-uninstalled.pc.in:
+	* pkgconfig/gstreamer-dvm.pc.in:
+	* sys/androidcamera/Makefile.am:
+	* sys/androidcamera/com/gstreamer/GstAhcCallback.java:
+	* sys/androidcamera/gst-android-graphics-imageformat.c:
+	* sys/androidcamera/gst-android-graphics-imageformat.h:
+	* sys/androidcamera/gst-android-graphics-surfacetexture.c:
+	* sys/androidcamera/gst-android-graphics-surfacetexture.h:
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	* sys/androidcamera/gst-android-hardware-camera.h:
+	* sys/androidcamera/gst-androidcamera.c:
+	* sys/androidcamera/gstahccallback.h:
+	* sys/androidcamera/gstahcsrc.c:
+	* sys/androidcamera/gstahcsrc.h:
+	* sys/androidmedia/gst-android-graphics-imageformat.c:
+	* sys/androidmedia/gst-android-graphics-imageformat.h:
+	* sys/androidmedia/gst-android-graphics-surfacetexture.c:
+	* sys/androidmedia/gst-android-graphics-surfacetexture.h:
+	* sys/androidmedia/gst-android-hardware-camera.c:
+	* sys/androidmedia/gst-android-hardware-camera.h:
+	* sys/androidmedia/gst-androidcamera.c:
+	* sys/androidmedia/gstahcsrc.c:
+	* sys/androidmedia/gstahcsrc.h:
+	  move androidcamera into androidmedia
+	  This commit is a part of portng android hardware camera from 0.10 implementation.
+	  To preserve history and get diff clearly, the interesting files are moved to
+	  deployment directory and the remaining files are removed.
+
+2013-01-07 18:27:40 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-graphics-surfacetexture.c:
+	* sys/androidcamera/gst-android-graphics-surfacetexture.h:
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	* sys/androidcamera/gst-android-hardware-camera.h:
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Separate release and free APIs
+
+2013-01-07 18:20:47 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidmedia/gst-android-media-mediacodecinfo.c:
+	  androidmedia: Fix get_level and get_profile exception checking by not using return
+
+2013-01-07 18:19:28 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidmedia/gst-android-media-mediacodec.c:
+	* sys/androidmedia/gst-android-media-mediacodec.h:
+	* sys/androidmedia/gst-android-media-mediacodecinfo.c:
+	  androidmedia: Add extern gint declarations
+
+2013-01-07 18:18:18 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* gst-libs/gst/dvm/gstdvm.h:
+	  gstdvm: Fix GST_DVM_GET_STATIC_FIELD
+
+2012-11-29 20:10:19 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	  androidcamera: Small refactor in case open doesn't throw an exception but returns null
+
+2012-12-13 17:57:58 +0000  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	  androidcamera: Fix some compiler warnings
+
+2012-12-13 17:56:01 +0000  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* gst-libs/gst/dvm/Makefile.am:
+	* gst-libs/gst/dvm/gst-dvm.c:
+	* gst-libs/gst/dvm/gst-dvm.h:
+	* gst-libs/gst/dvm/gstdvm.c:
+	* gst-libs/gst/dvm/gstdvm.h:
+	* sys/androidcamera/Makefile.am:
+	* sys/androidcamera/gst-android-graphics-imageformat.c:
+	* sys/androidcamera/gst-android-graphics-surfacetexture.c:
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	* sys/androidcamera/gst-androidcamera.c:
+	* sys/androidcamera/gstahcsrc.c:
+	* sys/androidmedia/gst-android-media-mediacodec.c:
+	* sys/androidmedia/gst-android-media-mediacodecinfo.c:
+	* sys/androidmedia/gst-android-media-mediacodeclist.c:
+	* sys/androidmedia/gst-android-media-mediaformat.c:
+	  dvm: Rename gst-dvm.[ch] to gstdvm.[ch] for consistency with other GStreamer code
+
+2012-12-13 17:40:22 +0000  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* gst-libs/gst/dvm/gst-dvm.c:
+	* gst-libs/gst/dvm/gst-dvm.h:
+	  dvm: Add new function to check if we started a VM or only used an existing one
+
+2012-12-13 17:40:04 +0000  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* sys/androidmedia/gst-android-media-mediacodec.c:
+	* sys/androidmedia/gst-android-media-mediacodec.h:
+	  androidmedia: Make everything compile with the new wrappers
+
+2012-12-13 12:13:27 +0000  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* sys/androidmedia/gst-android-media-mediacodec.c:
+	* sys/androidmedia/gst-android-media-mediacodec.h:
+	* sys/androidmedia/gst-android-media-mediacodecinfo.c:
+	* sys/androidmedia/gst-android-media-mediacodecinfo.h:
+	* sys/androidmedia/gst-android-media-mediacodeclist.c:
+	* sys/androidmedia/gst-android-media-mediacodeclist.h:
+	* sys/androidmedia/gst-android-media-mediaformat.c:
+	* sys/androidmedia/gst-android-media-mediaformat.h:
+	  androidmedia: Add remaining bits of the Java wrappers using libgstdvm
+
+2012-12-13 12:13:12 +0000  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* gst-libs/gst/dvm/gst-dvm.h:
+	  dvm: Add some more helper macros
+
+2012-12-12 18:10:13 +0000  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* sys/androidmedia/gst-android-media-mediacodec.c:
+	* sys/androidmedia/gst-android-media-mediaformat.c:
+	  androidmedia: Remove g_return_if_fails()
+	  This is not public API so it has no advantage to have them here.
+
+2012-11-28 20:53:51 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidmedia/gst-android-media-mediacodec.c:
+	* sys/androidmedia/gst-android-media-mediacodec.h:
+	* sys/androidmedia/gst-android-media-mediaformat.c:
+	* sys/androidmedia/gst-android-media-mediaformat.h:
+	  androidmedia: Use gst-dvm and refactor java wrappers (WIP)
+	  Moved the java wrapper API into its own files and made use of the
+	  gst-dvm macros. Also renamed the API to have the proper naming
+	  convention and coding style in order to match the one in androidcamera.
+	  This is a work in progress! "android/media/MediaCodecList" is still missing
+	  and the actual elements have not been ported to use the new function names.
+
+2012-11-28 15:26:49 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-graphics-imageformat.h:
+	* sys/androidcamera/gst-android-graphics-surfacetexture.h:
+	* sys/androidcamera/gst-android-hardware-camera.h:
+	  androidcamera: Add G_BEGIN/END_DECLS to the .h
+
+2012-11-27 19:25:06 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* gst-libs/gst/dvm/Makefile.am:
+	* gst-libs/gst/dvm/gst-dvm.c:
+	* gst-libs/gst/dvm/gst-dvm.h:
+	* pkgconfig/gstreamer-dvm-uninstalled.pc.in:
+	* pkgconfig/gstreamer-dvm.pc.in:
+	* sys/androidcamera/Makefile.am:
+	* sys/androidcamera/gst-android-graphics-imageformat.c:
+	* sys/androidcamera/gst-android-graphics-surfacetexture.c:
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	* sys/androidcamera/gst-androidcamera.c:
+	* sys/androidcamera/gst-dvm.c:
+	* sys/androidcamera/gst-dvm.h:
+	* sys/androidcamera/gstahcsrc.c:
+	  gst-dvm: Create a gst-dvm library using part of androidcamera
+
+2012-11-27 17:24:35 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Adding a device-name property
+
+2012-11-20 19:56:22 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* docs/plugins/inspect/plugin-androidcamera.xml:
+	* sys/androidcamera/gstahcsrc.c:
+	* sys/androidcamera/gstahcsrc.h:
+	  androidcamera: Add element documentation
+
+2012-11-19 18:25:12 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/Makefile.am:
+	  androidcamera: Prettify the gstahccallback.c generation line in the makefile
+
+2012-11-15 12:33:26 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	  androicamera: Make sure the TMP env var exists and check for DEX var too
+
+2012-11-14 11:38:51 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	  androidcamera: Do not use gst_list_free_full since it requires glib 2.28
+
+2012-11-12 18:59:57 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	* sys/androidcamera/gstahcsrc.h:
+	  androidcamera: Add smooth-zoom property for smooth zooming feature
+
+2012-11-12 18:19:20 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Add focal-length, view-angle and video-stabilization properties
+
+2012-11-12 18:18:11 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	* sys/androidcamera/gst-android-hardware-camera.h:
+	  androidcamera: Add video stabilization API
+
+2012-11-12 16:38:40 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Add property probe for the photography properties
+
+2012-11-09 18:21:21 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Small refactor
+
+2012-11-09 16:57:30 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Fix small memleak
+
+2012-11-09 16:55:57 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Store GParamSpec for properties and use that for the PropertyProbe comparison
+
+2012-11-09 12:23:37 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Handle zoom comparison better, and avoid float precision issue
+
+2012-11-09 12:22:12 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Fix EV compensation support
+
+2012-11-07 19:16:05 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Implement new GstPhotography enums
+
+2012-11-07 15:38:19 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Do not advertise zoom capabilities if camera doesn't support zoom
+
+2012-11-07 15:37:43 -0500  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	  androidcamera: Be NULL-safe when a JNI list is returned
+
+2012-11-02 18:07:24 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Use strcmp on the GParamSpec property name
+	  Use strcmp instead of using the property_id because it's overriden
+
+2012-11-02 18:00:55 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidmedia: Implement property probe for zoom and ev_compensation
+
+2012-11-02 17:00:45 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/com/gstreamer/GstAhcCallback.java:
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	* sys/androidcamera/gst-android-hardware-camera.h:
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Add autofocus support
+
+2012-11-02 16:59:42 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Override properties
+
+2012-11-01 15:24:12 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  anroidcamera: Add support for the GstPhotography interface
+
+2012-11-01 11:58:33 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	* sys/androidcamera/gst-android-hardware-camera.h:
+	  androidcamera: Add more wrappers for the Camera.Parameters class
+
+2012-10-31 14:21:47 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Send proper error when unable to open camera
+
+2012-10-30 12:13:12 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Adding device-orientation and device-facing properties
+
+2012-10-30 11:35:36 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	* sys/androidcamera/gstahcsrc.h:
+	  androidcamera: Add device property and property probe it
+
+2012-10-30 10:12:06 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Fix memleak and lose of buffer if the data queue is flushing
+
+2012-10-30 09:49:39 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Calling set_preview_callback with NULL frees all the buffers in the queue.
+	  We must not do it at the stop otherwise we lose all our buffers. It's best to do
+	  it during the close, so we free up the resources.
+
+2012-10-30 09:49:03 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Drop frames if we don't have a clock and var rename
+
+2012-10-30 09:45:55 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androicamera: if buffer size increases, then readd new buffers to the queue and drop old ones
+	  The on_preview callback gets called with NULL if the buffer in the queue is
+	  too small, so we need to handle the case where the array is NULL. Also
+	  there is a bug in the android source which makes it drop one of the buffers
+	  so if we had 5 buffers, and we renegotiate to a higher resolution, then we'd
+	  only get 4 calls to on_preview_frame with NULL, with one being dropped.
+	  This means we can't reallocate the buffers in the if (data == NULL) case
+	  because we might end up with 0 buffers in the end.
+
+2012-10-30 09:44:31 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	  androidcamera: If callback is NULL then set it to NULL in jni
+
+2016-01-21 13:46:52 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Fix debug output
+
+2012-10-26 12:57:50 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Chose the smallest range that contains the target framerate
+
+2012-10-26 12:43:09 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Improve negotiation
+	  And make sure we set an FPS range from the supported ones
+	  now instead of a potentially unsupported range.
+
+2012-10-26 12:19:55 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Implement LATENCY query
+
+2012-10-26 11:57:47 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Make sure we always have a valid camera source instance in the buffer free function
+
+2012-10-26 11:46:23 +0200  Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Make sure to not call any callbacks after stopping the camera
+	  Fixes segfaults when rotating the device for example.
+
+2012-10-24 15:25:54 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidcamera: Fix timestamping issue
+
+2012-10-24 13:59:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	* sys/androidcamera/gstahcsrc.h:
+	  androidcamera: Add caps negotiation support
+
+2012-10-24 10:55:52 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  Add support for getcaps that probes the camera for capabilities
+
+2012-10-23 13:54:46 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidmedia: Drop the first buffer to have proper timestamping
+
+2012-10-23 11:14:00 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidmedia: Flush the queue when the source is stopped
+
+2012-10-23 11:13:37 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidmedia: Allocate/free texture when camera is open/closed
+
+2012-10-23 11:13:12 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidmedia: add a gst_ahc_src_close function
+
+2012-10-23 11:12:19 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  androidmedia: Fix small indentation issues
+
+2012-10-23 10:12:52 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/Makefile.am:
+	  androidmedia: Disable plugin if android-sdk isn't found and dynamically search for platform version
+
+2012-10-23 09:01:50 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/Makefile.am:
+	* sys/androidcamera/com/gstreamer/GstAhcCallback.java:
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	* sys/androidcamera/gstahccallback.h:
+	  androidcamera: Add support for using DexLoader with Embeded GstAhcCallback.jar
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-graphics-imageformat.c:
+	* sys/androidcamera/gst-android-graphics-surfacetexture.c:
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	  androidcamera: Fix compilation issues
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/Makefile.am:
+	* sys/androidcamera/gst-androidcamera.c:
+	* sys/androidcamera/gst-androidmedia.c:
+	  Remove previous cruft and create androidcamera plugin
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  Free the buffers and readd the arrays when the queue is cleared
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-graphics-imageformat.c:
+	* sys/androidcamera/gst-android-graphics-surfacetexture.c:
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	* sys/androidcamera/gst-dvm.h:
+	  Add a GST_DVM_CALL macro to ease function calling with exception check
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	* sys/androidcamera/gstahcsrc.h:
+	  Calculate timestamp at reception of the buffer, not when pushing it out
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  Make the number of callback buffers configurable, and delete their local ref
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	* sys/androidcamera/gstahcsrc.h:
+	  Use GstDataQueue instead of GAsyncQueue for storing buffers
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  Use the buffer's free_func to map byteArray data without making a copy
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  Remove open failure test code and debug log
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gstahcsrc.c:
+	  Use YV12 as the default format
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-graphics-imageformat.c:
+	* sys/androidcamera/gst-android-graphics-imageformat.h:
+	* sys/androidcamera/gst-android-graphics-surfacetexture.c:
+	* sys/androidcamera/gst-android-graphics-surfacetexture.h:
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	* sys/androidcamera/gst-android-hardware-camera.h:
+	* sys/androidcamera/gst-androidmedia.c:
+	  Add a deinit function and remove jclass references in case of error
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/gst-android-graphics-surfacetexture.c:
+	  SurfaceTexture constructure needs texture_id
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/Makefile.am:
+	* sys/androidcamera/gst-androidmedia.c:
+	* sys/androidcamera/gstahcsrc.c:
+	* sys/androidcamera/gstahcsrc.h:
+	  Add ahcsrc Camera source element prototype
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/Makefile.am:
+	* sys/androidcamera/gst-android-graphics-imageformat.c:
+	* sys/androidcamera/gst-android-graphics-imageformat.h:
+	* sys/androidcamera/gst-android-graphics-surfacetexture.c:
+	* sys/androidcamera/gst-android-graphics-surfacetexture.h:
+	* sys/androidcamera/gst-android-hardware-camera.c:
+	* sys/androidcamera/gst-android-hardware-camera.h:
+	  Add android.hardware.Camera (and deps) JNI wrappers
+
+2012-10-17 19:42:59 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/Makefile.am:
+	* sys/androidcamera/gst-dvm.c:
+	* sys/androidcamera/gst-dvm.h:
+	  Adding Dalvik Virtual Machine routines and macros
+
+2012-10-17 17:56:33 -0400  Youness Alaoui <youness.alaoui@collabora.co.uk>
+
+	* sys/androidcamera/Makefile.am:
+	* sys/androidcamera/gst-androidmedia.c:
+	  androidmedia: Add androidmedia plugin
+
+2016-01-15 14:31:54 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* ext/spandsp/Makefile.am:
+	* ext/spandsp/gstspandsp.c:
+	* ext/spandsp/gsttonegeneratesrc.c:
+	* ext/spandsp/gsttonegeneratesrc.h:
+	  spandsp: Add tone generator
+
+2015-07-14 13:40:46 +0900  Hyunjun Ko <zzoon.ko@samsung.com>
+
+	* gst/mpegtsmux/tsmux/tsmuxstream.c:
+	  mpegtsmux: set non-0 payload length in PES header if video ES packet is small enough
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748507
+
+2015-07-14 13:42:54 +0900  Hyunjun Ko <zzoon.ko@samsung.com>
+
+	* gst/mpegtsmux/tsmux/tsmuxstream.c:
+	  mpegtsmux: reset pes_bytes_written when starting to write new PES packet
+	  In case of an unbounded packet (video usually), pes_bytes_written was
+	  no reset.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=748507
+
+2016-01-19 17:08:50 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/mpegtsmux/mpegtsmux.c:
+	* gst/mpegtsmux/tsmux/tsmuxstream.c:
+	* gst/mpegtsmux/tsmux/tsmuxstream.h:
+	  mpegtsmux: add support for H.265/HEVC video
+	  https://bugzilla.gnome.org/show_bug.cgi?id=744367
+
+2016-01-19 13:20:23 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/gl/Makefile.am:
+	* ext/gl/effects/gstgleffectscurves.c:
+	* ext/gl/effects/gstgleffectscurves.h:
+	  gl: fix compiler warnings with gcc-6
+	  In file included from effects/gstgleffectrgbtocurve.c:25:0:
+	  effects/gstgleffectscurves.h:174:32: error: 'xray_curve' defined but not used
+	  static const GstGLEffectsCurve xray_curve = {
+	  ...
+
+2016-01-19 08:39:58 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/gl/Makefile.am:
+	* gst-libs/gst/insertbin/Makefile.am:
+	* gst-libs/gst/mpegts/Makefile.am:
+	* gst-libs/gst/player/Makefile.am:
+	  libs: g-i: fix init section to avoid compiler warnings
+	  ..GstPlayer-1.0.c: In function ‘main’:
+	  ..GstPlayer-1.0.c:587:3: warning: implicit declaration of function ‘gst_init’
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760090
+
+2016-01-19 19:18:43 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/vtenc.c:
+	  applemedia: vtenc: fix build on iOS
+
+2016-01-19 15:50:22 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/avfassetsrc.m:
+	* sys/applemedia/avfvideosrc.m:
+	* sys/applemedia/coremediabuffer.c:
+	* sys/applemedia/coremediabuffer.h:
+	* sys/applemedia/corevideobuffer.c:
+	* sys/applemedia/corevideobuffer.h:
+	* sys/applemedia/qtkitvideosrc.m:
+	* sys/applemedia/videotexturecache.m:
+	* sys/applemedia/vtdec.c:
+	* sys/applemedia/vtenc.c:
+	  applemedia: always fill GstBuffers with GstMemory
+	  Always fill buffers with our custom memory. The custom memory will avoid
+	  mapping CV/CM buffers unless necessary.
+
+2015-04-19 00:30:48 +0300  Ilya Konstantinov <ilya.konstantinov@gmail.com>
+
+	* sys/applemedia/coremediabuffer.c:
+	* sys/applemedia/corevideobuffer.c:
+	  applemedia: implement copying of meta
+	  Before this, buffers would lose their Core Video / Core Media meta
+	  over intervideo* boundary.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747216
+
+2015-04-02 20:04:18 +0300  Ilya Konstantinov <ilya.konstantinov@gmail.com>
+
+	* sys/applemedia/Makefile.am:
+	* sys/applemedia/coremediabuffer.c:
+	* sys/applemedia/corevideobuffer.c:
+	* sys/applemedia/corevideobuffer.h:
+	* sys/applemedia/corevideomemory.c:
+	* sys/applemedia/corevideomemory.h:
+	* sys/applemedia/plugin.m:
+	  applemedia: implement GstAppleCoreVideoMemory
+	  Implement a new memory type wrapping CVPixelBuffer.
+	  There are two immediate advantages:
+	  a) Make the GstMemory itself retain the CVPixelBuffer. Previously,
+	  the containing GstBuffer was solely responsible for the lifetime of
+	  the backing CVPixelBuffer.
+	  With this change, we remove the GST_MEMORY_FLAG_NO_SHARE so that
+	  GstMemory objects be referenced by multiple GstBuffers (doing away
+	  with the need to copy.)
+	  b) Delay locking CVPixelBuffer into CPU memory until it's actually
+	  mapped -- possibly never.
+	  The CVPixelBuffer object is shared among references, shares and
+	  (in planar formats) planes, so a wrapper GstAppleCoreVideoPixelBuffer
+	  structure was introduced to manage locking.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747216
+
+2016-01-19 12:56:40 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/iosurfacememory.c:
+	  applemedia: iosurfacememory: alloc with g_new0
+	  ...since the base class doesn't use g_slice anymore
+
+2016-01-08 11:04:13 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: added check that availabilityStartTime is present for live streams
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757602
+
+2015-11-04 18:15:24 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* ext/dash/gstmpdparser.c:
+	  adaptivedemux: improved error message if availabilityStartTime is missing for a live stream
+	  For a live mpd, if availabilityStartTime is missing, adaptive demux asserts
+	  with: Unexpected critical/warning: gst_date_time_to_g_date_time: assertion
+	  'datetime != NULL' failed.
+	  This patch improves the error message to:
+	  Unexpected critical/warning: gst_mpd_client_seek_to_time: assertion
+	  'client->mpd_node->availabilityStartTime != NULL' failed
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757602
+
+2016-01-14 18:27:50 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* tests/check/elements/test_http_src.c:
+	  tests: adaptive-stremaing: fix memory leak in test_http_src
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760600
+
+2016-01-15 10:49:12 -0500  Matt Crane <mattcrane@tycoint.com>
+
+	* sys/shm/gstshmsink.c:
+	  shmsink: fix possible deadlock in _render()/ _allocator_free()
+	  Drop object lock before unrefing memory, otherwise the object
+	  lock might be taken again from the allocator and then things
+	  deadlock.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760551
+
+2016-01-16 17:14:54 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/gstglfilter.c:
+	  glfilter: First make caps writable in fixate_caps(), then truncate them
+	  Truncating requires writable caps.
+
+2016-01-16 17:12:29 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	  glcolorconvert: Caps passed to fixate_caps() are not owned by us and guaranteed to be fixed
+	  So don't try to fixate them, which takes ownership and steals them from
+	  basetransform.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760696
+
+2016-01-16 16:55:42 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/gstglbufferpool.c:
+	  Revert "glpool: fix caps refcount issue"
+	  This reverts commit 3bdcdedfa00b87f1db505218789178318a16c743.
+	  gst_caps_replace() takes a new reference already, if there is a problem then
+	  it is elsewhere. And there are a few problems, see
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760696
+
+2016-01-15 16:10:02 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst/rtp/gstrtph265depay.c:
+	  rtph265depay: fix unneeded sub-buffer creation
+	  We create a sub-buffer just to copy over its metas and then throw it
+	  away immediately, just use the original input buffer directly.
+
+2016-01-15 15:56:59 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst/rtp/gstrtph265pay.c:
+	  rtph265pay: add "send VPS/SPS/PPS with every key frame" mode
+	  It's not enough to have timeout or event based VPS/SPS/PPS information
+	  sent in RTP packets. There are some scenarios when key frames may appear
+	  more frequently than once a second, in which case the minimum timeout
+	  for "config-interval" of 1 second for sending VPS/SPS/PPS isn't enough.
+	  It might also be desirable in general to make sure the VPS/SPS/PPS is
+	  available with every keyframe (packet loss aside), so receivers can
+	  actually pick up decoding immediately from the first keyframe if
+	  VPS/SPS/PPS is not signaled out of band.
+	  This commit adds the possibility to send VPS/SPS/PPS with every key frame.
+	  This mode can be enabled by setting "config-interval" property to -1. In
+	  this case the payloader will add VPS, SPS and PPS before every key (IDR)
+	  frame.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757892
+
+2016-01-15 15:19:41 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst/rtp/gstrtph265pay.c:
+	* gst/rtp/gstrtph265pay.h:
+	  rtph265pay: change config-interval property type from uint to int
+	  This way we can use -1 as special value, which is nicer than MAXUINT.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757892
+
+2016-01-13 09:51:20 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/dash/gstdashdemux.c:
+	* ext/hls/gsthlsdemux.c:
+	* ext/smoothstreaming/gstmssdemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+	* tests/check/elements/adaptive_demux_common.c:
+	* tests/check/elements/adaptive_demux_engine.c:
+	* tests/check/elements/adaptive_demux_engine.h:
+	  adaptivedemux: replace ghostpad with a standard pad
+	  Handling the ghostpad and its internal pad was causing more issues
+	  than helping because of their coupled activation/deactivation
+	  actions.
+	  As we have to install custom chain,event and query functions it is
+	  better to use a floating sink pad internally in the demuxer and just
+	  use those pad functions to push through a standard pad in the demuxer
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757951
+
+2015-11-11 17:24:33 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: do not flush the input pad
+	  gst_adaptive_demux_stream_clear_eos_and_flush_state() function will do
+	  all the necessary cleaning.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757951
+
+2016-01-15 11:44:52 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst/segmentclip/gstvideosegmentclip.c:
+	  videosegmentclip: fail to set_caps if problem in caps structure
+	  gst_video_segment_clip_set_caps () should return FALSE if there was a
+	  problem reading the framerate values from the caps structure.
+
+2016-01-15 17:00:55 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglquery.c:
+	  glquery: provide compat definition for GL_QUERY_RESULT
+	  e.g. android doesn't have it
+	  While we're here move a state specific assertion after the supported check.
+	  Removes an assertion on GLES
+
+2016-01-15 16:07:27 +1100  Matthew Waters <matthew@centricular.com>
+
+	* configure.ac:
+	* gst-libs/gst/gl/glprototypes/gstgl_compat.h:
+	  gl: add compatibility definition of GLint64
+	  e.g. anrdoid doesn't have it
+
+2016-01-08 22:19:06 +0300  Sergey Borovkov <serge.borovkov@gmail.com>
+
+	* ext/qt/qtitem.cc:
+	  qml: Mark material dirty when texture buffer is updated
+	  Qt might not redraw the scene otherwise.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=758286
+
+2016-01-15 14:00:56 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglbufferpool.c:
+	  glpool: fix caps refcount issue
+	  The caps are from an allocation query which are transfer none but were being
+	  treated as transfer full.
+
+2016-01-11 13:30:05 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglbasememory.c:
+	* gst-libs/gst/gl/gstglbasememory.h:
+	* gst-libs/gst/gl/gstglmemory.c:
+	  glmemory: log the time for glTexSubImage/glReadPixels
+
+2016-01-08 18:36:54 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/Makefile.am:
+	* gst-libs/gst/gl/gl.h:
+	* gst-libs/gst/gl/glprototypes/Makefile.am:
+	* gst-libs/gst/gl/glprototypes/all_functions.h:
+	* gst-libs/gst/gl/glprototypes/query.h:
+	* gst-libs/gst/gl/gstgl_fwd.h:
+	* gst-libs/gst/gl/gstglquery.c:
+	* gst-libs/gst/gl/gstglquery.h:
+	* tests/check/Makefile.am:
+	* tests/check/libs/.gitignore:
+	* tests/check/libs/gstglquery.c:
+	  gl: add a gstglquery object for arbitrary GL queries
+	  Currently only GL_TIME_ELAPSED and GL_TIMESTAMP are supported
+
+2016-01-11 17:22:26 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstgldebug.c:
+	* gst-libs/gst/gl/gstgldebug.h:
+	  gldebug: implement a delayed debug system
+	  The messages are stored by gst_gl_async_debug_store_log_msg() and output later
+	  by a corresponding store(), output() or an unset()/free().
+	  Some wrapper macros are provided to avoid callers explicitly using __FILE__,
+	  GST_FUNCTION and __LINE__
+
+2016-01-11 17:26:08 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstgldebug.c:
+	  gldebug: use gst_info_vasprintf in insert_debug_marker()
+	  Allows expansion of GST_PTR_FORMAT and GST_SEGMENT_FORMAT arguments.
+
+2016-01-15 11:22:40 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/Makefile.am:
+	* ext/gl/gstglvideoflip.c:
+	* ext/gl/gstglvideoflip.h:
+	* ext/gl/gstopengl.c:
+	  gl: add a videoflip element
+	  Behaves exactly the same as the non-GL videoflip element
+
+2016-01-15 00:04:20 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglfilter.c:
+	  glfilter: recreate the fbo on caps changes
+	  The width/height may change which requires recreating the depth buffer.
+
+2016-01-15 00:02:43 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglbasefilter.c:
+	* gst-libs/gst/gl/gstglbasefilter.h:
+	  glbasefilter: add a class function on set_caps (from GL)
+	  This is simply a convenience to avoid duplicating the thread marshalling on
+	  set_caps.
+
+2016-01-15 00:00:29 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstgltransformation.c:
+	  gltransformation: always build a valid mvp matrix
+	  The default case is to build an identity matrix.
+
+2016-01-14 19:03:04 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstgltransformation.c:
+	  gltransformation: support negative scales
+	  A scale of -1.0 means to flip the video.
+
+2016-01-14 18:42:05 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstgltransformation.c:
+	  gltransformation: implement passthrough handling
+
+2016-01-14 17:45:03 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstgltransformation.c:
+	* ext/gl/gstgltransformation.h:
+	  gltransformation: implement navigation events
+	  Reverses the transformation applied through the properties and forwards the
+	  event.
+	  The process for finding the coordinates on the video are as follows:
+	  1. Convert the given pointer_x and pointer_y to model space at the near and far planes
+	  2. Get the equation of the video plane
+	  3. Find where the ray in 1 intersects the plane
+	  4. Profit!
+
+2016-01-14 16:59:12 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglimagesink.c:
+	  glimagesink: remove reduntant glimagesink from debug logging
+
+2016-01-14 16:57:40 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/x11/gstglwindow_x11.c:
+	  gl/x11/navigation: add button press to the selected event mask
+	  Otherwise we won't get the button press events and GstNavigation fails.
+
+2016-01-14 16:00:00 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	  glcolorconvert: try harder to passthrough
+	  This makes a pipeline like:
+	  ... ! video/x-raw(memory:GLMemory),format=UYVY ! glcolorconvert !
+	  video/x-raw(memory:GLMemory),format={UYVY, NV12} ! ...
+	  passthrough instead of converting UYVY => NV12. The conversion would happen
+	  before this change since the element (and basetransform) transform the src caps
+	  to format={NV12, UYVY} (since NV12 comes first in the glcolorconvert:src
+	  template) and then the default caps fixate func would fixate to NV12. Blah.
+	  Also there's no need to intersect against the template caps in ::transform_caps
+	  since basetransform does that right after calling the vfunc.
+
+2016-01-12 18:31:29 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/Makefile.am:
+	* ext/gl/gstglcolorbalance.c:
+	* ext/gl/gstglcolorbalance.h:
+	* ext/gl/gstopengl.c:
+	  gl: implement a colorbalance element
+	  It performs the exact same operation as videobalance but with opengl shaders and
+	  was tested with glvideomixer by comparing frames from videobalance and
+	  glcolorbalance.
+
+2016-01-12 18:21:50 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglvideomixer.c:
+	* ext/gl/gstglvideomixer.h:
+	  glvideomixer: implement glBlendFunc and glBlendEquation
+	  Allows more blending options than just A over B
+	  e.g. frame comparisons are now possible.
+	  glvideomixer name=m
+	  sink_0::zorder=0
+	  sink_1::zorder=1
+	  sink_1::blend-equation-rgb={subtract,reverse-subtract}
+	  sink_1::blend-function-src-rgb=src-color
+	  sink_1::blend-function-dst-rgb=dst-color
+	  ! glimagesinkelement
+	  videotestsrc pattern=checkers-4 ! m.sink_0
+	  videotestsrc pattern=checkers-8 ! m.sink_1
+
+2016-01-08 18:38:46 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstgldebug.c:
+	  gldebug: add a specific category for the debug spam from the driver
+
+2016-01-12 14:54:23 +0000  Tim Sheridan <tim.sheridan@imgtec.com>
+
+	* ext/sbc/gstsbcdec.c:
+	  sbc: sbcdec: Fix frame length calculation
+	  SBC frame length calculation wasn't being rounded up to the nearest byte
+	  (as specified in the A2DP 1.0 specification, section 12.9). This could
+	  cause 'stereo' and 'joint stereo' mode SBC streams to have incorrectly
+	  calculated frame lengths.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=742446
+
+2016-01-12 23:34:31 +1100  Matthew Waters <matthew@centricular.com>
+
+	* sys/nvenc/gstnvbaseenc.c:
+	  nvenc: update for recent GL api changes
+	  Specifically the GstGLMemoryPBO addition (which was the unadorned GstGLMemory).
+
+2016-01-12 14:36:02 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/avfvideosrc.m:
+	  applemedia: avfvideosrc: optionally get the GL context from gst_element_set_context
+	  Allow setting the GL context with gst_element_set_context. When available, the
+	  local context obtained via the context query still has the precedence.
+
+2016-01-12 14:02:46 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/iosurfacememory.c:
+	  applemedia: iosurfacememory: remove NO_SHARE flag
+	  The full memory can be safely shared. Sharing a sub region can't be done and
+	  will fail in the base allocator, triggering a copy.
+
+2016-01-11 13:33:46 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst/frei0r/gstfrei0rmixer.c:
+	  frei0rmixer: replace accept-caps with caps query
+	  It wants to check if upstream can produce a certain format,
+	  accept-caps might only check if the next element can produce it.
+
+2016-01-07 20:56:54 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglbasememory.c:
+	* gst-libs/gst/gl/gstglmemorypbo.c:
+	  glbasememory: Free the actual memory object when requested
+	  Otherwise we are leaking ~400B on each GstMemory allocation.
+	  Freeing in the base class matches the GObject semantics.
+
+2016-01-07 20:54:41 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglmemorypbo.c:
+	  glmemorypbo: don't double read pixels
+	  The optimistic download_transfer was not setting the required flag to not
+	  perform glReadPixels on subsequent map (READ). resulting in glReadPixels
+	  happening twice.
+
+2016-01-07 18:47:37 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglmemory.c:
+	* gst-libs/gst/gl/gstglmemory.h:
+	* gst-libs/gst/gl/gstglmemorypbo.c:
+	  glmemory: expose gst_gl_memory_texsubimage
+	  Removes extremely similar code from glmemorypbo.
+
+2016-01-07 18:05:23 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglfeature.c:
+	  glfeature add a specific debug category
+	  Saves having to trawl through the 'default' category when function retrieval
+	  goes wrong.
+
+2016-01-05 14:35:11 -0500  Bob Holcomb <bholcomb@mak.com>
+
+	* gst/mpegtsmux/tsmux/tsmux.c:
+	  mpegtsmux: fix reserve bits so they are 1's
+	  The MPEG standard (ISO-13880-1) says the reserve bits need to be set
+	  to one (2.1.64). This is causing transport streams to fail validation
+	  on some systems.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760127
+
+2016-01-08 17:11:09 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/opencv/gstpyramidsegment.h:
+	  opencv: remove check for OpenCV version
+	  After commit 64080e632, configure checks for all the header files that
+	  should be available in OpenCV 2.3 and later. If any of these files isn't
+	  there the OpenCV elements won't be part of the build.
+	  No need to recheck for opencv2/legacy/legacy.hpp again in
+	  gstpyramidsegment.h. Minimum supported OpenCV version must have this header
+	  and configure already checks for it. Removing check.
+
+2016-01-08 15:01:47 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/opencv/gstcvsmooth.cpp:
+	  opencv: always do cvsmooth in place
+	  After the update to new OpenCV API the transform function using an out
+	  buffer is not necessary. We can always do the transformation in place.
+
+2016-01-08 12:39:29 +0000  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* ext/opencv/gstpyramidsegment.cpp:
+	* ext/opencv/gstpyramidsegment.h:
+	  opencv: do pyramidsegment's transformation in place
+	  Run the transform function of pyramidsegment in place, reusing the image
+	  data as both source and destination in cvPyrSegmentation. This avoids
+	  copying the image back and forth and the extra memory.
+
+2016-01-07 15:21:40 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/elements/adaptive_demux_common.c:
+	* tests/check/elements/hls_demux.c:
+	  tests: hlsdemux: add test for updating segment stop
+	  Add a test for seeking that only updates stop position and verifies
+	  that start is unmodified
+
+2016-01-07 15:21:22 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: fix seeking that just updates stop position
+	  Fixed adaptivedemux seeking without flushing that just wants
+	  to update stop position. This required protecting the segment
+	  variables with a new mutex so that the seeking thread and the
+	  download threads could safely manipulate the segment and
+	  events related to it.
+	  This contention is only locked/unlocked when starting a new
+	  download, when the first fragment of a segment is received and
+	  when seeking so, hopefully, it won't damage performance.
+
+2016-01-06 16:51:08 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: fix segment update on seeks
+	  Fixes typo on reverse rate check and also only update the
+	  position when the start/stop was actually changed.
+
+2016-01-07 18:10:49 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxftypes.c:
+	  mxftypes: Don't store pointers in stack allocated guints
+	  This works usually in this place, unless the compiler optimizes things in
+	  interesting ways in which case it causes stack corruption and crashes later.
+	  The compiler in question here is clang with -O1, which seems to pack the stack
+	  a bit more and causes writing to the guint as pointer to overwrite map.memory,
+	  which then later crashes during unmapping of the memory.
+
+2016-01-07 18:02:33 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/mxf/mxfmetadata.c:
+	  mxfmetadata: Initialize boolean to FALSE to fix valgrind warning
+	  Seems to be a false warning though.
+
+2016-01-07 14:08:39 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglsyncmeta.c:
+	  glsyncmeta: only flush with a shared context
+	  The wait code will flush for us for single context pipelines.
+
+2016-01-07 14:02:52 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcontext.c:
+	* gst-libs/gst/gl/gstglcontext.h:
+	* tests/check/libs/gstglcontext.c:
+	  glcontext: implement checking whether a context has been shared
+	  Some operations are unnecessary when running with only a single GL
+	  context.
+	  e.g. glFlush when setting a fence object as the flush happens on wait.
+	  API: gst_gl_context_is_shared
+
+2016-01-06 14:54:30 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: put boolean values into gboolean variables
+	  And remove superfluous assignments.
+
+2016-01-06 16:54:49 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/player/gstplayer.c:
+	  player: Only set the pipeline to PLAYING in play() if buffering>=100%
+	  Otherwise the application can break the buffering logic by setting the
+	  pipeline to PLAYING before we buffered enough.
+
+2016-01-05 17:41:23 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/elements/dash_demux.c:
+	  tests: dashdemux: add tests for post-seek segment boundaries check
+	  Checks if the post seek segment is what is expected.
+	  Also makes it easy to add more tests with different seeking flags using the
+	  same functions.
+
+2016-01-05 10:41:27 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/elements/hls_demux.c:
+	  tests: hlsdemux: add tests for seek with reverse rate and snap flags
+	  Add tests to ensure snap flags work as expected for reverse
+	  rates
+
+2016-01-05 10:39:11 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: stop reverse playback when we reach the limit
+	  Avoids downloading and pushing a full segment just to get 1 nanosecond
+	  of data. This happens frequently when seeking is done with flags
+	  that adjust to boundaries or when the start is aligned with segment
+	  starts. The later is common when segment durations is a multiple of
+	  a second.
+
+2016-01-05 09:16:45 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: fix reverse playback seek with snap flags
+	  Properly handle snap flags during reverse seeking. In this case
+	  the before/after are also reversed, so handle those as such.
+	  For example: with a sequence of 1s fragments:
+	  |-- 0 --|-- 1 --|-- 2 --|-- 3 --|
+	  If you seek to 1.5s it is inside fragment 1. With reverse and
+	  snap-before: should play from the end of fragment 1
+	  snap-after: should play from the end of fragment 0
+
+2016-01-05 09:01:10 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+	  adaptivedemux: correctly track segment.position in reverse playback
+	  For reverse, set position to segment.stop when starting and also
+	  don't set the position to fragment end timestamp when it finishes,
+	  just leave it at the fragment start.
+
+2016-01-05 08:59:26 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: simplify snap flags checking
+	  Replace:
+	  if (boolean) var = true;
+	  with:
+	  var = (boolean);
+
+2015-12-28 02:18:06 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* ext/hls/gsthlsdemux.c:
+	  hlsdemux: respect keyunit flag for position
+	  Set the segment start position when keyunit flag is active
+
+2015-12-24 18:49:39 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/elements/adaptive_demux_common.c:
+	* tests/check/elements/hls_demux.c:
+	  tests: hls_demux: add tests for seeking segment
+	  Tests that check that the segment sent after a seek is correct.
+	  Allows testing that multiple seeking flags work as expected
+
+2015-12-24 09:27:33 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/elements/adaptive_demux_common.c:
+	* tests/check/elements/adaptive_demux_common.h:
+	* tests/check/elements/adaptive_demux_engine.c:
+	* tests/check/elements/adaptive_demux_engine.h:
+	  tests: adaptive_demux: add function to be able to check demuxer events
+	  Allows writing tests that verify that events are correct.
+	  Useful to monitor and check segments after seeks, for example.
+
+2015-12-23 15:25:29 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/elements/adaptive_demux_common.c:
+	* tests/check/elements/adaptive_demux_common.h:
+	* tests/check/elements/dash_demux.c:
+	* tests/check/elements/hls_demux.c:
+	  tests: adaptive: update to allow more flexible seeking tests
+	  Allows defining a seek event to be able to change seeking parameters
+	  and create more seeking test scenarios
+
+2015-12-23 15:23:27 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/Makefile.am:
+	  tests: hlsdemux: fix makefile variable typo
+
+2016-01-06 16:50:00 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/avfvideosrc.m:
+	  applemedia: avfvideosrc: enable renegotiation
+	  We can actually renegotiate now, so remove old check which disabled it.
+
+2016-01-06 16:25:38 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstglcolorconvertelement.c:
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	* gst-libs/gst/gl/gstglcolorconvert.h:
+	  glcolorconvert: implement usage of a buffer pool
+	  Saves unnecessary glGenTextures and glDeleteTextures which may have a
+	  non-trivial cost.
+
+2016-01-06 15:50:07 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglbasememory.c:
+	  glbasememory: fix copying GstGLAllocationParams
+	  Fixes a GST_IS_GL_CONTEXT critical
+
+2016-01-06 15:44:52 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglmemorypbo.c:
+	  glmemorypbo: remove unused code
+	  https://bugzilla.gnome.org/show_bug.cgi?id=759679
+
+2016-01-06 13:20:17 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/avfvideosrc.m:
+	  applemedia: avfvideosrc: small negotiation fix
+	  Fix negotiation when GLMemory is requested but a context is not available
+
+2016-01-06 11:40:38 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/vtenc.c:
+	  applemedia: vtenc: accept UYVY on Mac
+	  When doing GLMemory avfvideosrc negotiates UYVY. This change allows avfvideosrc
+	  ! tee name=t ! ... ! glimagesink t. ! ... ! gldownload ! vtenc_h264 ! ...
+	  to do GLMemory and 0-copy with the encoder (with the CV meta).
+
+2016-01-06 11:29:15 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/avfvideosrc.m:
+	  applemedia: avfvideosrc: change texture format from BGRA to NV12 on iOS
+	  Change texture format from BGRA to NV12. This allows a pipeline like avfvideosrc
+	  ! tee name=t ! ... ! glimagesink t. ! ... ! gldownload ! vtenc_h264 ! ...  to
+	  negotiate GLMemory. This makes the glimagesink branch much faster (obviously)
+	  and triggers the 0-copy path between avfvideosrc and vtenc (using the CV meta).
+	  Combined this results in a huge perf improvement on iOS (25-30% of CPU time in a
+	  pipeline like the one above).
+	  Note that this doesn't introduce a new shader conversion in the sink, since BGRA
+	  textures had to be copied/converted from format=BGRA,texture-target=RECTANGLE to
+	  format=RGBA,texture-target=2D anyway.
+
+2016-01-04 20:26:09 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglcolorconvert.c:
+	* gst-libs/gst/gl/gstglupload.c:
+	* gst-libs/gst/gl/gstglutils.c:
+	* gst-libs/gst/gl/gstglutils.h:
+	  glupload: always add texture-target field to GL caps
+	  1. Various elements/base classes only perform a subset check on accept-caps
+	  2. Some GL elements have texture-target in their pad template
+	  3. When checking subsets, only the caps to check are allowed to contain extra
+	  fields.  If the 'template' caps have extra fields, the subset fails.
+	  Thus without texture-target on the caps, various accept-caps implementations
+	  were failing.
+	  Also, add some convenience functions for setting and retrieving
+	  texture targets to/from GValue.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=759860
+
+2015-12-29 18:16:04 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglupload.c:
+	  glupload: passthrough composition caps features
+	  Don't unconditionally add it to any and all caps transformations.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=759860
+
+2016-01-04 09:52:47 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/libs/gst-plugins-bad-libs-sections.txt:
+	* gst-libs/gst/player/gstplayer.c:
+	* gst-libs/gst/player/gstplayer.h:
+	* tests/check/libs/player.c:
+	* win32/common/libgstplayer.def:
+	  player: Remove gst_player_new() and make gst_player_new_full() the normal constructor
+	  In very few cases the simple version was actually needed and having the
+	  parameters hidden by a _full() version caused application that actually needed
+	  it to not use it.
+
+2016-01-04 01:03:08 +1100  Jan Schmidt <jan@centricular.com>
+
+	* gst-libs/gst/gl/gstglviewconvert.c:
+	* gst-libs/gst/gl/gstglviewconvert.h:
+	  glviewconvert: Fix stereoscopic handling w/ texture-target
+	  The addition of texture-target negotiation broke stereoscopic
+	  handling when not in passthrough mode, so fix that.
+
+2015-10-07 18:53:43 +0900  Hyunjun Ko <zzoon.ko@samsung.com>
+
+	* gst/sdp/gstsdpdemux.c:
+	  sdpdemux: replace duplicated codes to call new base sdp apis
+	  https://bugzilla.gnome.org/show_bug.cgi?id=745880
+
+2015-12-30 18:00:47 -0800  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* ext/rtmp/README:
+	  rtmp: refer to both elements in the README
+
+2015-12-29 14:35:14 -0800  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* ext/rtmp/gstrtmpsrc.c:
+	  rtmpsrc: check for failed RTMP context alloc
+	  Avoids an unlikely crash.
+	  Arguably, if allocation fails we have no chance of
+	  recovering but nonetheless, RTMP_Alloc can fail and
+	  librtmp's RTMP_init() (called next) assumes a non-NULL
+	  pointer is passed without checking.
+	  Additionally, unify exit path on error.
+
+2015-12-29 14:16:58 -0800  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* ext/rtmp/gstrtmpsink.c:
+	  rtmpsink: check for failed RTMP context alloc
+	  Avoids an unlikely crash.
+	  Arguably, if allocation fails we have no chance of
+	  recovering but nonetheless, RTMP_Alloc can fail and
+	  librtmp's RTMP_init() (called next) assumes a non-NULL
+	  pointer is passed without checking.
+	  Additionally, unify exit path on error.
+
+2015-12-29 11:58:31 -0800  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* ext/rtmp/gstrtmp.c:
+	  rtmp: correct librtmp log-level mappings
+	  Additionally, move to a switch in _set_debug_level()
+	  to make easier to follow and compare with the
+	  mappings in _log_callback()
+
+2015-12-30 13:16:40 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/codecparsers/gstvp9parser.c:
+	  codecparsers: vp9: minor clean-up
+	  Remove setting of parser variable to NULL after free,
+	  that makes no sense (and coverity is no doubt going
+	  to complain about it).
+
+2015-12-30 13:12:13 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/codecparsers/gstvp9parser.c:
+	* gst-libs/gst/codecparsers/gstvp9parser.h:
+	  codecparsers: vp9: fix macro namespacing and rename GstVp9InterpFilter
+
+2015-12-30 13:08:30 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/codecparsers/gstvp9parser.c:
+	* gst-libs/gst/codecparsers/gstvp9parser.h:
+	  codecparsers: vp9: fix doc typos and sprinkle some Since markers
+
+2015-12-30 11:03:04 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst-libs/gst/codecparsers/Makefile.am:
+	* gst-libs/gst/codecparsers/vp9utils.AUTHORS:
+	* gst-libs/gst/codecparsers/vp9utils.LICENSE:
+	* gst-libs/gst/codecparsers/vp9utils.PATENTS:
+	* gst-libs/gst/codecparsers/vp9utils.c:
+	* gst-libs/gst/codecparsers/vp9utils.h:
+	  codecparsers: vp9: move license blurb into header and remove aux files
+	  This is just a bunch of lookup tables..
+
+2015-12-30 11:54:25 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* win32/common/libgstcodecparsers.def:
+	  win32: Update libgstcodecparsers.def with the new symbols
+
+2015-12-30 11:54:14 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/codecparsers/dboolhuff.h:
+	  codecparsers: Add another G_GNUC_INTERNAL
+
+2015-12-30 11:40:59 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/codecparsers/dboolhuff.h:
+	* gst-libs/gst/codecparsers/nalutils.h:
+	* gst-libs/gst/codecparsers/parserutils.h:
+	* gst-libs/gst/codecparsers/vp8utils.h:
+	* gst-libs/gst/codecparsers/vp9utils.h:
+	  codecparsers: Spread some G_GNUC_INTERNAL in various places
+
+2015-12-30 11:38:14 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/codecparsers/vp9utils.c:
+	  vp9parser: Fix indentation to make gst-indent happier
+
+2015-12-30 11:36:45 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/codecparsers/Makefile.am:
+	* gst-libs/gst/codecparsers/gstvp9parser.c:
+	* gst-libs/gst/codecparsers/vp9utils.c:
+	* gst-libs/gst/codecparsers/vp9utils.h:
+	  vp9parser: Rename symbols to prevent symbol conflicts
+	  Also make clamp() a static function for the same reason and use CLAMP (as
+	  defined by GLib) in the GStreamer code.
+
+2015-12-30 11:19:33 +0200  Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+	* gst-libs/gst/codecparsers/Makefile.am:
+	* gst-libs/gst/codecparsers/gstvp9parser.c:
+	* gst-libs/gst/codecparsers/gstvp9parser.h:
+	* gst-libs/gst/codecparsers/vp9utils.AUTHORS:
+	* gst-libs/gst/codecparsers/vp9utils.LICENSE:
+	* gst-libs/gst/codecparsers/vp9utils.PATENTS:
+	* gst-libs/gst/codecparsers/vp9utils.c:
+	* gst-libs/gst/codecparsers/vp9utils.h:
+	  codecparsers: Add VP9 codec parser
+	  https://bugzilla.gnome.org/show_bug.cgi?id=757597
+
+2015-12-30 12:12:17 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglmemorypbo.c:
+	  glmemorypbo: fix wrapping data on GL 2.1
+	  GL 2.1 only supports pbo upload.
+	  The wrapped data pointer was only being set on the pbo memory and on the
+	  glmemory so when a download was requested (in GL 2.1), glmemory was
+	  allocating a new data pointer and thus not returning the wrapped data.
+
+2015-12-30 12:11:09 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglmemorypbo.c:
+	  glmemorypbo: only create a pbo memory if the context actually supports it
+	  e.g. GL <= 2.0 does not support pbo usage and GL 2.1 only supports pbo upload.
+
+2015-12-30 12:09:29 +1100  Matthew Waters <matthew@centricular.com>
+
+	* gst-libs/gst/gl/gstglmemory.c:
+	* gst-libs/gst/gl/gstglmemorypbo.c:
+	  glmemory: small code reformat
+	  makes the alloc_params selections fit on a single line.
+
+2015-12-30 12:06:17 +1100  Matthew Waters <matthew@centricular.com>
+
+	* tests/check/libs/gstglmemory.c:
+	  tests/glmemory: output data pointer values on failure
+	  Allows quicker inspection of what failed.
+
+2015-12-29 17:04:57 +1100  Matthew Waters <matthew@centricular.com>
+
+	* ext/gl/gstgleffects.c:
+	  gleffects: fix shader compilation with legacy opengl
+	  All the gleffects shaders can be run against a gles2 or a legacy opengl glsl
+	  compiler but weren't being advertised as such.
+	  Fixes gleffects under desktop opengl < 3.2.
+
+2015-12-29 18:01:30 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/gstglbasememory.c:
+	  glbasememory: Remove bogus NULL check
+	  CID 1346534
+
+2015-12-29 10:57:36 +1100  Alessandro Decina <alessandro.d@gmail.com>
+
+	* sys/applemedia/avfvideosrc.m:
+	  applemedia: avfvideosrc: output at highest fps/resolution by default
+	  Fixate to the highest possible resolution and fps. Otherwise by default we end
+	  up fixating at 2fps and the lowest supported resolution, which is hardly what
+	  someone who bought an overpriced smartphone wants.
+
+2015-12-28 15:53:59 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/glprototypes/sync.h:
+	  gl: Add \0 terminators for the Apple sync extension
+	  Otherwise GL initialization might check for extensions forever and never finishes.
+
+2015-12-28 14:41:59 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst-libs/gst/gl/gstglcontext.c:
+	  glcontext: Add some debug output when the GL thread is actually running
+
+2015-12-22 11:23:19 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: removed unnecessary space trimming in gst_dash_demux_parse_http_head
+	  sscanf has removed all spaces when it has constructed zone string. There is
+	  no need to search for leading spaces.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=759743
+
+2015-12-21 14:50:15 +0000  Florin Apostol <florin.apostol@oregan.net>
+
+	* ext/dash/gstdashdemux.c:
+	  dashdemux: accept 2 or 4 digit year when using HTTP HEAD for calculating clock compensation
+	  Convert year from 2 digits to 4 digits in gst_dash_demux_parse_http_head
+	  https://bugzilla.gnome.org/show_bug.cgi?id=759743
+	  Also updated references to Rfc822 to Rfc5322
+
+2015-12-27 11:37:09 +0100  Florent Thiéry <florent.thiery@ubicast.eu>
+
+	* ext/gl/gstglfiltershader.c:
+	  glshader: fix usage doc
+	  The property location has been changed in favor of vertex/fragment
+	  string properties; the doc had not been updated and was still referring
+	  to the previous property; also, now the #version header has become mandatory
+	  https://bugzilla.gnome.org/show_bug.cgi?id=759902
+
+2015-12-26 22:34:29 +0100  Florent Thiéry <florent.thiery@ubicast.eu>
+
+	* ext/gl/gstglimagesink.c:
+	  glimagesink: Post unhandled navigation events on the bus
+	  Based off xvimagesink implementation
+	  https://bugzilla.gnome.org/show_bug.cgi?id=759869
+
+2015-12-27 22:32:22 -0800  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* ext/opencv/gstmotioncells.cpp:
+	  motioncells: fix splitting of RGB color string
+	  No need to attempt splitting the RGB string in 255 tokens
+	  if we only expect 3.
+	  Left max_tokens at 4 to preserve the current logic (which
+	  allows for extra stuff at the end) and added a warning on
+	  parsing failure instead of silently discarding the value.
+
+2015-12-27 21:23:37 -0800  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* ext/opencv/gstmotioncells.cpp:
+	  motioncells: fix typo in header
+
+2015-12-27 21:19:19 -0800  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* ext/opencv/gstmotioncells.cpp:
+	  motioncells: fix misleading warning message
+	  calculate_motion != FALSE means the motion computation
+	  logic is disabled, not a mapping error.
+
+2015-12-27 21:11:18 -0800  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* ext/opencv/gstmotioncells.cpp:
+	  motioncells: rework property descriptions
+
+2015-12-27 01:11:42 -0800  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* ext/opencv/gstmotioncells.cpp:
+	  motioncells: use NULL instead of g_strdup(NULL)
+
+2015-12-28 09:04:12 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* gst-libs/gst/gl/gstglbufferpool.c:
+	  glbufferpool: Fix build error
+	  When GST_GL_HAVE_PLATFORM_EGL is not defined, then info variable
+	  will not be used and this results in build error
+	  https://bugzilla.gnome.org/show_bug.cgi?id=759913
+
+2015-12-24 15:28:26 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  Back to development
+
+=== release 1.7.1 ===
+
+2015-12-24 14:28:42 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* configure.ac:
+	* docs/plugins/gst-plugins-bad-plugins.args:
+	* docs/plugins/gst-plugins-bad-plugins.hierarchy:
+	* docs/plugins/inspect/plugin-accurip.xml:
+	* docs/plugins/inspect/plugin-adpcmdec.xml:
+	* docs/plugins/inspect/plugin-adpcmenc.xml:
+	* docs/plugins/inspect/plugin-aiff.xml:
+	* docs/plugins/inspect/plugin-asfmux.xml:
+	* docs/plugins/inspect/plugin-assrender.xml:
+	* docs/plugins/inspect/plugin-audiomixer.xml:
+	* docs/plugins/inspect/plugin-audiovisualizers.xml:
+	* docs/plugins/inspect/plugin-autoconvert.xml:
+	* docs/plugins/inspect/plugin-bayer.xml:
+	* docs/plugins/inspect/plugin-bz2.xml:
+	* docs/plugins/inspect/plugin-camerabin.xml:
+	* docs/plugins/inspect/plugin-chromaprint.xml:
+	* docs/plugins/inspect/plugin-coloreffects.xml:
+	* docs/plugins/inspect/plugin-curl.xml:
+	* docs/plugins/inspect/plugin-dataurisrc.xml:
+	* docs/plugins/inspect/plugin-debugutilsbad.xml:
+	* docs/plugins/inspect/plugin-dtsdec.xml:
+	* docs/plugins/inspect/plugin-dvb.xml:
+	* docs/plugins/inspect/plugin-dvbsuboverlay.xml:
+	* docs/plugins/inspect/plugin-dvdspu.xml:
+	* docs/plugins/inspect/plugin-faad.xml:
+	* docs/plugins/inspect/plugin-festival.xml:
+	* docs/plugins/inspect/plugin-fieldanalysis.xml:
+	* docs/plugins/inspect/plugin-flite.xml:
+	* docs/plugins/inspect/plugin-frei0r.xml:
+	* docs/plugins/inspect/plugin-gaudieffects.xml:
+	* docs/plugins/inspect/plugin-gdp.xml:
+	* docs/plugins/inspect/plugin-geometrictransform.xml:
+	* docs/plugins/inspect/plugin-gmedec.xml:
+	* docs/plugins/inspect/plugin-gsm.xml:
+	* docs/plugins/inspect/plugin-gstsiren.xml:
+	* docs/plugins/inspect/plugin-hls.xml:
+	* docs/plugins/inspect/plugin-id3tag.xml:
+	* docs/plugins/inspect/plugin-inter.xml:
+	* docs/plugins/inspect/plugin-interlace.xml:
+	* docs/plugins/inspect/plugin-jpegformat.xml:
+	* docs/plugins/inspect/plugin-mimic.xml:
+	* docs/plugins/inspect/plugin-mms.xml:
+	* docs/plugins/inspect/plugin-modplug.xml:
+	* docs/plugins/inspect/plugin-mpeg2enc.xml:
+	* docs/plugins/inspect/plugin-mpegpsdemux.xml:
+	* docs/plugins/inspect/plugin-mpegpsmux.xml:
+	* docs/plugins/inspect/plugin-mpegtsdemux.xml:
+	* docs/plugins/inspect/plugin-mpegtsmux.xml:
+	* docs/plugins/inspect/plugin-mpg123.xml:
+	* docs/plugins/inspect/plugin-mplex.xml:
+	* docs/plugins/inspect/plugin-neon.xml:
+	* docs/plugins/inspect/plugin-ofa.xml:
+	* docs/plugins/inspect/plugin-openal.xml:
+	* docs/plugins/inspect/plugin-opencv.xml:
+	* docs/plugins/inspect/plugin-opus.xml:
+	* docs/plugins/inspect/plugin-pcapparse.xml:
+	* docs/plugins/inspect/plugin-pnm.xml:
+	* docs/plugins/inspect/plugin-rawparse.xml:
+	* docs/plugins/inspect/plugin-removesilence.xml:
+	* docs/plugins/inspect/plugin-resindvd.xml:
+	* docs/plugins/inspect/plugin-rfbsrc.xml:
+	* docs/plugins/inspect/plugin-rtmp.xml:
+	* docs/plugins/inspect/plugin-schro.xml:
+	* docs/plugins/inspect/plugin-sdp.xml:
+	* docs/plugins/inspect/plugin-segmentclip.xml:
+	* docs/plugins/inspect/plugin-shm.xml:
+	* docs/plugins/inspect/plugin-smooth.xml:
+	* docs/plugins/inspect/plugin-soundtouch.xml:
+	* docs/plugins/inspect/plugin-spandsp.xml:
+	* docs/plugins/inspect/plugin-speed.xml:
+	* docs/plugins/inspect/plugin-subenc.xml:
+	* docs/plugins/inspect/plugin-videoparsersbad.xml:
+	* docs/plugins/inspect/plugin-voaacenc.xml:
+	* docs/plugins/inspect/plugin-voamrwbenc.xml:
+	* docs/plugins/inspect/plugin-waylandsink.xml:
+	* docs/plugins/inspect/plugin-y4mdec.xml:
+	* gst-plugins-bad.doap:
+	* win32/common/config.h:
+	  Release 1.7.1
+
+2015-12-24 14:00:54 +0100  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/af.po:
+	* po/az.po:
+	* po/bg.po:
+	* po/ca.po:
+	* po/cs.po:
+	* po/da.po:
+	* po/de.po:
+	* po/el.po:
+	* po/en_GB.po:
+	* po/eo.po:
+	* po/es.po:
+	* po/eu.po:
+	* po/fi.po:
+	* po/fr.po:
+	* po/gl.po:
+	* po/hr.po:
+	* po/hu.po:
+	* po/id.po:
+	* po/it.po:
+	* po/ja.po:
+	* po/ky.po:
+	* po/lt.po:
+	* po/lv.po:
+	* po/mt.po:
+	* po/nb.po:
+	* po/nl.po:
+	* po/or.po:
+	* po/pl.po:
+	* po/pt_BR.po:
+	* po/ro.po:
+	* po/ru.po:
+	* po/sk.po:
+	* po/sl.po:
+	* po/sq.po:
+	* po/sr.po:
+	* po/sv.po:
+	* po/tr.po:
+	* po/uk.po:
+	* po/vi.po:
+	* po/zh_CN.po:
+	  Update .po files
 
 2015-12-24 12:23:00 +0100  Sebastian Dröge <sebastian@centricular.com>
 
diff --git a/Makefile.am b/Makefile.am
index 6f7bcbf..357faec 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -56,6 +56,7 @@
 	$(top_builddir)/ext/hls/.libs/libgstfragmented* \
 	$(top_builddir)/ext/ivorbis/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/ext/jack/.libs/*.{so,dll,DLL,dylib} \
+	$(top_builddir)/ext/mpg123/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/aacparse/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/amrparse/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/audioparsers/.libs/*.{so,dll,DLL,dylib} \
@@ -63,6 +64,7 @@
 	$(top_builddir)/gst/imagefreeze/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/mpeg4videoparse/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/qtmux/.libs/*.{so,dll,DLL,dylib} \
+	$(top_builddir)/gst/rtp/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/rtpmux/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/rtpvp8/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/scaletempo/.libs/*.{so,dll,DLL,dylib} \
@@ -102,6 +104,7 @@
 	$(top_srcdir)/gst/qtmux \
 	$(top_srcdir)/gst/rtpmux \
 	$(top_srcdir)/gst/rtpvp8 \
+	$(top_srcdir)/gst/rtp \
 	$(top_srcdir)/gst/scaletempo \
 	$(top_srcdir)/gst/selector \
 	$(top_srcdir)/gst/shapewipe \
@@ -120,6 +123,7 @@
 	$(top_srcdir)/ext/ivorbis \
 	$(top_srcdir)/ext/jack \
 	$(top_srcdir)/ext/metadata \
+	$(top_srcdir)/ext/mpg123 \
 	$(top_srcdir)/ext/swfdec \
 	$(top_srcdir)/ext/tarkin \
 	$(top_srcdir)/ext/theora \
diff --git a/Makefile.in b/Makefile.in
index f7d62bb..125ccc0 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -125,16 +125,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
@@ -208,7 +207,7 @@
 	$(top_srcdir)/common/release.mak \
 	$(top_srcdir)/common/win32.mak ABOUT-NLS AUTHORS COPYING \
 	COPYING.LIB ChangeLog INSTALL NEWS README compile config.guess \
-	config.rpath config.sub depcomp install-sh ltmain.sh missing
+	config.rpath config.sub install-sh ltmain.sh missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -335,7 +334,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -357,7 +355,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -379,9 +376,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -543,6 +537,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -556,8 +551,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -644,8 +637,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -697,6 +688,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -717,6 +709,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -754,7 +748,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -832,6 +825,7 @@
 	$(top_builddir)/ext/hls/.libs/libgstfragmented* \
 	$(top_builddir)/ext/ivorbis/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/ext/jack/.libs/*.{so,dll,DLL,dylib} \
+	$(top_builddir)/ext/mpg123/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/aacparse/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/amrparse/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/audioparsers/.libs/*.{so,dll,DLL,dylib} \
@@ -839,6 +833,7 @@
 	$(top_builddir)/gst/imagefreeze/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/mpeg4videoparse/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/qtmux/.libs/*.{so,dll,DLL,dylib} \
+	$(top_builddir)/gst/rtp/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/rtpmux/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/rtpvp8/.libs/*.{so,dll,DLL,dylib} \
 	$(top_builddir)/gst/scaletempo/.libs/*.{so,dll,DLL,dylib} \
@@ -878,6 +873,7 @@
 	$(top_srcdir)/gst/qtmux \
 	$(top_srcdir)/gst/rtpmux \
 	$(top_srcdir)/gst/rtpvp8 \
+	$(top_srcdir)/gst/rtp \
 	$(top_srcdir)/gst/scaletempo \
 	$(top_srcdir)/gst/selector \
 	$(top_srcdir)/gst/shapewipe \
@@ -896,6 +892,7 @@
 	$(top_srcdir)/ext/ivorbis \
 	$(top_srcdir)/ext/jack \
 	$(top_srcdir)/ext/metadata \
+	$(top_srcdir)/ext/mpg123 \
 	$(top_srcdir)/ext/swfdec \
 	$(top_srcdir)/ext/tarkin \
 	$(top_srcdir)/ext/theora \
@@ -1425,7 +1422,10 @@
 	  if test "x$$libso" != "x"; then \
 	    echo Checking symbols in $$libso; \
 	    if ! ($(top_srcdir)/common/check-exports $$libdef $$libso) ; then \
-	      fail=1; \
+	      echo "$$libdef"; \
+	      if test "$$libbase" != "libgstgl"; then \
+	        fail=1; \
+	      fi; \
 	    fi; \
 	  fi; \
 	done ; \
diff --git a/NEWS b/NEWS
index a4bffc6..a4a5e76 100644
--- a/NEWS
+++ b/NEWS
@@ -1,2 +1,2 @@
-This is GStreamer 1.7.1
+This is GStreamer 1.7.2
 
diff --git a/README b/README
index de0e341..fa53f95 100644
--- a/README
+++ b/README
@@ -179,8 +179,8 @@
   make install
 
 - try out a simple test:
-  gst-launch-1.0 -v fakesrc num_buffers=5 ! fakesink
-  (If you didn't install GStreamer, prefix gst-launch-1.0 with tools/)
+  gst-launch -v fakesrc num_buffers=5 ! fakesink
+  (If you didn't install GStreamer, prefix gst-launch with tools/)
 
   If it outputs a bunch of messages from fakesrc and fakesink, everything is
   ok.
diff --git a/RELEASE b/RELEASE
index 790f691..5f1c60b 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,8 +1,7 @@
 
-Release notes for GStreamer Bad Plugins 1.7.1
+Release notes for GStreamer Bad Plugins 1.7.2
 
-
-The GStreamer team is pleased to announce the first release of the unstable
+The GStreamer team is pleased to announce the second release of the unstable
 1.7 release series. The 1.7 release series is adding new features on top of
 the 1.0, 1.2, 1.4 and 1.6 series and is part of the API and ABI-stable 1.x release
 series of the GStreamer multimedia framework. The unstable 1.7 release series
@@ -14,7 +13,6 @@
 during the unstable 1.7 release series.
 
 
-
 "That an accusation?"
 
 
@@ -63,150 +61,67 @@
 
 Bugs fixed in this release
      
-      * 759679 : gl: unused function '_get_plane_width'
-      * 759729 : audiofxbad: Name collision with new GstAudioChannelMix API from libgstaudio
-      * 731204 : androidmedia: Implement zerocopy rendering
-      * 733467 : Cannot play JPEG2000 encoded QuickTime video
-      * 733819 : Port teletextdec to 1.0
+      * 719849 : [PLUGIN-MOVE] move mpg123 to -ugly
+      * 729485 : avfvideosrc: Cannot reconfigure caps
       * 733959 : hlsdemux: download bitrate algorithms don't reflect real download rate
-      * 743345 : glupload: Add support for dmabuf
-      * 744047 : Port acmmp3dec plugin to 1.x
-      * 745564 : qtkitvideosrc: fails to build on OSX > = 10.9 and not using cerbero (ex: MacPorts)
-      * 747482 : waylandsink: need exception code in gst_wayland_sink_set_window_handle() and gst_wayland_sink_set_context()
-      * 747774 : dashdemux: text streams support
-      * 748259 : New audio/video level element
-      * 748316 : hlsdemux: The end offset (range_end) of a segment is not calculated properly in the m3u8 parser
-      * 748337 : ksvideosrc: dropping frames
-      * 749653 : dashdemux: Implement binary search for stream_sidx_seek
-      * 750402 : tsdemux: pads are removed before new ones are added
-      * 750847 : dashdemux: variables containing time information should be guint64 not gint64
-      * 750852 : dashdemux: idRepresentationType should be StringNoWhitespaceType but accepts spaces
-      * 750869 : dashdemux: assertion raised if profiles information is not provided
-      * 751068 : gl: Use pkg-config if found to configure GL/EGL/GLES (as provided by mesa and libmali)
-      * 751529 : dashdemux: stream- > presentationTimeOffset is not always set
-      * 751650 : dashdemux: extra validations needed when parsing the representation element
-      * 751735 : dashdemux: incorrect parsing and handling of segment templates
-      * 751832 : dashdemux: segment list inherits segment URLs element from parent node
-      * 752326 : dashdemux: parser should reject MPD files with negative mediaPresentationDuration
-      * 752329 : dashdemux: parser should reject MPD files with negative Period duration
-      * 752336 : dashdemux: duration field could overflow
-      * 752340 : dashdemux: period bitstreamSwitching is not used
-      * 752367 : dashdemux: adaptation set language could be better detected
-      * 752409 : dashdemux: gst_mpd_parser_get_stream_presentation_offset returns a wrong value
-      * 752415 : dashdemux: provide a default suggestedPresentationDelay
-      * 752429 : dashdemux: negative numbers are successfully read into unsigned variables
-      * 752492 : dashdemux: suggestedPresentationDelay should be positive
-      * 752496 : dashdemux: illegal memory access when the list of S nodes is greater than the list of SegmentURL nodes
-      * 753405 : nvenc element
-      * 753613 : mssdemux: PlayReady WRM parsing support
-      * 753821 : assrender: improve overlay blending performance
-      * 753824 : assrender: render overlay using the video output window size
-      * 753854 : gstreamer: bad: Fix memory leaks when context parse fails.
-      * 753885 : opencv: use gst_opencv_video_filter_set_in_place()
-      * 753889 : opencv: cvlaplace: add scale and shift properties
-      * 753890 : dashdemux: PROP_BANDWIDTH_USAGE should be deprecated
-      * 753940 : opencv: handdetect: haar cascade files path is wrong in gst-uninstalled
-      * 754057 : sfdec: Fix a typo in goto variable name
-      * 754247 : vc1parse: add break to switch case
-      * 754251 : qtsink: explicitely fallthrough switch statement
-      * 754253 : qml: remove overwritten value
-      * 754285 : compositor: add unit test for ensuring that sinkpads are sorted by zorder
-      * 754466 : qml: add android support
-      * 754786 : vtdec: fails on OSX with GL3 context
-      * 755100 : qt: add build support for iOS/OSX
-      * 755105 : dashdemux: tests: add test for fix of the period start time scaling
-      * 755120 : dashdemux: stop_updates_task needs to be accessed with the lock taken
-      * 755121 : dahsdemux: task is signaled to stop without stop condition being set
-      * 755161 : h264parse, h265parse: initialize picture parameter set structure
-      * 755169 : dashdemux: can we have multiple seek events at the same time?
-      * 755226 : dashdemux: download_finish variable is not reset safely
-      * 755232 : dashdemux: demux- > cancelled is not properly protected
-      * 755319 : configure: add --with-hls-crypto=auto|nettle|libgcrypt|openssl option
-      * 755486 : glimagesink: doesn't support YUY2 properly
-      * 755656 : adaptivedemux: remove unused but set variable
-      * 756209 : adaptivedemux: adaptive demux hangs if src element cannot be started
-      * 756237 : adaptivedemux: waiting for playlist updates in case of fragment errors does not wait
-      * 756239 : adaptivedemux: header is not re-downloaded in case of errors
-      * 756240 : adaptivedemux: download thread should stop in case of multiple download errors
-      * 756322 : dashdemux: add unit test for dashdemux
-      * 756424 : docs: documentation not committed
-      * 756492 : gl: fix leak in gst_gl_insert_debug_marker
-      * 756556 : adaptivedemux: hang if application quits just after start
-      * 757018 : aggregator: Add create_new_pad() vfunc to allow subclasses to override the default behaviour
-      * 757049 : tsdemux: Add support for Opus
-      * 757050 : liveadder: type change of " latency " property might cause crashes
-      * 757152 : opus: Add proper multichannel support
-      * 757153 : opus: Handle start/end trimming
-      * 757245 : dashdemux: tests: add more tests for BaseURL
-      * 757285 : androidmedia: Zerocopy decoding potentially slower than before due to missing queueing
-      * 757335 : adaptivedemux: release manifest lock before changing internal pipeline state
-      * 757336 : adaptivedemux: reset download_finished before starting the src element
-      * 757337 : adaptivedemux: release manifest lock before sending flush stop event
-      * 757354 : adaptivedemux: tests: add download error test
-      * 757359 : adaptivedemux: fix a missing lock in write to stream- > last_ret
-      * 757361 : adaptivedemux: tests: add query and fragment download error test
-      * 757619 : hlsdemux: incorrect segment start value on bitrate switch
-      * 757688 : rtponviftimestamp: element does not work properly
-      * 757776 : dashdemux: Unit test fails reliably
-      * 757801 : tests:aggregator: tc failure
-      * 757825 : ivfparse: Fix the wrong width & height parsing of vp9 bitstream
-      * 757859 : adaptivedemux: memory leak in adaptive demux src bin
-      * 757903 : mpd verification broke http://www.bok.net/dash/tears_of_steel/cleartext/stream.mpd
-      * 757938 : glcolorconvert fails on OSX
-      * 757947 : adaptivedemux: http src errors are no longer detected
-      * 757974 : glcolorconvert: Fix memory leak while running glcolorconvert test
-      * 758010 : mpegtsdemux: stream- > section_data leak if there is a stream discontinuity
-      * 758188 : dashdemux: illegal memory access in gst_mpd_client_get_last_fragment_timestamp_end
-      * 758228 : amcvideodec: Don't require a non-zero buffer size when doing decoding to a surface
-      * 758233 : mpdparser: remove unused functions gst_mpdparser_get_chunk_by_index and gst_mpdparser_find_segment_by_index
-      * 758384 : dashdemux: tests: refactor into adaptive_engine components
-      * 758386 : hlsdemux: incorrect calculation of seek range of non-live streams
-      * 758405 : h264/h265parse: Should resend pps/sps after seeks in byte-stream mode
-      * 758410 : mpdparser: parsing of dateTime fields does not read the microseconds part
-      * 758515 : dashdemux:  Set framerate based on the Manifest on the caps
-      * 758517 : spu-pgs: Fix array memory leak
-      * 758586 : mssdemux: missing depth in audio caps
-      * 758593 : mpdparser: remove gst_mpd_client_check_time_position
-      * 758694 : android media fails to update affine transformation meta
-      * 758728 : id3mux: write private data tag
-      * 758820 : glwindow: Fix memory leak of navigation thread
-      * 758877 : glupload: Should not offer its allocator unless memory:GLMemory is negotiated
-      * 758904 : gl: YUY2 conversion broken
-      * 758946 : hlsdemux: change of playlist to the same playlist after first fragment, when connection speed is set
-      * 758987 : hlsdemux: Resync live playlists to the 3rd newest fragment if we fall off the playlist
-      * 759108 : hlsdemux: add support for snapping seek flags
-      * 759118 : mxfdemux: IndexTableSegment handling is wrong
-      * 759432 : bad plugins: Fix example pipelines
-      * 759443 : videoframe-audiolevel: Fix possible division by zero
-      * 759484 : directsoundsrc: add device property as it is done in directsoundsink
-      * 759518 : yadif: Fix memory leak and mishandling.
-      * 759519 : gdppay: Fix buffer memory leak
-      * 759520 : pnmenc: Fix memory leaks/mishandling
-      * 759522 : pnmdec: Fix memory leaks
-      * 759523 : combdetect: Fix value memory leak
-      * 759525 : ivtc: Fix value memory leak
-      * 759534 : dashdemux: clock compensation is not correctly used in get_fragment_waiting_time
-      * 759537 : dashdemux: clock compensation: clock_cond is not used and should be removed
-      * 759547 : dashdemux: insufficient validation of UTCtiming element
-      * 759592 : Seek with negative rates appears to be broken with hlsdemux
-      * 759600 : decklinkvideosink: Made " auto " mode work according to caps
-      * 759728 : teletextdec: build error with clang
-      * 759742 : nvenc: very high CPU load when multiple nvenc instances are initialised at the same time
-      * 752528 : OpenCV hand gesture detection does not work with OpenCV newer than 2.4.10
-      * 753994 : opencv/faceblur: does not work with OpenCV newer than 2.4.10
-      * 754148 : OpenCV port remaining elements to C++ and new API
+      * 737786 : android: Upstream one of the android video source implementations
+      * 744367 : mpegtsmux: add HEVC support
+      * 748507 : mpegtsmux: set non-0 payload length in PES header if video ES packet is small enough
+      * 752374 : dashdemux: gst_dash_demux_get_live_seek_range should not return negative values
+      * 752688 : wayland: improve check for wayland-scanner
+      * 756207 : videoaggregator: Setting aspect ratio crops the frame
+      * 756252 : Resurrect NetSim
+      * 757597 : codecparsers: Add VP9 parser
+      * 757602 : adaptivedemux: improved error message if availabilityStartTime is missing for a live stream
+      * 757655 : dashdemux: cannot get segment availability start time if segment duration is not present
+      * 757951 : adaptivedemux: set src element to ready before flushing the input pad
+      * 758516 : mpegtsbase: Add condition to check for non working negative rate
+      * 759158 : dashdemux/mssdemux: add support for snapping seek flags
+      * 759679 : gl: unused function '_get_plane_width'
+      * 759743 : dashdemux: getting clock compensation using HTTP HEAD uses an incorrect year
+      * 759860 : glupload: Attaches composition overlay when not supported
+      * 759869 : glimagesink: navigation messages are not posted on the bus
+      * 759902 : glshader: fix usage documentation
+      * 759913 : glbufferpool: Fix build error
+      * 760090 : gst-plugins-bad: implicit declaration of function ‘gst_init’
+      * 760120 : dashdemux: memory leak in gst_dash_demux_update_manifest_data
+      * 760242 : rtmpsink: should get streamheaders from caps instead of first buffer.
+      * 760270 : videoparse: add support of padded video
+      * 760328 : adaptivedemux: tests: clean tests
+      * 760559 : glvideomixer ! glimagesink deadlocks on resize
+      * 760594 : decklinkvideosrc: does not support capture in RGB mode
+      * 760600 : tests: memory leak in test HTTP source
+      * 760696 : gl: Regression with caps ref-couting
+      * 760873 : GstGLVideoMixerPad vertex_buffer leaks when pad dynamic removed
+      * 760936 : dash, mpdparser: Fix the bug when getting the URL of index segment by SegmentBase
+      * 760972 : glwindow: Fix android build
+      * 760982 : adaptivedemux: memory leak of stream- > internal_pad
+      * 761014 : h264parse: sends unnecessary caps events/queries for every (unchanging) SPS/PPS when converting to byte-stream (android mediacodec)
+      * 761108 : uvch264_src: Fix caps memory leak
+      * 761109 : acmenc/acmmp3dec: remove unnecessary break after return
+      * 761230 : tinyalsa: Add a new sink plugin using tinyalsa
+      * 761458 : adaptivedemux: Unused GstSegment variable in download loop
+      * 761460 : player: Makefile does not use configured PKG_CONFIG_PATH when performing introspection scan
+      * 761519 : gl: Activate " qos " in filters
+      * 761538 : gst_gl_insert_debug_marker called with no current context
+      * 761578 : GstGLContext  didn't get unref correctly
+      * 761606 : Move H.265 RTP payloader/depayloader from -bad to -good
+      * 761704 : POTFILES.skip is out of date
+      * 762013 : curlhttpsink: Problem in curlhttpsink when qtmux uses faststart, don't send empty buffers
+      * 762171 : soundtouch plugin is not shipped
+      * 758158 : opusdec: in-band FEC has no effect
 
 ==== Download ====
 
 You can find source releases of gst-plugins-bad in the download
-directory: http://gstreamer.freedesktop.org/src/gst-plugins-bad/
+directory: https://gstreamer.freedesktop.org/src/gst-plugins-bad/
 
 The git repository and details how to clone it can be found at
 http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/
 
 ==== Homepage ====
 
-The project's website is http://gstreamer.freedesktop.org/
+The project's website is https://gstreamer.freedesktop.org/
 
 ==== Support and Bugs ====
 
@@ -231,71 +146,43 @@
         
 Contributors to this release
     
-      * Aleix Conchillo Flaqué
       * Alessandro Decina
       * Alex Ashley
-      * André Draszik
-      * Antoine Jacoutot
-      * Antonio Ospite
-      * Arnaud Vrac
-      * Branko Subasic
-      * Chris Bass
-      * Daniel Kamil Kozar
-      * Dave Craig
-      * Duncan Palmer
-      * Edward Hervey
-      * Etienne Peron
+      * Arun Raghavan
+      * Aurélien Zanelli
+      * Bob Holcomb
+      * David Fernandez
+      * David Waring
+      * Florent Thiéry
       * Florin Apostol
-      * Frédéric Wang
       * George Kiagiadakis
-      * Guillaume Desmottes
       * Haihua Hu
-      * Havard Graff
-      * Heinrich Fink
-      * Hyunil Park
+      * Holger Kaelberer
       * Hyunjun Ko
+      * Ilya Konstantinov
       * Jan Schmidt
-      * Jimmy Ohn
       * John Chang
-      * John Slade
-      * Julian Bouzas
       * Julien Isorce
-      * Linus Svensson
-      * Lubosz Sarnecki
+      * Julien MOUTTE
+      * Julien Moutte
+      * Justin Kim
       * Luis de Bethencourt
-      * Maroš Ondrášek
-      * Mathias Hasselmann
-      * Matthew Marsh
+      * Matt Crane
       * Matthew Waters
-      * Matthieu Bouron
-      * Miguel París Díaz
       * Nicolas Dufresne
-      * Nicolas Huet
-      * Nirbheek Chauhan
-      * Olivier Crête
-      * Paolo Pettinato
-      * Paul Arzelier
       * Philippe Normand
-      * Philippe Renon
-      * Polochon_street
-      * Ravi Kiran K N
+      * Piotr Drąg
       * Reynaldo H. Verdejo Pinochet
-      * Roman Nowicki
-      * Santiago Carot-Nemesio
       * Sebastian Dröge
+      * Sergey Borovkov
       * Sreerenj Balachandran
-      * Stefan Sauer
+      * Stian Selnes
       * Thiago Santos
       * Thibault Saunier
-      * Thomas Roos
+      * Tim Sheridan
       * Tim-Philipp Müller
-      * Vanessa Chipirrás Navalón
       * Vincent Penquerc'h
-      * Vineeth T M
       * Vineeth TM
-      * Vivia Nikolaidou
-      * Víctor Manuel Jáquez Leal
-      * Xavier Claessens
-      * plamot
-      * suhwang.kim
+      * Wang Xin-yu (王昕宇)
+      * Youness Alaoui
  
\ No newline at end of file
diff --git a/aclocal.m4 b/aclocal.m4
index 2144811..2162ef8 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1479,7 +1479,6 @@
 m4_include([common/m4/orc.m4])
 m4_include([common/m4/pkg.m4])
 m4_include([m4/gettext.m4])
-m4_include([m4/gsettings.m4])
 m4_include([m4/gst-fionread.m4])
 m4_include([m4/gst-sdl.m4])
 m4_include([m4/iconv.m4])
diff --git a/common/Makefile.in b/common/Makefile.in
index a4277f5..a4a1f99 100644
--- a/common/Makefile.in
+++ b/common/Makefile.in
@@ -114,16 +114,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -297,7 +296,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -319,7 +317,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -341,9 +338,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -505,6 +499,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -518,8 +513,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -606,8 +599,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -659,6 +650,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -679,6 +671,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -716,7 +710,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/common/check.mak b/common/check.mak
index 25a16e6..66497ff 100644
--- a/common/check.mak
+++ b/common/check.mak
@@ -12,36 +12,32 @@
 endif
 
 LOOPS ?= 10
+AM_TESTS_ENVIRONMENT = CK_DEFAULT_TIMEOUT=20
 
 # run any given test by running make test.check
 # if the test fails, run it again at at least debug level 2
 %.check: %
 	@$(AM_TESTS_ENVIRONMENT)					\
-	CK_DEFAULT_TIMEOUT=20					\
 	$* ||							\
 	$(AM_TESTS_ENVIRONMENT)					\
 	GST_DEBUG=$$GST_DEBUG,*:2				\
-	CK_DEFAULT_TIMEOUT=20					\
 	$*
 
 # just like 'check', but don't run it again if it fails (useful for debugging)
 %.check-norepeat: %
 	@$(AM_TESTS_ENVIRONMENT)					\
-	CK_DEFAULT_TIMEOUT=20					\
 	$*
 
 # run any given test in a loop
 %.torture: %
 	@for i in `seq 1 $(LOOPS)`; do				\
 	$(AM_TESTS_ENVIRONMENT)					\
-	CK_DEFAULT_TIMEOUT=20					\
 	$*; done
 
 # run any given test in an infinite loop
 %.forever: %
 	@while true; do						\
 	$(AM_TESTS_ENVIRONMENT)					\
-	CK_DEFAULT_TIMEOUT=20					\
 	$* || break; done
 
 # valgrind any given test by running make test.valgrind
diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in
index 1f3f788..d4ec28c 100644
--- a/common/m4/Makefile.in
+++ b/common/m4/Makefile.in
@@ -114,16 +114,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -237,7 +236,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -259,7 +257,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -281,9 +278,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -445,6 +439,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -458,8 +453,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -546,8 +539,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -599,6 +590,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -619,6 +611,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -656,7 +650,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/common/win32.mak b/common/win32.mak
index 30e347e..87cd346 100644
--- a/common/win32.mak
+++ b/common/win32.mak
@@ -44,7 +44,10 @@
 	  if test "x$$libso" != "x"; then \
 	    echo Checking symbols in $$libso; \
 	    if ! ($(top_srcdir)/common/check-exports $$libdef $$libso) ; then \
-	      fail=1; \
+	      echo "$$libdef"; \
+	      if test "$$libbase" != "libgstgl"; then \
+	        fail=1; \
+	      fi; \
 	    fi; \
 	  fi; \
 	done ; \
diff --git a/config.h.in b/config.h.in
index 3ea2af3..3e5b3f7 100644
--- a/config.h.in
+++ b/config.h.in
@@ -28,12 +28,6 @@
    language is requested. */
 #undef ENABLE_NLS
 
-/* The x in 2.x */
-#undef FAAD2_MINOR_VERSION
-
-/* Define if AAC is using new api prefix */
-#undef FAAD_IS_NEAAC
-
 /* gettext package name */
 #undef GETTEXT_PACKAGE
 
@@ -241,7 +235,7 @@
 /* Define to enable AAC encoder plug-in (used by faac). */
 #undef HAVE_FAAC
 
-/* Define to enable AAC decoder plug-in (used by faad). */
+/* Define to enable FAAD2 AAC decoder plug-in (used by faad). */
 #undef HAVE_FAAD
 
 /* Define to enable linux framebuffer (used by fbdevsink). */
@@ -277,6 +271,9 @@
 /* Define to 1 if the system has the type `GLeglImageOES'. */
 #undef HAVE_GLEGLIMAGEOES
 
+/* Define to 1 if the system has the type `GLint64'. */
+#undef HAVE_GLINT64
+
 /* Define to 1 if the system has the type `GLintptr'. */
 #undef HAVE_GLINTPTR
 
@@ -298,9 +295,6 @@
 /* Use graphene */
 #undef HAVE_GRAPHENE
 
-/* Define to enable GSettings plugin (used by gsettings). */
-#undef HAVE_GSETTINGS
-
 /* Define to enable GSM library (used by gsmenc gsmdec). */
 #undef HAVE_GSM
 
@@ -382,9 +376,6 @@
 /* Define to enable mpeg2enc (used by mpeg2enc). */
 #undef HAVE_MPEG2ENC
 
-/* Define to enable mpg123 audio decoder (used by mpg123). */
-#undef HAVE_MPG123
-
 /* Define to enable mplex (used by mplex). */
 #undef HAVE_MPLEX
 
@@ -534,9 +525,6 @@
 /* Define to enable rsvg decoder (used by rsvg). */
 #undef HAVE_RSVG
 
-/* Have RSVG 2.36.2 or newer */
-#undef HAVE_RSVG_2_36_2
-
 /* Define to enable rtmp library (used by rtmp). */
 #undef HAVE_RTMP
 
@@ -618,6 +606,9 @@
 /* Define to enable timidity midi soft synth plugin (used by timidity). */
 #undef HAVE_TIMIDITY
 
+/* Define to enable tinyalsa (used by tinyalsa). */
+#undef HAVE_TINYALSA
+
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
@@ -645,6 +636,9 @@
 /* Define to enable vo-amrwbenc library (used by vo-amrwbenc). */
 #undef HAVE_VOAMRWBENC
 
+/* Define to enable Vulkan elements (used by vulkan). */
+#undef HAVE_VULKAN
+
 /* Define to enable WASAPI plug-in (used by wasapi). */
 #undef HAVE_WASAPI
 
@@ -708,8 +702,7 @@
 /* gettext locale dir */
 #undef LOCALEDIR
 
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
 #undef LT_OBJDIR
 
 /* Define if the old MusePack API is used */
diff --git a/configure b/configure
index 985e6ff..fc47300 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.7.1.
+# Generated by GNU Autoconf 2.69 for GStreamer Bad Plug-ins 1.7.2.
 #
 # 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.7.1'
-PACKAGE_STRING='GStreamer Bad Plug-ins 1.7.1'
+PACKAGE_VERSION='1.7.2'
+PACKAGE_STRING='GStreamer Bad Plug-ins 1.7.2'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
@@ -668,14 +668,6 @@
 USE_SNDIO_FALSE
 USE_SNDIO_TRUE
 SNDIO_LIBS
-USE_GSETTINGS_FALSE
-USE_GSETTINGS_TRUE
-GSETTINGS_RULES
-GLIB_COMPILE_SCHEMAS
-gsettingsschemadir
-GSETTINGS_DISABLE_SCHEMAS_COMPILE
-GSETTINGS_LIBS
-GSETTINGS_CFLAGS
 USE_SPANDSP_FALSE
 USE_SPANDSP_TRUE
 SPANDSP_LIBS
@@ -747,6 +739,9 @@
 USE_LIBVISUAL_TRUE
 LIBVISUAL_LIBS
 LIBVISUAL_CFLAGS
+USE_VULKAN_FALSE
+USE_VULKAN_TRUE
+VULKAN_LIBS
 USE_QT_FALSE
 USE_QT_TRUE
 QT_MAC_LIBS
@@ -778,8 +773,6 @@
 USE_GL_TRUE
 USE_RSVG_FALSE
 USE_RSVG_TRUE
-RSVG_2_36_2_LIBS
-RSVG_2_36_2_CFLAGS
 RSVG_LIBS
 RSVG_CFLAGS
 USE_PVR_FALSE
@@ -837,10 +830,6 @@
 MPLEX_LDFLAGS
 MPLEX_LIBS
 MPLEX_CFLAGS
-USE_MPG123_FALSE
-USE_MPG123_TRUE
-MPG123_LIBS
-MPG123_CFLAGS
 USE_MPEG2ENC_FALSE
 USE_MPEG2ENC_TRUE
 MPEG2ENC_LIBS
@@ -907,7 +896,6 @@
 USE_FBDEV_TRUE
 USE_FAAD_FALSE
 USE_FAAD_TRUE
-FAAD_IS_NEAAC
 FAAD_LIBS
 HAVE_FAAD
 USE_FAAC_FALSE
@@ -930,11 +918,11 @@
 USE_WEBP_TRUE
 WEBP_LIBS
 WEBP_CFLAGS
-wayland_scanner
 USE_WAYLAND_FALSE
 USE_WAYLAND_TRUE
 WAYLAND_LIBS
 WAYLAND_CFLAGS
+wayland_scanner
 USE_DIRECTFB_FALSE
 USE_DIRECTFB_TRUE
 DIRECTFB_LIBS
@@ -988,6 +976,8 @@
 USE_ASSRENDER_TRUE
 ASSRENDER_LIBS
 ASSRENDER_CFLAGS
+USE_TINYALSA_FALSE
+USE_TINYALSA_TRUE
 USE_NVENC_GST_GL_FALSE
 USE_NVENC_GST_GL_TRUE
 USE_NVENC_FALSE
@@ -1050,6 +1040,10 @@
 DIRECTSOUND_LIBS
 DIRECTX_LDFLAGS
 DIRECTX_CFLAGS
+USE_XCB_FALSE
+USE_XCB_TRUE
+XCB_LIBS
+XCB_CFLAGS
 HAVE_JPEG_FALSE
 HAVE_JPEG_TRUE
 HAVE_JPEG
@@ -1151,8 +1145,6 @@
 USE_PLUGIN_SDP_TRUE
 USE_PLUGIN_SDI_FALSE
 USE_PLUGIN_SDI_TRUE
-USE_PLUGIN_RTP_FALSE
-USE_PLUGIN_RTP_TRUE
 USE_PLUGIN_REMOVESILENCE_FALSE
 USE_PLUGIN_REMOVESILENCE_TRUE
 USE_PLUGIN_RAWPARSE_FALSE
@@ -1167,6 +1159,8 @@
 USE_PLUGIN_ONVIF_TRUE
 USE_PLUGIN_NUVDEMUX_FALSE
 USE_PLUGIN_NUVDEMUX_TRUE
+USE_PLUGIN_NETSIM_FALSE
+USE_PLUGIN_NETSIM_TRUE
 USE_PLUGIN_MXF_FALSE
 USE_PLUGIN_MXF_TRUE
 USE_PLUGIN_MVE_FALSE
@@ -1516,6 +1510,7 @@
 USE_NLS
 ACLOCAL_AMFLAGS
 CPP
+LT_SYS_LIBRARY_PATH
 OTOOL64
 OTOOL
 LIPO
@@ -1656,6 +1651,7 @@
 enable_shared
 with_pic
 enable_fast_install
+with_aix_soname
 enable_dependency_tracking
 with_gnu_ld
 with_sysroot
@@ -1742,6 +1738,7 @@
 enable_mpegpsmux
 enable_mve
 enable_mxf
+enable_netsim
 enable_nuvdemux
 enable_onvif
 enable_patchdetect
@@ -1749,7 +1746,6 @@
 enable_pnm
 enable_rawparse
 enable_removesilence
-enable_rtp
 enable_sdi
 enable_sdp
 enable_segmentclip
@@ -1794,6 +1790,7 @@
 enable_uvch264
 enable_nvenc
 with_cuda_prefix
+enable_tinyalsa
 enable_assrender
 enable_voamrwbenc
 enable_voaacenc
@@ -1827,7 +1824,6 @@
 enable_modplug
 enable_mimic
 enable_mpeg2enc
-enable_mpg123
 enable_mplex
 enable_musepack
 enable_nas
@@ -1846,6 +1842,7 @@
 enable_gl
 enable_gtk3
 enable_qt
+enable_vulkan
 enable_libvisual
 enable_timidity
 enable_teletextdec
@@ -1869,8 +1866,6 @@
 enable_zbar
 enable_rtmp
 enable_spandsp
-enable_gsettings
-enable_schemas_compile
 enable_sndio
 with_hls_crypto
 enable_hls
@@ -1885,6 +1880,7 @@
 LDFLAGS
 LIBS
 CPPFLAGS
+LT_SYS_LIBRARY_PATH
 CPP
 PKG_CONFIG
 VALGRIND_CFLAGS
@@ -1960,6 +1956,8 @@
 GST_ALLOCATORS_LIBS
 LIBPNG_CFLAGS
 LIBPNG_LIBS
+XCB_CFLAGS
+XCB_LIBS
 BLUEZ5_CFLAGS
 BLUEZ5_LIBS
 GIO_UNIX_CFLAGS
@@ -2032,8 +2030,6 @@
 MJPEG_LIBS
 MPEG2ENC_CFLAGS
 MPEG2ENC_LIBS
-MPG123_CFLAGS
-MPG123_LIBS
 MPLEX_CFLAGS
 MPLEX_LIBS
 NEON_CFLAGS
@@ -2058,8 +2054,6 @@
 PVR_LIBS
 RSVG_CFLAGS
 RSVG_LIBS
-RSVG_2_36_2_CFLAGS
-RSVG_2_36_2_LIBS
 GTK3_GL_CFLAGS
 GTK3_GL_LIBS
 GTK3_X11_CFLAGS
@@ -2100,8 +2094,6 @@
 RTMP_LIBS
 SPANDSP_CFLAGS
 SPANDSP_LIBS
-GSETTINGS_CFLAGS
-GSETTINGS_LIBS
 NETTLE_CFLAGS
 NETTLE_LIBS
 OPENSSL_CFLAGS
@@ -2658,7 +2650,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.7.1 to adapt to many kinds of systems.
+\`configure' configures GStreamer Bad Plug-ins 1.7.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2730,7 +2722,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 1.7.1:";;
+     short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 1.7.2:";;
    esac
   cat <<\_ACEOF
 
@@ -2824,6 +2816,7 @@
   --disable-mpegpsmux     disable dependency-less mpegpsmux plugin
   --disable-mve           disable dependency-less mve plugin
   --disable-mxf           disable dependency-less mxf plugin
+  --disable-netsim        disable dependency-less netsim plugin
   --disable-nuvdemux      disable dependency-less nuvdemux plugin
   --disable-onvif         disable dependency-less onvif plugin
   --disable-patchdetect   disable dependency-less patchdetect plugin
@@ -2831,7 +2824,6 @@
   --disable-pnm           disable dependency-less pnm plugin
   --disable-rawparse      disable dependency-less rawparse plugin
   --disable-removesilence disable dependency-less removesilence plugin
-  --disable-rtp           disable dependency-less rtp plugin
   --disable-sdi           disable dependency-less sdi plugin
   --disable-sdp           disable dependency-less sdp plugin
   --disable-segmentclip   disable dependency-less segmentclip plugin
@@ -2871,6 +2863,7 @@
   --disable-opensles           disable OpenSL ES: opensl
   --disable-uvch264            disable UVC H264: uvch264
   --disable-nvenc              disable NVIDIA Encode API: nvenc
+  --disable-tinyalsa           disable tinyalsa: tinyalsa
   --disable-assrender          disable ASS/SSA renderer: assrender
   --disable-voamrwbenc         disable vo-amrwbenc library: vo-amrwbenc
   --disable-voaacenc           disable vo-aacenc library: vo-aacenc
@@ -2889,7 +2882,7 @@
   --disable-dts                disable dts library: dtsdec
   --disable-resindvd           disable resindvd plugin: resindvd
   --disable-faac               disable AAC encoder plug-in: faac
-  --disable-faad               disable AAC decoder plug-in: faad
+  --disable-faad               disable FAAD2 AAC decoder plug-in: faad
   --disable-fbdev              disable linux framebuffer: fbdevsink
   --disable-flite              disable Flite plugin: flite
   --disable-gsm                disable GSM library: gsmenc gsmdec
@@ -2905,7 +2898,6 @@
   --disable-modplug            disable modplug: modplug
   --disable-mimic              disable libmimic library: mimic
   --disable-mpeg2enc           disable mpeg2enc: mpeg2enc
-  --disable-mpg123             disable mpg123 audio decoder: mpg123
   --disable-mplex              disable mplex: mplex
   --disable-musepack           disable musepackdec: musepack
   --disable-nas                disable nas plug-in: nassink
@@ -2923,6 +2915,7 @@
   --disable-gl                 disable gl elements: gl
   --disable-gtk3               disable Gtk+ elements: gtk
   --disable-qt                 disable Qt elements: qt
+  --disable-vulkan             disable Vulkan elements: vulkan
   --disable-libvisual          disable libvisual visualization library: libvisual
   --disable-timidity           disable timidity midi soft synth plugin: timidity
   --disable-teletextdec        disable Teletext decoder: teletextdec
@@ -2944,9 +2937,6 @@
   --disable-zbar               disable ZBar barcode detector: zbar
   --disable-rtmp               disable rtmp library: rtmp
   --disable-spandsp            disable Spandsp: spandsp
-  --disable-gsettings          disable GSettings plugin: gsettings
-  --disable-schemas-compile
-                          Disable regeneration of gschemas.compiled on install
   --disable-sndio              disable sndio audio: sndio
   --disable-hls                disable http live streaming plugin: hls
   --disable-x265               disable x265 plug-in: x265
@@ -2956,9 +2946,12 @@
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
   --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                           both]
+  --with-aix-soname=aix|svr4|both
+                          shared library versioning (aka "SONAME") variant to
+                          provide on AIX, [default=aix].
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
-  --with-sysroot=DIR Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).
+  --with-sysroot[=DIR]    Search for dependent libraries within DIR (or the
+                          compiler's sysroot if not specified).
   --with-autoconf         use a different autoconf for regeneration of
                           Makefiles
   --with-autoheader       use a different autoheader for regeneration of
@@ -3016,6 +3009,8 @@
   LIBS        libraries to pass to the linker, e.g. -l<library>
   CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
+  LT_SYS_LIBRARY_PATH
+              User-defined run-time library search path.
   CPP         C preprocessor
   PKG_CONFIG  path to pkg-config utility
   VALGRIND_CFLAGS
@@ -3130,6 +3125,8 @@
   LIBPNG_CFLAGS
               C compiler flags for LIBPNG, overriding pkg-config
   LIBPNG_LIBS linker flags for LIBPNG, overriding pkg-config
+  XCB_CFLAGS  C compiler flags for XCB, overriding pkg-config
+  XCB_LIBS    linker flags for XCB, overriding pkg-config
   BLUEZ5_CFLAGS
               C compiler flags for BLUEZ5, overriding pkg-config
   BLUEZ5_LIBS linker flags for BLUEZ5, overriding pkg-config
@@ -3245,9 +3242,6 @@
               C compiler flags for MPEG2ENC, overriding pkg-config
   MPEG2ENC_LIBS
               linker flags for MPEG2ENC, overriding pkg-config
-  MPG123_CFLAGS
-              C compiler flags for MPG123, overriding pkg-config
-  MPG123_LIBS linker flags for MPG123, overriding pkg-config
   MPLEX_CFLAGS
               C compiler flags for MPLEX, overriding pkg-config
   MPLEX_LIBS  linker flags for MPLEX, overriding pkg-config
@@ -3283,10 +3277,6 @@
   PVR_LIBS    linker flags for PVR, overriding pkg-config
   RSVG_CFLAGS C compiler flags for RSVG, overriding pkg-config
   RSVG_LIBS   linker flags for RSVG, overriding pkg-config
-  RSVG_2_36_2_CFLAGS
-              C compiler flags for RSVG_2_36_2, overriding pkg-config
-  RSVG_2_36_2_LIBS
-              linker flags for RSVG_2_36_2, overriding pkg-config
   GTK3_GL_CFLAGS
               C compiler flags for GTK3_GL, overriding pkg-config
   GTK3_GL_LIBS
@@ -3354,10 +3344,6 @@
               C compiler flags for SPANDSP, overriding pkg-config
   SPANDSP_LIBS
               linker flags for SPANDSP, overriding pkg-config
-  GSETTINGS_CFLAGS
-              C compiler flags for GSETTINGS, overriding pkg-config
-  GSETTINGS_LIBS
-              linker flags for GSETTINGS, overriding pkg-config
   NETTLE_CFLAGS
               C compiler flags for NETTLE, overriding pkg-config
   NETTLE_LIBS linker flags for NETTLE, overriding pkg-config
@@ -3434,7 +3420,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer Bad Plug-ins configure 1.7.1
+GStreamer Bad Plug-ins configure 1.7.2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -4407,7 +4393,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.7.1, which was
+It was created by GStreamer Bad Plug-ins $as_me 1.7.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -5389,7 +5375,7 @@
 
 # Define the identity of the package.
  PACKAGE='gst-plugins-bad'
- VERSION='1.7.1'
+ VERSION='1.7.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -5600,9 +5586,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.7.1 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.7.1 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.7.1 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.7.2 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.7.2 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.7.2 | cut -d'.' -f3)
 
 
 
@@ -5613,7 +5599,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.7.1 | cut -d'.' -f4)
+  NANO=$(echo 1.7.2 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -5733,8 +5719,8 @@
 
 
 
-macro_version='2.4.2'
-macro_revision='1.3337'
+macro_version='2.4.6'
+macro_revision='2.4.6'
 
 
 
@@ -5748,7 +5734,7 @@
 
 
 
-ltmain="$ac_aux_dir/ltmain.sh"
+ltmain=$ac_aux_dir/ltmain.sh
 
 # Backslashify metacharacters that are still active within
 # double-quoted strings.
@@ -5797,7 +5783,7 @@
     $ECHO ""
 }
 
-case "$ECHO" in
+case $ECHO in
   printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
 $as_echo "printf" >&6; } ;;
   print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
@@ -7159,19 +7145,19 @@
 
 # Check whether --with-gnu-ld was given.
 if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
 else
   with_gnu_ld=no
 fi
 
 ac_prog=ld
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   # Check if gcc -print-prog-name=ld gives a path.
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
 $as_echo_n "checking for ld used by $CC... " >&6; }
   case $host in
   *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
+    # gcc leaves a trailing carriage return, which upsets mingw
     ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
   *)
     ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
@@ -7185,7 +7171,7 @@
       while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
 	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
       done
-      test -z "$LD" && LD="$ac_prog"
+      test -z "$LD" && LD=$ac_prog
       ;;
   "")
     # If it fails, then pretend we aren't using GCC.
@@ -7196,7 +7182,7 @@
     with_gnu_ld=unknown
     ;;
   esac
-elif test "$with_gnu_ld" = yes; then
+elif test yes = "$with_gnu_ld"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
 $as_echo_n "checking for GNU ld... " >&6; }
 else
@@ -7207,32 +7193,32 @@
   $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
   for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
     test -z "$ac_dir" && ac_dir=.
     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
+      lt_cv_path_LD=$ac_dir/$ac_prog
       # Check to see if the program is GNU ld.  I'd rather use --version,
       # but apparently some variants of GNU ld only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
       case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
       *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
+	test no != "$with_gnu_ld" && break
 	;;
       *)
-	test "$with_gnu_ld" != yes && break
+	test yes != "$with_gnu_ld" && break
 	;;
       esac
     fi
   done
-  IFS="$lt_save_ifs"
+  IFS=$lt_save_ifs
 else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
 fi
 fi
 
-LD="$lt_cv_path_LD"
+LD=$lt_cv_path_LD
 if test -n "$LD"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
 $as_echo "$LD" >&6; }
@@ -7275,33 +7261,38 @@
 else
   if test -n "$NM"; then
   # Let the user override the test.
-  lt_cv_path_NM="$NM"
+  lt_cv_path_NM=$NM
 else
-  lt_nm_to_check="${ac_tool_prefix}nm"
+  lt_nm_to_check=${ac_tool_prefix}nm
   if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
     lt_nm_to_check="$lt_nm_to_check nm"
   fi
   for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
     for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      tmp_nm=$ac_dir/$lt_tmp_nm
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
 	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	# Adding the 'sed 1q' prevents false positives on HP-UX, which says:
 	#   nm: unknown option "B" ignored
 	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
+	# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
+	case $build_os in
+	mingw*) lt_bad_file=conftest.nm/nofile ;;
+	*) lt_bad_file=/dev/null ;;
+	esac
+	case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+	*$lt_bad_file* | *'Invalid file or object type'*)
 	  lt_cv_path_NM="$tmp_nm -B"
-	  break
+	  break 2
 	  ;;
 	*)
 	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
 	  */dev/null*)
 	    lt_cv_path_NM="$tmp_nm -p"
-	    break
+	    break 2
 	    ;;
 	  *)
 	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
@@ -7312,15 +7303,15 @@
 	esac
       fi
     done
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
   done
   : ${lt_cv_path_NM=no}
 fi
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
 $as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
+if test no != "$lt_cv_path_NM"; then
+  NM=$lt_cv_path_NM
 else
   # Didn't find any BSD compatible name lister, look for dumpbin.
   if test -n "$DUMPBIN"; then :
@@ -7426,9 +7417,9 @@
   fi
 fi
 
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
     *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
+      DUMPBIN="$DUMPBIN -symbols -headers"
       ;;
     *)
       DUMPBIN=:
@@ -7436,8 +7427,8 @@
     esac
   fi
 
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
+  if test : != "$DUMPBIN"; then
+    NM=$DUMPBIN
   fi
 fi
 test -z "$NM" && NM=nm
@@ -7488,7 +7479,7 @@
   $as_echo_n "(cached) " >&6
 else
     i=0
-  teststring="ABCD"
+  teststring=ABCD
 
   case $build_os in
   msdosdjgpp*)
@@ -7528,7 +7519,7 @@
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
     # This has been around since 386BSD, at least.  Likely further.
     if test -x /sbin/sysctl; then
       lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -7579,22 +7570,22 @@
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
     if test -n "$lt_cv_sys_max_cmd_len" && \
-	test undefined != "$lt_cv_sys_max_cmd_len"; then
+       test undefined != "$lt_cv_sys_max_cmd_len"; then
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     else
       # Make teststring a little bigger before we do anything with it.
       # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
+      for i in 1 2 3 4 5 6 7 8; do
         teststring=$teststring$teststring
       done
       SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
 	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
+	      test 17 != "$i" # 1/2 MB should be enough
       do
         i=`expr $i + 1`
         teststring=$teststring$teststring
@@ -7612,7 +7603,7 @@
 
 fi
 
-if test -n $lt_cv_sys_max_cmd_len ; then
+if test -n "$lt_cv_sys_max_cmd_len"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
 $as_echo "$lt_cv_sys_max_cmd_len" >&6; }
 else
@@ -7630,30 +7621,6 @@
 : ${MV="mv -f"}
 : ${RM="rm -f"}
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
-
-
 if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
   lt_unset=unset
 else
@@ -7776,13 +7743,13 @@
 reload_cmds='$LD$reload_flag -o $output$reload_objs'
 case $host_os in
   cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
+    if test yes != "$GCC"; then
       reload_cmds=false
     fi
     ;;
   darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    if test yes = "$GCC"; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
     else
       reload_cmds='$LD$reload_flag -o $output$reload_objs'
     fi
@@ -7907,13 +7874,13 @@
 # Need to set the preceding variable on all platforms that support
 # interlibrary dependencies.
 # 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
+# 'unknown' -- same as none, but documents that we really don't know.
 # 'pass_all' -- all dependencies passed with no checks.
 # 'test_compile' -- check by making test program.
 # 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
 
 case $host_os in
 aix[4-9]*)
@@ -7940,8 +7907,7 @@
   # Base MSYS/MinGW do not provide the 'file' command needed by
   # func_win32_libid shell function, so use a weaker test based on 'objdump',
   # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+  if ( file / ) >/dev/null 2>&1; then
     lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
     lt_cv_file_magic_cmd='func_win32_libid'
   else
@@ -8037,8 +8003,8 @@
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+openbsd* | bitrig*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
     lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
   else
     lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
@@ -8091,6 +8057,9 @@
 tpf*)
   lt_cv_deplibs_check_method=pass_all
   ;;
+os2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 esac
 
 fi
@@ -8245,8 +8214,8 @@
 
 case $host_os in
 cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
+  # two different shell functions defined in ltmain.sh;
+  # decide which one to use based on capabilities of $DLLTOOL
   case `$DLLTOOL --help 2>&1` in
   *--identify-strict*)
     lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
@@ -8258,7 +8227,7 @@
   ;;
 *)
   # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  lt_cv_sharedlib_from_linklib_cmd=$ECHO
   ;;
 esac
 
@@ -8413,7 +8382,7 @@
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
-      if test "$ac_status" -eq 0; then
+      if test 0 -eq "$ac_status"; then
 	# Ensure the archiver fails upon bogus file names.
 	rm -f conftest.$ac_objext libconftest.a
 	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
@@ -8421,7 +8390,7 @@
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }
-	if test "$ac_status" -ne 0; then
+	if test 0 -ne "$ac_status"; then
           lt_cv_ar_at_file=@
         fi
       fi
@@ -8434,7 +8403,7 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
 $as_echo "$lt_cv_ar_at_file" >&6; }
 
-if test "x$lt_cv_ar_at_file" = xno; then
+if test no = "$lt_cv_ar_at_file"; then
   archiver_list_spec=
 else
   archiver_list_spec=$lt_cv_ar_at_file
@@ -8651,7 +8620,7 @@
 
 if test -n "$RANLIB"; then
   case $host_os in
-  openbsd*)
+  bitrig* | openbsd*)
     old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
@@ -8741,7 +8710,7 @@
   symcode='[ABCDGISTW]'
   ;;
 hpux*)
-  if test "$host_cpu" = ia64; then
+  if test ia64 = "$host_cpu"; then
     symcode='[ABCDEGRST]'
   fi
   ;;
@@ -8774,14 +8743,44 @@
   symcode='[ABCDGIRSTW]' ;;
 esac
 
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  # Gets list of data symbols to import.
+  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+  # Adjust the below global symbol transforms to fixup imported variables.
+  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
+  lt_c_name_lib_hook="\
+  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
+  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
+else
+  # Disable hooks by default.
+  lt_cv_sys_global_symbol_to_import=
+  lt_cdecl_hook=
+  lt_c_name_hook=
+  lt_c_name_lib_hook=
+fi
+
 # Transform an extracted symbol line into a proper C declaration.
 # Some systems (esp. on ia64) link data and code symbols differently,
 # so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
 
 # Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
 
 # Handle CRLF in mingw tool chain
 opt_cr=
@@ -8799,21 +8798,24 @@
 
   # Write the raw and C identifiers.
   if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
+    # Fake it for dumpbin and say T for any non-static function,
+    # D for any global variable and I for any imported variable.
     # Also find C++ and __fastcall symbols from MSVC++,
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK '"\
 "     {last_section=section; section=\$ 3};"\
 "     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
 "     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
 "     ' prfx=^$ac_symprfx"
   else
     lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
@@ -8861,11 +8863,11 @@
 	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
 	  cat <<_LT_EOF > conftest.$ac_ext
 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
    relocations are performed -- see ld's documentation on pseudo-relocs.  */
 # define LT_DLSYM_CONST
-#elif defined(__osf__)
+#elif defined __osf__
 /* This system does not cope well with relocations in const data.  */
 # define LT_DLSYM_CONST
 #else
@@ -8891,7 +8893,7 @@
 {
   { "@PROGRAM@", (void *) 0 },
 _LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
 	  cat <<\_LT_EOF >> conftest.$ac_ext
   {0, (void *) 0}
 };
@@ -8911,13 +8913,13 @@
 	  mv conftest.$ac_objext conftstm.$ac_objext
 	  lt_globsym_save_LIBS=$LIBS
 	  lt_globsym_save_CFLAGS=$CFLAGS
-	  LIBS="conftstm.$ac_objext"
+	  LIBS=conftstm.$ac_objext
 	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
 	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+  test $ac_status = 0; } && test -s conftest$ac_exeext; then
 	    pipe_works=yes
 	  fi
 	  LIBS=$lt_globsym_save_LIBS
@@ -8938,7 +8940,7 @@
   rm -rf conftest* conftst*
 
   # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
+  if test yes = "$pipe_works"; then
     break
   else
     lt_cv_sys_global_symbol_pipe=
@@ -8991,6 +8993,16 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
 $as_echo_n "checking for sysroot... " >&6; }
 
@@ -9003,9 +9015,9 @@
 
 
 lt_sysroot=
-case ${with_sysroot} in #(
+case $with_sysroot in #(
  yes)
-   if test "$GCC" = yes; then
+   if test yes = "$GCC"; then
      lt_sysroot=`$CC --print-sysroot 2>/dev/null`
    fi
    ;; #(
@@ -9015,8 +9027,8 @@
  no|'')
    ;; #(
  *)
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
-$as_echo "${with_sysroot}" >&6; }
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
+$as_echo "$with_sysroot" >&6; }
    as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
    ;;
 esac
@@ -9028,18 +9040,99 @@
 
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
+$as_echo_n "checking for a working dd... " >&6; }
+if ${ac_cv_path_lt_DD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+: ${lt_DD:=$DD}
+if test -z "$lt_DD"; then
+  ac_path_lt_DD_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in dd; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_lt_DD" || continue
+if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
+fi
+      $ac_path_lt_DD_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_lt_DD"; then
+    :
+  fi
+else
+  ac_cv_path_lt_DD=$lt_DD
+fi
+
+rm -f conftest.i conftest2.i conftest.out
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
+$as_echo "$ac_cv_path_lt_DD" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
+$as_echo_n "checking how to truncate binary pipes... " >&6; }
+if ${lt_cv_truncate_bin+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+lt_cv_truncate_bin=
+if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
+fi
+rm -f conftest.i conftest2.i conftest.out
+test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
+$as_echo "$lt_cv_truncate_bin" >&6; }
+
+
+
+
+
+
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; do
+      case $cc_temp in
+        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+
 # Check whether --enable-libtool-lock was given.
 if test "${enable_libtool_lock+set}" = set; then :
   enableval=$enable_libtool_lock;
 fi
 
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
 
 # Some flags need to be propagated to the compiler or linker for good
 # libtool support.
 case $host in
 ia64-*-hpux*)
-  # Find out which ABI we are using.
+  # Find out what ABI is being produced by ac_compile, and set mode
+  # options accordingly.
   echo 'int i;' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
@@ -9048,24 +9141,25 @@
   test $ac_status = 0; }; then
     case `/usr/bin/file conftest.$ac_objext` in
       *ELF-32*)
-	HPUX_IA64_MODE="32"
+	HPUX_IA64_MODE=32
 	;;
       *ELF-64*)
-	HPUX_IA64_MODE="64"
+	HPUX_IA64_MODE=64
 	;;
     esac
   fi
   rm -rf conftest*
   ;;
 *-*-irix6*)
-  # Find out which ABI we are using.
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
   echo '#line '$LINENO' "configure"' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
+    if test yes = "$lt_cv_prog_gnu_ld"; then
       case `/usr/bin/file conftest.$ac_objext` in
 	*32-bit*)
 	  LD="${LD-ld} -melf32bsmip"
@@ -9094,9 +9188,50 @@
   rm -rf conftest*
   ;;
 
+mips64*-*linux*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    emul=elf
+    case `/usr/bin/file conftest.$ac_objext` in
+      *32-bit*)
+	emul="${emul}32"
+	;;
+      *64-bit*)
+	emul="${emul}64"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *MSB*)
+	emul="${emul}btsmip"
+	;;
+      *LSB*)
+	emul="${emul}ltsmip"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *N32*)
+	emul="${emul}n32"
+	;;
+    esac
+    LD="${LD-ld} -m $emul"
+  fi
+  rm -rf conftest*
+  ;;
+
 x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.  Note that the listed cases only cover the
+  # situations where additional linker options are needed (such as when
+  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+  # vice versa); the common cases where no linker options are needed do
+  # not appear in the list.
   echo 'int i;' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
@@ -9119,10 +9254,10 @@
 		;;
 	    esac
 	    ;;
-	  powerpc64le-*)
+	  powerpc64le-*linux*)
 	    LD="${LD-ld} -m elf32lppclinux"
 	    ;;
-	  powerpc64-*)
+	  powerpc64-*linux*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
 	  s390x-*linux*)
@@ -9141,10 +9276,10 @@
 	  x86_64-*linux*)
 	    LD="${LD-ld} -m elf_x86_64"
 	    ;;
-	  powerpcle-*)
+	  powerpcle-*linux*)
 	    LD="${LD-ld} -m elf64lppc"
 	    ;;
-	  powerpc-*)
+	  powerpc-*linux*)
 	    LD="${LD-ld} -m elf64ppc"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
@@ -9162,7 +9297,7 @@
 
 *-*-sco3.2v5*)
   # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
+  SAVE_CFLAGS=$CFLAGS
   CFLAGS="$CFLAGS -belf"
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
 $as_echo_n "checking whether the C compiler needs -belf... " >&6; }
@@ -9202,13 +9337,14 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
 $as_echo "$lt_cv_cc_needs_belf" >&6; }
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+  if test yes != "$lt_cv_cc_needs_belf"; then
     # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
+    CFLAGS=$SAVE_CFLAGS
   fi
   ;;
 *-*solaris*)
-  # Find out which ABI we are using.
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
   echo 'int i;' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
@@ -9220,7 +9356,7 @@
       case $lt_cv_prog_gnu_ld in
       yes*)
         case $host in
-        i?86-*-solaris*)
+        i?86-*-solaris*|x86_64-*-solaris*)
           LD="${LD-ld} -m elf_x86_64"
           ;;
         sparc*-*-solaris*)
@@ -9229,7 +9365,7 @@
         esac
         # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
         if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
+          LD=${LD-ld}_sol2
         fi
         ;;
       *)
@@ -9245,7 +9381,7 @@
   ;;
 esac
 
-need_locks="$enable_libtool_lock"
+need_locks=$enable_libtool_lock
 
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
@@ -9356,7 +9492,7 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
 $as_echo "$lt_cv_path_mainfest_tool" >&6; }
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
+if test yes != "$lt_cv_path_mainfest_tool"; then
   MANIFEST_TOOL=:
 fi
 
@@ -9859,7 +9995,7 @@
   $as_echo_n "(cached) " >&6
 else
   lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
+      if test -z "$LT_MULTI_MODULE"; then
 	# By default we will add the -single_module flag. You can override
 	# by either setting the environment variable LT_MULTI_MODULE
 	# non-empty at configure time, or by adding -multi_module to the
@@ -9877,7 +10013,7 @@
 	  cat conftest.err >&5
 	# Otherwise, if the output was created with a 0 exit code from
 	# the compiler, it worked.
-	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+	elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
 	  lt_cv_apple_cc_single_mod=yes
 	else
 	  cat conftest.err >&5
@@ -9916,7 +10052,7 @@
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-	LDFLAGS="$save_LDFLAGS"
+	LDFLAGS=$save_LDFLAGS
 
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
@@ -9945,7 +10081,7 @@
       _lt_result=$?
       if test -s conftest.err && $GREP force_load conftest.err; then
 	cat conftest.err >&5
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
 	lt_cv_ld_force_load=yes
       else
 	cat conftest.err >&5
@@ -9958,32 +10094,32 @@
 $as_echo "$lt_cv_ld_force_load" >&6; }
     case $host_os in
     rhapsody* | darwin1.[012])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
     darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
     darwin*) # darwin 5.x on
       # if running on 10.5 or later, the deployment target defaults
       # to the OS version, if on x86, and 10.4, the deployment
       # target defaults to 10.4. Don't you love it?
       case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
 	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[012]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+	10.[012][,.]*)
+	  _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
 	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
       esac
     ;;
   esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+    if test yes = "$lt_cv_apple_cc_single_mod"; then
       _lt_dar_single_mod='$single_module'
     fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    if test yes = "$lt_cv_ld_exported_symbols_list"; then
+      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
     else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
     fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
       _lt_dsymutil='~$DSYMUTIL $lib || :'
     else
       _lt_dsymutil=
@@ -9991,6 +10127,41 @@
     ;;
   esac
 
+# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -10272,10 +10443,10 @@
 done
 
 
-  GST_CURRENT=701
+  GST_CURRENT=702
   GST_REVISION=0
-  GST_AGE=701
-  GST_LIBVERSION=701:0:701
+  GST_AGE=702
+  GST_LIBVERSION=702:0:702
 
 
 
@@ -10604,14 +10775,14 @@
     *)
      enable_static=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for pkg in $enableval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$pkg" = "X$p"; then
 	  enable_static=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac
 else
@@ -10638,14 +10809,14 @@
     *)
       enable_shared=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for pkg in $enableval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$pkg" = "X$p"; then
 	  enable_shared=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac
 else
@@ -10670,14 +10841,14 @@
     *)
       pic_mode=default
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for lt_pkg in $withval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$lt_pkg" = "X$lt_p"; then
 	  pic_mode=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac
 else
@@ -10685,8 +10856,6 @@
 fi
 
 
-test -z "$pic_mode" && pic_mode=default
-
 
 
 
@@ -10702,14 +10871,14 @@
     *)
       enable_fast_install=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for pkg in $enableval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$pkg" = "X$p"; then
 	  enable_fast_install=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac
 else
@@ -10723,11 +10892,63 @@
 
 
 
+  shared_archive_member_spec=
+case $host,$enable_shared in
+power*-*-aix[5-9]*,yes)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
+$as_echo_n "checking which variant of shared library versioning to provide... " >&6; }
+
+# Check whether --with-aix-soname was given.
+if test "${with_aix_soname+set}" = set; then :
+  withval=$with_aix_soname; case $withval in
+    aix|svr4|both)
+      ;;
+    *)
+      as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5
+      ;;
+    esac
+    lt_cv_with_aix_soname=$with_aix_soname
+else
+  if ${lt_cv_with_aix_soname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_with_aix_soname=aix
+fi
+
+    with_aix_soname=$lt_cv_with_aix_soname
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
+$as_echo "$with_aix_soname" >&6; }
+  if test aix != "$with_aix_soname"; then
+    # For the AIX way of multilib, we name the shared archive member
+    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
+    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
+    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
+    # the AIX toolchain works better with OBJECT_MODE set (default 32).
+    if test 64 = "${OBJECT_MODE-32}"; then
+      shared_archive_member_spec=shr_64
+    else
+      shared_archive_member_spec=shr
+    fi
+  fi
+  ;;
+*)
+  with_aix_soname=aix
+  ;;
+esac
+
+
+
+
+
+
+
 
 
 
 # This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
+LIBTOOL_DEPS=$ltmain
 
 # Always use our own libtool.
 LIBTOOL='$(SHELL) $(top_builddir)/libtool'
@@ -10776,7 +10997,7 @@
 
 
 
-if test -n "${ZSH_VERSION+set}" ; then
+if test -n "${ZSH_VERSION+set}"; then
    setopt NO_GLOB_SUBST
 fi
 
@@ -10815,7 +11036,7 @@
   # AIX sometimes has problems with the GCC collect2 program.  For some
   # reason, if we set the COLLECT_NAMES environment variable, the problems
   # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
+  if test set != "${COLLECT_NAMES+set}"; then
     COLLECT_NAMES=
     export COLLECT_NAMES
   fi
@@ -10826,14 +11047,14 @@
 ofile=libtool
 can_build_shared=yes
 
-# All known linkers require a `.a' archive for static linking (except MSVC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
 # which needs '.lib').
 libext=a
 
-with_gnu_ld="$lt_cv_prog_gnu_ld"
+with_gnu_ld=$lt_cv_prog_gnu_ld
 
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
+old_CC=$CC
+old_CFLAGS=$CFLAGS
 
 # Set sane defaults for various variables
 test -z "$CC" && CC=cc
@@ -10842,15 +11063,8 @@
 test -z "$LD" && LD=ld
 test -z "$ac_objext" && ac_objext=o
 
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
 
 
 # Only perform the check for file, if the check method requires it
@@ -10865,22 +11079,22 @@
 else
   case $MAGIC_CMD in
 [\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
   ;;
 *)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  lt_save_MAGIC_CMD=$MAGIC_CMD
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
   ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
   for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
     test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/${ac_tool_prefix}file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+    if test -f "$ac_dir/${ac_tool_prefix}file"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file"
       if test -n "$file_magic_test_file"; then
 	case $deplibs_check_method in
 	"file_magic "*)
 	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
 	    $EGREP "$file_magic_regex" > /dev/null; then
 	    :
@@ -10903,13 +11117,13 @@
       break
     fi
   done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  IFS=$lt_save_ifs
+  MAGIC_CMD=$lt_save_MAGIC_CMD
   ;;
 esac
 fi
 
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 if test -n "$MAGIC_CMD"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
 $as_echo "$MAGIC_CMD" >&6; }
@@ -10931,22 +11145,22 @@
 else
   case $MAGIC_CMD in
 [\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
   ;;
 *)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  lt_save_MAGIC_CMD=$MAGIC_CMD
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
   ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
   for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
     test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+    if test -f "$ac_dir/file"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"file"
       if test -n "$file_magic_test_file"; then
 	case $deplibs_check_method in
 	"file_magic "*)
 	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
 	    $EGREP "$file_magic_regex" > /dev/null; then
 	    :
@@ -10969,13 +11183,13 @@
       break
     fi
   done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  IFS=$lt_save_ifs
+  MAGIC_CMD=$lt_save_MAGIC_CMD
   ;;
 esac
 fi
 
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 if test -n "$MAGIC_CMD"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
 $as_echo "$MAGIC_CMD" >&6; }
@@ -10996,7 +11210,7 @@
 
 # Use C for the default configuration in the libtool script
 
-lt_save_CC="$CC"
+lt_save_CC=$CC
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -11058,7 +11272,7 @@
 
 lt_prog_compiler_no_builtin_flag=
 
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   case $cc_basename in
   nvcc*)
     lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
@@ -11074,7 +11288,7 @@
   lt_cv_prog_compiler_rtti_exceptions=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   lt_compiler_flag="-fno-rtti -fno-exceptions"  ## exclude from sc_useless_quotes_in_assignment
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -11104,7 +11318,7 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
 
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
     lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
 else
     :
@@ -11122,17 +11336,18 @@
 lt_prog_compiler_static=
 
 
-  if test "$GCC" = yes; then
+  if test yes = "$GCC"; then
     lt_prog_compiler_wl='-Wl,'
     lt_prog_compiler_static='-static'
 
     case $host_os in
       aix*)
       # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	lt_prog_compiler_static='-Bstatic'
       fi
+      lt_prog_compiler_pic='-fPIC'
       ;;
 
     amigaos*)
@@ -11143,8 +11358,8 @@
         ;;
       m68k)
             # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
             lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
         ;;
       esac
@@ -11160,6 +11375,11 @@
       # Although the cygwin gcc ignores -fPIC, still need this for old-style
       # (--disable-auto-import) libraries
       lt_prog_compiler_pic='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static='$wl-static'
+	;;
+      esac
       ;;
 
     darwin* | rhapsody*)
@@ -11230,7 +11450,7 @@
     case $host_os in
     aix*)
       lt_prog_compiler_wl='-Wl,'
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	lt_prog_compiler_static='-Bstatic'
       else
@@ -11238,10 +11458,29 @@
       fi
       ;;
 
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      case $cc_basename in
+      nagfor*)
+        # NAG Fortran compiler
+        lt_prog_compiler_wl='-Wl,-Wl,,'
+        lt_prog_compiler_pic='-PIC'
+        lt_prog_compiler_static='-Bstatic'
+        ;;
+      esac
+      ;;
+
     mingw* | cygwin* | pw32* | os2* | cegcc*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
       lt_prog_compiler_pic='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static='$wl-static'
+	;;
+      esac
       ;;
 
     hpux9* | hpux10* | hpux11*)
@@ -11257,7 +11496,7 @@
 	;;
       esac
       # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      lt_prog_compiler_static='$wl-a ${wl}archive'
       ;;
 
     irix5* | irix6* | nonstopux*)
@@ -11268,7 +11507,7 @@
 
     linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
+      # old Intel for x86_64, which still supported -KPIC.
       ecc*)
 	lt_prog_compiler_wl='-Wl,'
 	lt_prog_compiler_pic='-KPIC'
@@ -11293,6 +11532,12 @@
 	lt_prog_compiler_pic='-PIC'
 	lt_prog_compiler_static='-Bstatic'
 	;;
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+	;;
       pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
         # Portland Group compilers (*not* the Pentium gcc compiler,
 	# which looks to be a dead project)
@@ -11390,7 +11635,7 @@
       ;;
 
     sysv4*MP*)
-      if test -d /usr/nec ;then
+      if test -d /usr/nec; then
 	lt_prog_compiler_pic='-Kconform_pic'
 	lt_prog_compiler_static='-Bstatic'
       fi
@@ -11419,7 +11664,7 @@
   fi
 
 case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
+  # For platforms that do not support PIC, -DPIC is meaningless:
   *djgpp*)
     lt_prog_compiler_pic=
     ;;
@@ -11451,7 +11696,7 @@
   lt_cv_prog_compiler_pic_works=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"  ## exclude from sc_useless_quotes_in_assignment
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -11481,7 +11726,7 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
 
-if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+if test yes = "$lt_cv_prog_compiler_pic_works"; then
     case $lt_prog_compiler_pic in
      "" | " "*) ;;
      *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
@@ -11513,7 +11758,7 @@
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
+   save_LDFLAGS=$LDFLAGS
    LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
    echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -11532,13 +11777,13 @@
      fi
    fi
    $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
+   LDFLAGS=$save_LDFLAGS
 
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
 $as_echo "$lt_cv_prog_compiler_static_works" >&6; }
 
-if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+if test yes = "$lt_cv_prog_compiler_static_works"; then
     :
 else
     lt_prog_compiler_static=
@@ -11658,8 +11903,8 @@
 
 
 
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
   # do not overwrite the value of need_locks provided by the user
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
 $as_echo_n "checking if we can lock with hard links... " >&6; }
@@ -11671,9 +11916,9 @@
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
 $as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+  if test no = "$hard_links"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
     need_locks=warn
   fi
 else
@@ -11716,9 +11961,9 @@
   # included in the symbol list
   include_expsyms=
   # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
+  # it will be wrapped by ' (' and ')$', so one must not match beginning or
+  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+  # as well as any symbol that contains 'd'.
   exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
   # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
   # platforms (ab)use it in PIC code, but their linkers get confused if
@@ -11733,7 +11978,7 @@
     # FIXME: the MSVC++ port hasn't been tested in a loooong time
     # When not using gcc, we currently assume that we are using
     # Microsoft Visual C++.
-    if test "$GCC" != yes; then
+    if test yes != "$GCC"; then
       with_gnu_ld=no
     fi
     ;;
@@ -11741,7 +11986,7 @@
     # we just hope/assume this is gcc and not c89 (= MSVC++)
     with_gnu_ld=yes
     ;;
-  openbsd*)
+  openbsd* | bitrig*)
     with_gnu_ld=no
     ;;
   linux* | k*bsd*-gnu | gnu*)
@@ -11754,7 +11999,7 @@
   # On some targets, GNU ld is compatible enough with the native linker
   # that we're better off using the native interface for both.
   lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     case $host_os in
       aix*)
 	# The AIX port of GNU ld has always aspired to compatibility
@@ -11776,24 +12021,24 @@
     esac
   fi
 
-  if test "$lt_use_gnu_ld_interface" = yes; then
+  if test yes = "$lt_use_gnu_ld_interface"; then
     # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
+    wlarc='$wl'
 
     # Set some defaults for GNU ld with shared library support. These
     # are reset later if shared libraries are not supported. Putting them
     # here allows them to be overridden if necessary.
     runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec='${wl}--export-dynamic'
+    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+    export_dynamic_flag_spec='$wl--export-dynamic'
     # ancient GNU ld didn't support --whole-archive et. al.
     if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
     else
       whole_archive_flag_spec=
     fi
     supports_anon_versioning=no
-    case `$LD -v 2>&1` in
+    case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in
       *GNU\ gold*) supports_anon_versioning=yes ;;
       *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
@@ -11806,7 +12051,7 @@
     case $host_os in
     aix[3-9]*)
       # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
+      if test ia64 != "$host_cpu"; then
 	ld_shlibs=no
 	cat <<_LT_EOF 1>&2
 
@@ -11825,7 +12070,7 @@
       case $host_cpu in
       powerpc)
             # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
             archive_expsym_cmds=''
         ;;
       m68k)
@@ -11841,7 +12086,7 @@
 	allow_undefined_flag=unsupported
 	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
 	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
       else
 	ld_shlibs=no
       fi
@@ -11851,7 +12096,7 @@
       # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
       # as there is no search path for DLLs.
       hardcode_libdir_flag_spec='-L$libdir'
-      export_dynamic_flag_spec='${wl}--export-all-symbols'
+      export_dynamic_flag_spec='$wl--export-all-symbols'
       allow_undefined_flag=unsupported
       always_export_symbols=no
       enable_shared_with_static_runtimes=yes
@@ -11859,61 +12104,89 @@
       exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
 
       if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file, use it as
+	# is; otherwise, prepend EXPORTS...
+	archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+          cp $export_symbols $output_objdir/$soname.def;
+        else
+          echo EXPORTS > $output_objdir/$soname.def;
+          cat $export_symbols >> $output_objdir/$soname.def;
+        fi~
+        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       else
 	ld_shlibs=no
       fi
       ;;
 
     haiku*)
-      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
       link_all_deplibs=yes
       ;;
 
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      shrext_cmds=.dll
+      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
     interix[3-9]*)
       hardcode_direct=no
       hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec='${wl}-E'
+      hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+      export_dynamic_flag_spec='$wl-E'
       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
       # Instead, shared libraries are loaded at an image base (0x10000000 by
       # default) and relocated if they conflict, which is a slow very memory
       # consuming and fragmenting process.  To avoid this, we pick a random,
       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
     gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
       tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
+      if test linux-dietlibc = "$host_os"; then
 	case $cc_basename in
 	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
 	esac
       fi
       if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
+	 && test no = "$tmp_diet"
       then
 	tmp_addflag=' $pic_flag'
 	tmp_sharedflag='-shared'
 	case $cc_basename,$host_cpu in
         pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  tmp_addflag=' $pic_flag'
 	  ;;
 	pgf77* | pgf90* | pgf95* | pgfortran*)
 					# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  tmp_addflag=' $pic_flag -Mnomain' ;;
 	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
 	  tmp_addflag=' -i_dynamic' ;;
@@ -11924,42 +12197,47 @@
 	lf95*)				# Lahey Fortran 8.1
 	  whole_archive_flag_spec=
 	  tmp_sharedflag='--shared' ;;
+        nagfor*)                        # NAGFOR 5.3
+          tmp_sharedflag='-Wl,-shared' ;;
 	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
 	  tmp_sharedflag='-qmkshrobj'
 	  tmp_addflag= ;;
 	nvcc*)	# Cuda Compiler Driver 2.2
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  compiler_needs_object=yes
 	  ;;
 	esac
 	case `$CC -V 2>&1 | sed 5q` in
 	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  compiler_needs_object=yes
 	  tmp_sharedflag='-G' ;;
 	*Sun\ F*)			# Sun Fortran 8.3
 	  tmp_sharedflag='-G' ;;
 	esac
-	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
 
-        if test "x$supports_anon_versioning" = xyes; then
+        if test yes = "$supports_anon_versioning"; then
           archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+            echo "local: *; };" >> $output_objdir/$libname.ver~
+            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
         fi
 
 	case $cc_basename in
+	tcc*)
+	  export_dynamic_flag_spec='-rdynamic'
+	  ;;
 	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
 	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
+	  if test yes = "$supports_anon_versioning"; then
 	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+              echo "local: *; };" >> $output_objdir/$libname.ver~
+              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
 	  fi
 	  ;;
 	esac
@@ -11973,8 +12251,8 @@
 	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
       else
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       fi
       ;;
 
@@ -11992,8 +12270,8 @@
 
 _LT_EOF
       elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	ld_shlibs=no
       fi
@@ -12005,7 +12283,7 @@
 	ld_shlibs=no
 	cat <<_LT_EOF 1>&2
 
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
 *** reliably create shared libraries on SCO systems.  Therefore, libtool
 *** is disabling shared libraries support.  We urge you to upgrade GNU
 *** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
@@ -12020,9 +12298,9 @@
 	  # DT_RUNPATH tag from executables and libraries.  But doing so
 	  # requires that you compile everything twice, which is a pain.
 	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	    hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 	  else
 	    ld_shlibs=no
 	  fi
@@ -12039,15 +12317,15 @@
 
     *)
       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	ld_shlibs=no
       fi
       ;;
     esac
 
-    if test "$ld_shlibs" = no; then
+    if test no = "$ld_shlibs"; then
       runpath_var=
       hardcode_libdir_flag_spec=
       export_dynamic_flag_spec=
@@ -12063,7 +12341,7 @@
       # Note: this linker hardcodes the directories in LIBPATH if there
       # are no directories specified by -L.
       hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
 	# Neither direct hardcoding nor static linking is supported with a
 	# broken collect2.
 	hardcode_direct=unsupported
@@ -12071,34 +12349,57 @@
       ;;
 
     aix[4-9]*)
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# On IA64, the linker does run time linking by default, so we don't
 	# have to do anything special.
 	aix_use_runtimelinking=no
 	exp_sym_flag='-Bexport'
-	no_entry_flag=""
+	no_entry_flag=
       else
 	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
+	# -C means demangle to GNU nm, but means don't demangle to AIX nm.
+	# Without the "-l" option, or with the "-B" option, AIX nm treats
+	# weak defined symbols like other global defined symbols, whereas
+	# GNU nm marks them as "W".
+	# While the 'weak' keyword is ignored in the Export File, we need
+	# it in the Import File for the 'aix-soname' feature, so we have
+	# to replace the "-B" option with "-P" for AIX nm.
 	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
 	else
-	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	  export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
 	fi
 	aix_use_runtimelinking=no
 
 	# Test if we are trying to use run time linking or normal
 	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
+	# have runtime linking enabled, and use it for executables.
+	# For shared libraries, we enable/disable runtime linking
+	# depending on the kind of the shared library created -
+	# when "with_aix_soname,aix_use_runtimelinking" is:
+	# "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "aix,yes"  lib.so          shared, rtl:yes, for executables
+	#            lib.a           static archive
+	# "both,no"  lib.so.V(shr.o) shared, rtl:yes
+	#            lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a(lib.so.V) shared, rtl:no
+	# "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a           static archive
 	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
 	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	  if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
 	    aix_use_runtimelinking=yes
 	    break
 	  fi
 	  done
+	  if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	    # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	    # so we don't have lib.a shared libs to link our executables.
+	    # We have to force runtime linking in this case.
+	    aix_use_runtimelinking=yes
+	    LDFLAGS="$LDFLAGS -Wl,-brtl"
+	  fi
 	  ;;
 	esac
 
@@ -12117,13 +12418,21 @@
       hardcode_direct_absolute=yes
       hardcode_libdir_separator=':'
       link_all_deplibs=yes
-      file_list_spec='${wl}-f,'
+      file_list_spec='$wl-f,'
+      case $with_aix_soname,$aix_use_runtimelinking in
+      aix,*) ;; # traditional, no import file
+      svr4,* | *,yes) # use import file
+	# The Import File defines what to hardcode.
+	hardcode_direct=no
+	hardcode_direct_absolute=no
+	;;
+      esac
 
-      if test "$GCC" = yes; then
+      if test yes = "$GCC"; then
 	case $host_os in aix4.[012]|aix4.[012].*)
 	# We only want to do this on AIX 4.2 and lower, the check
 	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
+	  collect2name=`$CC -print-prog-name=collect2`
 	  if test -f "$collect2name" &&
 	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
 	  then
@@ -12142,36 +12451,42 @@
 	  ;;
 	esac
 	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
+	if test yes = "$aix_use_runtimelinking"; then
+	  shared_flag="$shared_flag "'$wl-G'
 	fi
-	link_all_deplibs=no
+	# Need to ensure runtime linking is disabled for the traditional
+	# shared library, or the linker may eventually find shared libraries
+	# /with/ Import File - we do not want to mix them.
+	shared_flag_aix='-shared'
+	shared_flag_svr4='-shared $wl-G'
       else
 	# not using gcc
-	if test "$host_cpu" = ia64; then
+	if test ia64 = "$host_cpu"; then
 	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
 	# chokes on -Wl,-G. The following line is correct:
 	  shared_flag='-G'
 	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag='$wl-G'
 	  else
-	    shared_flag='${wl}-bM:SRE'
+	    shared_flag='$wl-bM:SRE'
 	  fi
+	  shared_flag_aix='$wl-bM:SRE'
+	  shared_flag_svr4='$wl-G'
 	fi
       fi
 
-      export_dynamic_flag_spec='${wl}-bexpall'
+      export_dynamic_flag_spec='$wl-bexpall'
       # It seems that -bexpall does not export symbols beginning with
       # underscore (_), so it is better to generate a list of symbols to export.
       always_export_symbols=yes
-      if test "$aix_use_runtimelinking" = yes; then
+      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
 	# Warning - without using the other runtime loading flags (-brtl),
 	# -berok will link without error, but may produce a broken library.
 	allow_undefined_flag='-berok'
         # Determine the default libpath from the value encoded in an
         # empty executable.
-        if test "${lt_cv_aix_libpath+set}" = set; then
+        if test set = "${lt_cv_aix_libpath+set}"; then
   aix_libpath=$lt_cv_aix_libpath
 else
   if ${lt_cv_aix_libpath_+:} false; then :
@@ -12206,7 +12521,7 @@
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
   if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
+    lt_cv_aix_libpath_=/usr/lib:/lib
   fi
 
 fi
@@ -12214,17 +12529,17 @@
   aix_libpath=$lt_cv_aix_libpath_
 fi
 
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
       else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	if test ia64 = "$host_cpu"; then
+	  hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib'
 	  allow_undefined_flag="-z nodefs"
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
 	else
 	 # Determine the default libpath from the value encoded in an
 	 # empty executable.
-	 if test "${lt_cv_aix_libpath+set}" = set; then
+	 if test set = "${lt_cv_aix_libpath+set}"; then
   aix_libpath=$lt_cv_aix_libpath
 else
   if ${lt_cv_aix_libpath_+:} false; then :
@@ -12259,7 +12574,7 @@
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
   if test -z "$lt_cv_aix_libpath_"; then
-    lt_cv_aix_libpath_="/usr/lib:/lib"
+    lt_cv_aix_libpath_=/usr/lib:/lib
   fi
 
 fi
@@ -12267,21 +12582,33 @@
   aix_libpath=$lt_cv_aix_libpath_
 fi
 
-	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	 hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath"
 	  # Warning - without using the other run time loading flags,
 	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag=' ${wl}-bernotok'
-	  allow_undefined_flag=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
+	  no_undefined_flag=' $wl-bernotok'
+	  allow_undefined_flag=' $wl-berok'
+	  if test yes = "$with_gnu_ld"; then
 	    # We only use this code for GNU lds that support --whole-archive.
-	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive'
 	  else
 	    # Exported symbols can be pulled into shared objects from archives
 	    whole_archive_flag_spec='$convenience'
 	  fi
 	  archive_cmds_need_lc=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	  archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	  # -brtl affects multiple linker settings, -berok does not and is overridden later
+	  compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
+	  if test svr4 != "$with_aix_soname"; then
+	    # This is similar to how AIX traditionally builds its shared libraries.
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	  fi
+	  if test aix != "$with_aix_soname"; then
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
+	  else
+	    # used by -dlpreopen to get the symbols
+	    archive_expsym_cmds="$archive_expsym_cmds"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	  fi
+	  archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d'
 	fi
       fi
       ;;
@@ -12290,7 +12617,7 @@
       case $host_cpu in
       powerpc)
             # see comment about AmigaOS4 .so support
-            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
             archive_expsym_cmds=''
         ;;
       m68k)
@@ -12320,16 +12647,17 @@
 	# Tell ltmain to make .lib files, not .a files.
 	libext=lib
 	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
+	shrext_cmds=.dll
 	# FIXME: Setting linknames here is a bad hack.
-	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
+	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	archive_expsym_cmds='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+            cp "$export_symbols" "$output_objdir/$soname.def";
+            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+          else
+            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+          fi~
+          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+          linknames='
 	# The linker will not automatically build a static lib if we build a DLL.
 	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
 	enable_shared_with_static_runtimes=yes
@@ -12338,18 +12666,18 @@
 	# Don't use ranlib
 	old_postinstall_cmds='chmod 644 $oldlib'
 	postlink_cmds='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
+          lt_tool_outputfile="@TOOL_OUTPUT@"~
+          case $lt_outputfile in
+            *.exe|*.EXE) ;;
+            *)
+              lt_outputfile=$lt_outputfile.exe
+              lt_tool_outputfile=$lt_tool_outputfile.exe
+              ;;
+          esac~
+          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+            $RM "$lt_outputfile.manifest";
+          fi'
 	;;
       *)
 	# Assume MSVC wrapper
@@ -12358,7 +12686,7 @@
 	# Tell ltmain to make .lib files, not .a files.
 	libext=lib
 	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
+	shrext_cmds=.dll
 	# FIXME: Setting linknames here is a bad hack.
 	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
 	# The linker will automatically build a .lib file if we build a DLL.
@@ -12377,24 +12705,24 @@
   hardcode_direct=no
   hardcode_automatic=yes
   hardcode_shlibpath_var=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  if test yes = "$lt_cv_ld_force_load"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
 
   else
     whole_archive_flag_spec=''
   fi
   link_all_deplibs=yes
-  allow_undefined_flag="$_lt_dar_allow_undefined"
+  allow_undefined_flag=$_lt_dar_allow_undefined
   case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
+     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
      *) _lt_dar_can_shared=$GCC ;;
   esac
-  if test "$_lt_dar_can_shared" = "yes"; then
+  if test yes = "$_lt_dar_can_shared"; then
     output_verbose_link_cmd=func_echo_all
-    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
 
   else
   ld_shlibs=no
@@ -12436,33 +12764,33 @@
       ;;
 
     hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      if test yes = "$GCC"; then
+	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
       else
-	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
       fi
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_flag_spec='$wl+b $wl$libdir'
       hardcode_libdir_separator=:
       hardcode_direct=yes
 
       # hardcode_minus_L: Not really in the search PATH,
       # but as the default location of the library.
       hardcode_minus_L=yes
-      export_dynamic_flag_spec='${wl}-E'
+      export_dynamic_flag_spec='$wl-E'
       ;;
 
     hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       else
 	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
       fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      if test no = "$with_gnu_ld"; then
+	hardcode_libdir_flag_spec='$wl+b $wl$libdir'
 	hardcode_libdir_separator=:
 	hardcode_direct=yes
 	hardcode_direct_absolute=yes
-	export_dynamic_flag_spec='${wl}-E'
+	export_dynamic_flag_spec='$wl-E'
 	# hardcode_minus_L: Not really in the search PATH,
 	# but as the default location of the library.
 	hardcode_minus_L=yes
@@ -12470,25 +12798,25 @@
       ;;
 
     hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+      if test yes,no = "$GCC,$with_gnu_ld"; then
 	case $host_cpu in
 	hppa*64*)
-	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       else
 	case $host_cpu in
 	hppa*64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
 
@@ -12500,7 +12828,7 @@
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler__b=no
-   save_LDFLAGS="$LDFLAGS"
+   save_LDFLAGS=$LDFLAGS
    LDFLAGS="$LDFLAGS -b"
    echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -12519,14 +12847,14 @@
      fi
    fi
    $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
+   LDFLAGS=$save_LDFLAGS
 
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
 $as_echo "$lt_cv_prog_compiler__b" >&6; }
 
-if test x"$lt_cv_prog_compiler__b" = xyes; then
-    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+if test yes = "$lt_cv_prog_compiler__b"; then
+    archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 else
     archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
 fi
@@ -12534,8 +12862,8 @@
 	  ;;
 	esac
       fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      if test no = "$with_gnu_ld"; then
+	hardcode_libdir_flag_spec='$wl+b $wl$libdir'
 	hardcode_libdir_separator=:
 
 	case $host_cpu in
@@ -12546,7 +12874,7 @@
 	*)
 	  hardcode_direct=yes
 	  hardcode_direct_absolute=yes
-	  export_dynamic_flag_spec='${wl}-E'
+	  export_dynamic_flag_spec='$wl-E'
 
 	  # hardcode_minus_L: Not really in the search PATH,
 	  # but as the default location of the library.
@@ -12557,8 +12885,8 @@
       ;;
 
     irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 	# Try to use the -exported_symbol ld option, if it does not
 	# work, assume that -exports_file does not work either and
 	# implicitly export all symbols.
@@ -12568,8 +12896,8 @@
 if ${lt_cv_irix_exported_symbol+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+  save_LDFLAGS=$LDFLAGS
+	   LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
 	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 int foo (void) { return 0; }
@@ -12581,24 +12909,35 @@
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-           LDFLAGS="$save_LDFLAGS"
+           LDFLAGS=$save_LDFLAGS
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
 $as_echo "$lt_cv_irix_exported_symbol" >&6; }
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+	if test yes = "$lt_cv_irix_exported_symbol"; then
+          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
 	fi
+	link_all_deplibs=no
       else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
       fi
       archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
       hardcode_libdir_separator=:
       inherit_rpath=yes
       link_all_deplibs=yes
       ;;
 
+    linux*)
+      case $cc_basename in
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	ld_shlibs=yes
+	archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      esac
+      ;;
+
     netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
@@ -12613,7 +12952,7 @@
     newsos6)
       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
       hardcode_libdir_separator=:
       hardcode_shlibpath_var=no
       ;;
@@ -12621,27 +12960,19 @@
     *nto* | *qnx*)
       ;;
 
-    openbsd*)
+    openbsd* | bitrig*)
       if test -f /usr/libexec/ld.so; then
 	hardcode_direct=yes
 	hardcode_shlibpath_var=no
 	hardcode_direct_absolute=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
 	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec='${wl}-E'
+	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec='$wl-rpath,$libdir'
+	  export_dynamic_flag_spec='$wl-E'
 	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-	     ;;
-	  esac
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  hardcode_libdir_flag_spec='$wl-rpath,$libdir'
 	fi
       else
 	ld_shlibs=no
@@ -12652,33 +12983,53 @@
       hardcode_libdir_flag_spec='-L$libdir'
       hardcode_minus_L=yes
       allow_undefined_flag=unsupported
-      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      shrext_cmds=.dll
+      archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      enable_shared_with_static_runtimes=yes
       ;;
 
     osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      if test yes = "$GCC"; then
+	allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+	archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
       else
 	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
       fi
       archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
       hardcode_libdir_separator=:
       ;;
 
     osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      if test yes = "$GCC"; then
+	allow_undefined_flag=' $wl-expect_unresolved $wl\*'
+	archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	hardcode_libdir_flag_spec='$wl-rpath $wl$libdir'
       else
 	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
 
 	# Both c and cxx compiler support -rpath directly
 	hardcode_libdir_flag_spec='-rpath $libdir'
@@ -12689,24 +13040,24 @@
 
     solaris*)
       no_undefined_flag=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	wlarc='$wl'
+	archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
       else
 	case `$CC -V 2>&1` in
 	*"Compilers 5.0"*)
 	  wlarc=''
-	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
 	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
 	  ;;
 	*)
-	  wlarc='${wl}'
-	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  wlarc='$wl'
+	  archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
 	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
 	  ;;
 	esac
       fi
@@ -12716,11 +13067,11 @@
       solaris2.[0-5] | solaris2.[0-5].*) ;;
       *)
 	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but understands '-z linker_flag'.  GCC discards it without '$wl',
 	# but is careful enough not to reorder.
 	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	if test yes = "$GCC"; then
+	  whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
 	else
 	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
 	fi
@@ -12730,10 +13081,10 @@
       ;;
 
     sunos4*)
-      if test "x$host_vendor" = xsequent; then
+      if test sequent = "$host_vendor"; then
 	# Use $CC to link under sequent, because it throws in some extra .o
 	# files that make .init and .fini sections work.
-	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
       else
 	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
       fi
@@ -12782,43 +13133,43 @@
       ;;
 
     sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='${wl}-z,text'
+      no_undefined_flag='$wl-z,text'
       archive_cmds_need_lc=no
       hardcode_shlibpath_var=no
       runpath_var='LD_RUN_PATH'
 
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
     sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
+      # Note: We CANNOT use -z defs as we might desire, because we do not
       # link with -lc, and that would cause any symbols used from libc to
       # always be unresolved, which means just about no library would
       # ever link correctly.  If we're not using GNU ld we use -z text
       # though, which does catch some bad symbols but isn't as heavy-handed
       # as -z defs.
-      no_undefined_flag='${wl}-z,text'
-      allow_undefined_flag='${wl}-z,nodefs'
+      no_undefined_flag='$wl-z,text'
+      allow_undefined_flag='$wl-z,nodefs'
       archive_cmds_need_lc=no
       hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-R,$libdir'
+      hardcode_libdir_flag_spec='$wl-R,$libdir'
       hardcode_libdir_separator=':'
       link_all_deplibs=yes
-      export_dynamic_flag_spec='${wl}-Bexport'
+      export_dynamic_flag_spec='$wl-Bexport'
       runpath_var='LD_RUN_PATH'
 
-      if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
@@ -12833,10 +13184,10 @@
       ;;
     esac
 
-    if test x$host_vendor = xsni; then
+    if test sni = "$host_vendor"; then
       case $host in
       sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	export_dynamic_flag_spec='${wl}-Blargedynsym'
+	export_dynamic_flag_spec='$wl-Blargedynsym'
 	;;
       esac
     fi
@@ -12844,7 +13195,7 @@
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
 $as_echo "$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
+test no = "$ld_shlibs" && can_build_shared=no
 
 with_gnu_ld=$with_gnu_ld
 
@@ -12870,7 +13221,7 @@
   # Assume -lc should be added
   archive_cmds_need_lc=yes
 
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
+  if test yes,yes = "$GCC,$enable_shared"; then
     case $archive_cmds in
     *'~'*)
       # FIXME: we may have to deal with multi-command sequences.
@@ -13085,14 +13436,14 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
+    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+    *) lt_awk_arg='/^libraries:/' ;;
   esac
   case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
+    mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;;
+    *) lt_sed_strip_eq='s|=/|/|g' ;;
   esac
   lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
   case $lt_search_path_spec in
@@ -13108,28 +13459,35 @@
     ;;
   esac
   # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
+  # and add multilib dir if necessary...
   lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  # ...but if some path component already ends with the multilib dir we assume
+  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+  case "$lt_multi_os_dir; $lt_search_path_spec " in
+  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+    lt_multi_os_dir=
+    ;;
+  esac
   for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
+    if test -d "$lt_sys_path$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+    elif test -n "$lt_multi_os_dir"; then
       test -d "$lt_sys_path" && \
 	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
     fi
   done
   lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
+BEGIN {RS = " "; FS = "/|\n";} {
+  lt_foo = "";
+  lt_count = 0;
   for (lt_i = NF; lt_i > 0; lt_i--) {
     if ($lt_i != "" && $lt_i != ".") {
       if ($lt_i == "..") {
         lt_count++;
       } else {
         if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
+          lt_foo = "/" $lt_i lt_foo;
         } else {
           lt_count--;
         }
@@ -13143,7 +13501,7 @@
   # for these hosts.
   case $host_os in
     mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+      $SED 's|/\([A-Za-z]:\)|\1|g'` ;;
   esac
   sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
 else
@@ -13152,7 +13510,7 @@
 library_names_spec=
 libname_spec='lib$name'
 soname_spec=
-shrext_cmds=".so"
+shrext_cmds=.so
 postinstall_cmds=
 postuninstall_cmds=
 finish_cmds=
@@ -13169,14 +13527,16 @@
 # flags to be left without arguments
 need_version=unknown
 
+
+
 case $host_os in
 aix3*)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
   # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
+  soname_spec='$libname$release$shared_ext$major'
   ;;
 
 aix[4-9]*)
@@ -13184,41 +13544,91 @@
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
+  if test ia64 = "$host_cpu"; then
     # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
     shlibpath_var=LD_LIBRARY_PATH
   else
     # With GCC up to 2.95.x, collect2 would create an import file
     # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
+    # the line '#! .'.  This would cause the generated library to
+    # depend on '.', always an invalid library.  This was fixed in
     # development snapshots of GCC prior to 3.0.
     case $host_os in
       aix4 | aix4.[01] | aix4.[01].*)
       if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
 	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	   echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
 	:
       else
 	can_build_shared=no
       fi
       ;;
     esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # Using Import Files as archive members, it is possible to support
+    # filename-based versioning of shared library archives on AIX. While
+    # this would work for both with and without runtime linking, it will
+    # prevent static linking of such archives. So we do filename-based
+    # shared library versioning with .so extension only, which is used
+    # when both runtime linking and shared linking is enabled.
+    # Unfortunately, runtime linking may impact performance, so we do
+    # not want this to be the default eventually. Also, we use the
+    # versioned .so libs for executables only if there is the -brtl
+    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+    # To allow for filename-based versioning support, we need to create
+    # libNAME.so.V as an archive file, containing:
+    # *) an Import File, referring to the versioned filename of the
+    #    archive as well as the shared archive member, telling the
+    #    bitwidth (32 or 64) of that shared object, and providing the
+    #    list of exported symbols of that shared object, eventually
+    #    decorated with the 'weak' keyword
+    # *) the shared object with the F_LOADONLY flag set, to really avoid
+    #    it being seen by the linker.
+    # At run time we better use the real file rather than another symlink,
+    # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+    case $with_aix_soname,$aix_use_runtimelinking in
+    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
     # soname into executable. Probably we can add versioning support to
     # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
+    aix,yes) # traditional libtool
+      dynamic_linker='AIX unversionable lib.so'
       # If using run time linking (on AIX 4.2 or later) use lib<name>.so
       # instead of lib<name>.a to let people know that these are not
       # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      ;;
+    aix,no) # traditional AIX only
+      dynamic_linker='AIX lib.a(lib.so.V)'
       # We preserve .a as extension for shared libraries through AIX4.2
       # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      ;;
+    svr4,*) # full svr4 only
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,yes) # both, prefer svr4
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # unpreferred sharedlib libNAME.a needs extra handling
+      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,no) # both, prefer aix
+      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+      ;;
+    esac
     shlibpath_var=LIBPATH
   fi
   ;;
@@ -13228,18 +13638,18 @@
   powerpc)
     # Since July 2007 AmigaOS4 officially supports .so libraries.
     # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     ;;
   m68k)
     library_names_spec='$libname.ixlibrary $libname.a'
     # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
     ;;
   esac
   ;;
 
 beos*)
-  library_names_spec='${libname}${shared_ext}'
+  library_names_spec='$libname$shared_ext'
   dynamic_linker="$host_os ld.so"
   shlibpath_var=LIBRARY_PATH
   ;;
@@ -13247,8 +13657,8 @@
 bsdi[45]*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -13260,7 +13670,7 @@
 
 cygwin* | mingw* | pw32* | cegcc*)
   version_type=windows
-  shrext_cmds=".dll"
+  shrext_cmds=.dll
   need_version=no
   need_lib_prefix=no
 
@@ -13269,8 +13679,8 @@
     # gcc
     library_names_spec='$libname.dll.a'
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
       $install_prog $dir/$dlname \$dldir/$dlname~
@@ -13286,17 +13696,17 @@
     case $host_os in
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
 
       sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
       ;;
     mingw* | cegcc*)
       # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
       ;;
     pw32*)
       # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
       ;;
     esac
     dynamic_linker='Win32 ld.exe'
@@ -13305,8 +13715,8 @@
   *,cl*)
     # Native MSVC
     libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
+    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+    library_names_spec='$libname.dll.lib'
 
     case $build_os in
     mingw*)
@@ -13333,7 +13743,7 @@
       sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
       ;;
     *)
-      sys_lib_search_path_spec="$LIB"
+      sys_lib_search_path_spec=$LIB
       if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
         # It is most probably a Windows format PATH.
         sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
@@ -13346,8 +13756,8 @@
     esac
 
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
       $install_prog $dir/$dlname \$dldir/$dlname'
@@ -13360,7 +13770,7 @@
 
   *)
     # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
     dynamic_linker='Win32 ld.exe'
     ;;
   esac
@@ -13373,8 +13783,8 @@
   version_type=darwin
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
+  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$major$shared_ext'
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
@@ -13387,8 +13797,8 @@
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -13406,12 +13816,13 @@
   version_type=freebsd-$objformat
   case $version_type in
     freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
       need_version=no
       need_lib_prefix=no
       ;;
     freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
       need_version=yes
       ;;
   esac
@@ -13441,10 +13852,10 @@
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
+  shlibpath_overrides_runpath=no
   sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
   hardcode_into_libs=yes
   ;;
@@ -13462,14 +13873,15 @@
     dynamic_linker="$host_os dld.so"
     shlibpath_var=LD_LIBRARY_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    if test 32 = "$HPUX_IA64_MODE"; then
       sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
     else
       sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
     fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
   hppa*64*)
     shrext_cmds='.sl'
@@ -13477,8 +13889,8 @@
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
@@ -13487,8 +13899,8 @@
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=SHLIB_PATH
     shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     ;;
   esac
   # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
@@ -13501,8 +13913,8 @@
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
@@ -13513,7 +13925,7 @@
   case $host_os in
     nonstopux*) version_type=nonstopux ;;
     *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
+	if test yes = "$lt_cv_prog_gnu_ld"; then
 		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
@@ -13521,8 +13933,8 @@
   esac
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
   case $host_os in
   irix5* | nonstopux*)
     libsuff= shlibsuff=
@@ -13541,8 +13953,8 @@
   esac
   shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
   shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
   hardcode_into_libs=yes
   ;;
 
@@ -13551,13 +13963,33 @@
   dynamic_linker=no
   ;;
 
+linux*android*)
+  version_type=none # Android doesn't support versioned libraries.
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext'
+  soname_spec='$libname$release$shared_ext'
+  finish_cmds=
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  dynamic_linker='Android linker'
+  # Don't embed -rpath directories since the linker doesn't support them.
+  hardcode_libdir_flag_spec='-L$libdir'
+  ;;
+
 # This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
@@ -13601,7 +14033,12 @@
   # before this can be enabled.
   hardcode_into_libs=yes
 
-  # Append ld.so.conf contents to the search path
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
   if test -f /etc/ld.so.conf; then
     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
@@ -13633,12 +14070,12 @@
   need_lib_prefix=no
   need_version=no
   if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
     dynamic_linker='NetBSD (a.out) ld.so'
   else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     dynamic_linker='NetBSD ld.elf_so'
   fi
   shlibpath_var=LD_LIBRARY_PATH
@@ -13648,7 +14085,7 @@
 
 newsos6)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   ;;
@@ -13657,58 +14094,68 @@
   version_type=qnx
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   dynamic_linker='ldqnx.so'
   ;;
 
-openbsd*)
+openbsd* | bitrig*)
   version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
+  sys_lib_dlsearch_path_spec=/usr/lib
   need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    need_version=no
+  else
+    need_version=yes
+  fi
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
   shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
+  shlibpath_overrides_runpath=yes
   ;;
 
 os2*)
   libname_spec='$name'
-  shrext_cmds=".dll"
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
   need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
+  # OS/2 can only load a DLL with a base name of 8 characters or less.
+  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+    v=$($ECHO $release$versuffix | tr -d .-);
+    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+    $ECHO $n$v`$shared_ext'
+  library_names_spec='${libname}_dll.$libext'
   dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
+  shlibpath_var=BEGINLIBPATH
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  postinstall_cmds='base_file=`basename \$file`~
+    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+    dldir=$destdir/`dirname \$dlpath`~
+    test -d \$dldir || mkdir -p \$dldir~
+    $install_prog $dir/$dlname \$dldir/$dlname~
+    chmod a+x \$dldir/$dlname~
+    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+    fi'
+  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+    dlpath=$dir/\$dldll~
+    $RM \$dlpath'
   ;;
 
 osf3* | osf4* | osf5*)
   version_type=osf
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
 rdos*)
@@ -13719,8 +14166,8 @@
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
@@ -13730,11 +14177,11 @@
 
 sunos4*)
   version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
   finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     need_lib_prefix=no
   fi
   need_version=yes
@@ -13742,8 +14189,8 @@
 
 sysv4 | sysv4.3*)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   case $host_vendor in
     sni)
@@ -13764,24 +14211,24 @@
   ;;
 
 sysv4*MP*)
-  if test -d /usr/nec ;then
+  if test -d /usr/nec; then
     version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
+    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+    soname_spec='$libname$shared_ext.$major'
     shlibpath_var=LD_LIBRARY_PATH
   fi
   ;;
 
 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
+  version_type=sco
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
   else
     sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
@@ -13799,7 +14246,7 @@
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
@@ -13807,8 +14254,8 @@
 
 uts4*)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -13818,20 +14265,35 @@
 esac
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
 $as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
+test no = "$dynamic_linker" && can_build_shared=no
 
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
 
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
 fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
 fi
 
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
+
+
+
+
+
 
 
 
@@ -13928,15 +14390,15 @@
 hardcode_action=
 if test -n "$hardcode_libdir_flag_spec" ||
    test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
+   test yes = "$hardcode_automatic"; then
 
   # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
+  if test no != "$hardcode_direct" &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
      # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
+     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" &&
+     test no != "$hardcode_minus_L"; then
     # Linking always hardcodes the temporary library directory.
     hardcode_action=relink
   else
@@ -13951,12 +14413,12 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
 $as_echo "$hardcode_action" >&6; }
 
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; then
+if test relink = "$hardcode_action" ||
+   test yes = "$inherit_rpath"; then
   # Fast installation is not supported
   enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
+elif test yes = "$shlibpath_overrides_runpath" ||
+     test no = "$enable_shared"; then
   # Fast installation is not necessary
   enable_fast_install=needless
 fi
@@ -13966,7 +14428,7 @@
 
 
 
-  if test "x$enable_dlopen" != xyes; then
+  if test yes != "$enable_dlopen"; then
   enable_dlopen=unknown
   enable_dlopen_self=unknown
   enable_dlopen_self_static=unknown
@@ -13976,23 +14438,23 @@
 
   case $host_os in
   beos*)
-    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen=load_add_on
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
     ;;
 
   mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen=LoadLibrary
     lt_cv_dlopen_libs=
     ;;
 
   cygwin*)
-    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen=dlopen
     lt_cv_dlopen_libs=
     ;;
 
   darwin*)
-  # if libdl is installed we need to link against it
+    # if libdl is installed we need to link against it
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
 $as_echo_n "checking for dlopen in -ldl... " >&6; }
 if ${ac_cv_lib_dl_dlopen+:} false; then :
@@ -14030,10 +14492,10 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
 $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
 if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
 else
 
-    lt_cv_dlopen="dyld"
+    lt_cv_dlopen=dyld
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
 
@@ -14041,10 +14503,18 @@
 
     ;;
 
+  tpf*)
+    # Don't try to run any link tests for TPF.  We know it's impossible
+    # because TPF is a cross-compiler, and we know how we open DSOs.
+    lt_cv_dlopen=dlopen
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=no
+    ;;
+
   *)
     ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
 if test "x$ac_cv_func_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load"
+  lt_cv_dlopen=shl_load
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
 $as_echo_n "checking for shl_load in -ldld... " >&6; }
@@ -14083,11 +14553,11 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
 $as_echo "$ac_cv_lib_dld_shl_load" >&6; }
 if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+  lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
 else
   ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
 if test "x$ac_cv_func_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen"
+  lt_cv_dlopen=dlopen
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
 $as_echo_n "checking for dlopen in -ldl... " >&6; }
@@ -14126,7 +14596,7 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
 $as_echo "$ac_cv_lib_dl_dlopen" >&6; }
 if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
 $as_echo_n "checking for dlopen in -lsvld... " >&6; }
@@ -14165,7 +14635,7 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
 $as_echo "$ac_cv_lib_svld_dlopen" >&6; }
 if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+  lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
 $as_echo_n "checking for dld_link in -ldld... " >&6; }
@@ -14204,7 +14674,7 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
 $as_echo "$ac_cv_lib_dld_dld_link" >&6; }
 if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+  lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
 fi
 
 
@@ -14225,21 +14695,21 @@
     ;;
   esac
 
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
+  if test no = "$lt_cv_dlopen"; then
     enable_dlopen=no
+  else
+    enable_dlopen=yes
   fi
 
   case $lt_cv_dlopen in
   dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+    save_CPPFLAGS=$CPPFLAGS
+    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
 
-    save_LDFLAGS="$LDFLAGS"
+    save_LDFLAGS=$LDFLAGS
     wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
 
-    save_LIBS="$LIBS"
+    save_LIBS=$LIBS
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
@@ -14247,7 +14717,7 @@
 if ${lt_cv_dlopen_self+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  	  if test "$cross_compiling" = yes; then :
+  	  if test yes = "$cross_compiling"; then :
   lt_cv_dlopen_self=cross
 else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -14294,9 +14764,9 @@
 #  endif
 #endif
 
-/* When -fvisbility=hidden is used, assume the code has been annotated
+/* When -fvisibility=hidden is used, assume the code has been annotated
    correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
 int fnord () __attribute__((visibility("default")));
 #endif
 
@@ -14326,7 +14796,7 @@
   (eval $ac_link) 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -14346,14 +14816,14 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
 $as_echo "$lt_cv_dlopen_self" >&6; }
 
-    if test "x$lt_cv_dlopen_self" = xyes; then
+    if test yes = "$lt_cv_dlopen_self"; then
       wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
 if ${lt_cv_dlopen_self_static+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  	  if test "$cross_compiling" = yes; then :
+  	  if test yes = "$cross_compiling"; then :
   lt_cv_dlopen_self_static=cross
 else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -14400,9 +14870,9 @@
 #  endif
 #endif
 
-/* When -fvisbility=hidden is used, assume the code has been annotated
+/* When -fvisibility=hidden is used, assume the code has been annotated
    correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
 int fnord () __attribute__((visibility("default")));
 #endif
 
@@ -14432,7 +14902,7 @@
   (eval $ac_link) 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+  test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -14453,9 +14923,9 @@
 $as_echo "$lt_cv_dlopen_self_static" >&6; }
     fi
 
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
+    CPPFLAGS=$save_CPPFLAGS
+    LDFLAGS=$save_LDFLAGS
+    LIBS=$save_LIBS
     ;;
   esac
 
@@ -14499,7 +14969,7 @@
 # FIXME - insert some real tests, host_os isn't really good enough
   case $host_os in
   darwin*)
-    if test -n "$STRIP" ; then
+    if test -n "$STRIP"; then
       striplib="$STRIP -x"
       old_striplib="$STRIP -S"
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
@@ -14527,7 +14997,7 @@
 
 
 
-  # Report which library types will actually be built
+  # Report what library types will actually be built
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
 $as_echo_n "checking if libtool supports shared libraries... " >&6; }
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
@@ -14535,13 +15005,13 @@
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
 $as_echo_n "checking whether to build shared libraries... " >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
+  test no = "$can_build_shared" && enable_shared=no
 
   # On AIX, shared libraries and static libraries use the same namespace, and
   # are all built from PIC.
   case $host_os in
   aix3*)
-    test "$enable_shared" = yes && enable_static=no
+    test yes = "$enable_shared" && enable_static=no
     if test -n "$RANLIB"; then
       archive_cmds="$archive_cmds~\$RANLIB \$lib"
       postinstall_cmds='$RANLIB $lib'
@@ -14549,8 +15019,12 @@
     ;;
 
   aix[4-9]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
+    if test ia64 != "$host_cpu"; then
+      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+      yes,aix,yes) ;;			# shared object as lib.so file only
+      yes,svr4,*) ;;			# shared object as lib.so archive member only
+      yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+      esac
     fi
     ;;
   esac
@@ -14560,7 +15034,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
 $as_echo_n "checking whether to build static libraries... " >&6; }
   # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
+  test yes = "$enable_shared" || enable_static=yes
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
 $as_echo "$enable_static" >&6; }
 
@@ -14574,7 +15048,7 @@
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-CC="$lt_save_CC"
+CC=$lt_save_CC
 
 
 
@@ -14600,8 +15074,8 @@
 
 
 
-GST_REQ=1.7.1
-GSTPB_REQ=1.7.1
+GST_REQ=1.7.2
+GSTPB_REQ=1.7.2
 
 
 
@@ -19596,15 +20070,15 @@
 
 func_stripname_cnf ()
 {
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  case $2 in
+  .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;;
+  *)  func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;;
   esac
 } # func_stripname_cnf
 
-      if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
+      if test -n "$CXX" && ( test no != "$CXX" &&
+    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
+    (test g++ != "$CXX"))); then
   ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -19783,7 +20257,7 @@
 # the CXX compiler isn't working.  Some variables (like enable_shared)
 # are currently assumed to apply to all compilers on this platform,
 # and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
+if test yes != "$_lt_caught_CXX_error"; then
   # Code to be used in simple compile tests
   lt_simple_compile_test_code="int some_variable = 0;"
 
@@ -19844,46 +20318,39 @@
   CFLAGS=$CXXFLAGS
   compiler=$CC
   compiler_CXX=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+  func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
 
 
   if test -n "$compiler"; then
     # We don't want -fno-exception when compiling C++ code, so set the
     # no_builtin_flag separately
-    if test "$GXX" = yes; then
+    if test yes = "$GXX"; then
       lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
     else
       lt_prog_compiler_no_builtin_flag_CXX=
     fi
 
-    if test "$GXX" = yes; then
+    if test yes = "$GXX"; then
       # Set up default GNU C++ configuration
 
 
 
 # Check whether --with-gnu-ld was given.
 if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+  withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
 else
   with_gnu_ld=no
 fi
 
 ac_prog=ld
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   # Check if gcc -print-prog-name=ld gives a path.
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
 $as_echo_n "checking for ld used by $CC... " >&6; }
   case $host in
   *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
+    # gcc leaves a trailing carriage return, which upsets mingw
     ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
   *)
     ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
@@ -19897,7 +20364,7 @@
       while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
 	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
       done
-      test -z "$LD" && LD="$ac_prog"
+      test -z "$LD" && LD=$ac_prog
       ;;
   "")
     # If it fails, then pretend we aren't using GCC.
@@ -19908,7 +20375,7 @@
     with_gnu_ld=unknown
     ;;
   esac
-elif test "$with_gnu_ld" = yes; then
+elif test yes = "$with_gnu_ld"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
 $as_echo_n "checking for GNU ld... " >&6; }
 else
@@ -19919,32 +20386,32 @@
   $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
   for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
     test -z "$ac_dir" && ac_dir=.
     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
+      lt_cv_path_LD=$ac_dir/$ac_prog
       # Check to see if the program is GNU ld.  I'd rather use --version,
       # but apparently some variants of GNU ld only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
       case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
       *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
+	test no != "$with_gnu_ld" && break
 	;;
       *)
-	test "$with_gnu_ld" != yes && break
+	test yes != "$with_gnu_ld" && break
 	;;
       esac
     fi
   done
-  IFS="$lt_save_ifs"
+  IFS=$lt_save_ifs
 else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
 fi
 fi
 
-LD="$lt_cv_path_LD"
+LD=$lt_cv_path_LD
 if test -n "$LD"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
 $as_echo "$LD" >&6; }
@@ -19980,22 +20447,22 @@
 
       # Check if GNU C++ uses GNU ld as the underlying linker, since the
       # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      if test yes = "$with_gnu_ld"; then
+        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+        export_dynamic_flag_spec_CXX='$wl--export-dynamic'
 
         # If archive_cmds runs LD, not CC, wlarc should be empty
         # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
         #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
+        wlarc='$wl'
 
         # ancient GNU ld didn't support --whole-archive et. al.
         if eval "`$CC -print-prog-name=ld` --help 2>&1" |
 	  $GREP 'no-whole-archive' > /dev/null; then
-          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+          whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
         else
           whole_archive_flag_spec_CXX=
         fi
@@ -20032,18 +20499,30 @@
         ld_shlibs_CXX=no
         ;;
       aix[4-9]*)
-        if test "$host_cpu" = ia64; then
+        if test ia64 = "$host_cpu"; then
           # On IA64, the linker does run time linking by default, so we don't
           # have to do anything special.
           aix_use_runtimelinking=no
           exp_sym_flag='-Bexport'
-          no_entry_flag=""
+          no_entry_flag=
         else
           aix_use_runtimelinking=no
 
           # Test if we are trying to use run time linking or normal
           # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
+          # have runtime linking enabled, and use it for executables.
+          # For shared libraries, we enable/disable runtime linking
+          # depending on the kind of the shared library created -
+          # when "with_aix_soname,aix_use_runtimelinking" is:
+          # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "aix,yes"  lib.so          shared, rtl:yes, for executables
+          #            lib.a           static archive
+          # "both,no"  lib.so.V(shr.o) shared, rtl:yes
+          #            lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a(lib.so.V) shared, rtl:no
+          # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a           static archive
           case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
 	    for ld_flag in $LDFLAGS; do
 	      case $ld_flag in
@@ -20053,6 +20532,13 @@
 	        ;;
 	      esac
 	    done
+	    if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	      # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	      # so we don't have lib.a shared libs to link our executables.
+	      # We have to force runtime linking in this case.
+	      aix_use_runtimelinking=yes
+	      LDFLAGS="$LDFLAGS -Wl,-brtl"
+	    fi
 	    ;;
           esac
 
@@ -20071,13 +20557,21 @@
         hardcode_direct_absolute_CXX=yes
         hardcode_libdir_separator_CXX=':'
         link_all_deplibs_CXX=yes
-        file_list_spec_CXX='${wl}-f,'
+        file_list_spec_CXX='$wl-f,'
+        case $with_aix_soname,$aix_use_runtimelinking in
+        aix,*) ;;	# no import file
+        svr4,* | *,yes) # use import file
+          # The Import File defines what to hardcode.
+          hardcode_direct_CXX=no
+          hardcode_direct_absolute_CXX=no
+          ;;
+        esac
 
-        if test "$GXX" = yes; then
+        if test yes = "$GXX"; then
           case $host_os in aix4.[012]|aix4.[012].*)
           # We only want to do this on AIX 4.2 and lower, the check
           # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
+	  collect2name=`$CC -print-prog-name=collect2`
 	  if test -f "$collect2name" &&
 	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
 	  then
@@ -20095,36 +20589,44 @@
 	  fi
           esac
           shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag=$shared_flag' $wl-G'
 	  fi
+	  # Need to ensure runtime linking is disabled for the traditional
+	  # shared library, or the linker may eventually find shared libraries
+	  # /with/ Import File - we do not want to mix them.
+	  shared_flag_aix='-shared'
+	  shared_flag_svr4='-shared $wl-G'
         else
           # not using gcc
-          if test "$host_cpu" = ia64; then
+          if test ia64 = "$host_cpu"; then
 	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
 	  # chokes on -Wl,-G. The following line is correct:
 	  shared_flag='-G'
           else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
+	    if test yes = "$aix_use_runtimelinking"; then
+	      shared_flag='$wl-G'
 	    else
-	      shared_flag='${wl}-bM:SRE'
+	      shared_flag='$wl-bM:SRE'
 	    fi
+	    shared_flag_aix='$wl-bM:SRE'
+	    shared_flag_svr4='$wl-G'
           fi
         fi
 
-        export_dynamic_flag_spec_CXX='${wl}-bexpall'
+        export_dynamic_flag_spec_CXX='$wl-bexpall'
         # It seems that -bexpall does not export symbols beginning with
         # underscore (_), so it is better to generate a list of symbols to
 	# export.
         always_export_symbols_CXX=yes
-        if test "$aix_use_runtimelinking" = yes; then
+	if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
           # Warning - without using the other runtime loading flags (-brtl),
           # -berok will link without error, but may produce a broken library.
-          allow_undefined_flag_CXX='-berok'
+          # The "-G" linker flag allows undefined symbols.
+          no_undefined_flag_CXX='-bernotok'
           # Determine the default libpath from the value encoded in an empty
           # executable.
-          if test "${lt_cv_aix_libpath+set}" = set; then
+          if test set = "${lt_cv_aix_libpath+set}"; then
   aix_libpath=$lt_cv_aix_libpath
 else
   if ${lt_cv_aix_libpath__CXX+:} false; then :
@@ -20159,7 +20661,7 @@
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
   if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
+    lt_cv_aix_libpath__CXX=/usr/lib:/lib
   fi
 
 fi
@@ -20167,18 +20669,18 @@
   aix_libpath=$lt_cv_aix_libpath__CXX
 fi
 
-          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+          hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
 
-          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
         else
-          if test "$host_cpu" = ia64; then
-	    hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+          if test ia64 = "$host_cpu"; then
+	    hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib'
 	    allow_undefined_flag_CXX="-z nodefs"
-	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
           else
 	    # Determine the default libpath from the value encoded in an
 	    # empty executable.
-	    if test "${lt_cv_aix_libpath+set}" = set; then
+	    if test set = "${lt_cv_aix_libpath+set}"; then
   aix_libpath=$lt_cv_aix_libpath
 else
   if ${lt_cv_aix_libpath__CXX+:} false; then :
@@ -20213,7 +20715,7 @@
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
   if test -z "$lt_cv_aix_libpath__CXX"; then
-    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
+    lt_cv_aix_libpath__CXX=/usr/lib:/lib
   fi
 
 fi
@@ -20221,22 +20723,34 @@
   aix_libpath=$lt_cv_aix_libpath__CXX
 fi
 
-	    hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+	    hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath"
 	    # Warning - without using the other run time loading flags,
 	    # -berok will link without error, but may produce a broken library.
-	    no_undefined_flag_CXX=' ${wl}-bernotok'
-	    allow_undefined_flag_CXX=' ${wl}-berok'
-	    if test "$with_gnu_ld" = yes; then
+	    no_undefined_flag_CXX=' $wl-bernotok'
+	    allow_undefined_flag_CXX=' $wl-berok'
+	    if test yes = "$with_gnu_ld"; then
 	      # We only use this code for GNU lds that support --whole-archive.
-	      whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	      whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
 	    else
 	      # Exported symbols can be pulled into shared objects from archives
 	      whole_archive_flag_spec_CXX='$convenience'
 	    fi
 	    archive_cmds_need_lc_CXX=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	    archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	    # -brtl affects multiple linker settings, -berok does not and is overridden later
+	    compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`'
+	    if test svr4 != "$with_aix_soname"; then
+	      # This is similar to how AIX traditionally builds its shared
+	      # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	    fi
+	    if test aix != "$with_aix_soname"; then
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
+	    else
+	      # used by -dlpreopen to get the symbols
+	      archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	    fi
+	    archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d'
           fi
         fi
         ;;
@@ -20246,7 +20760,7 @@
 	  allow_undefined_flag_CXX=unsupported
 	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
 	  # support --undefined.  This deserves some investigation.  FIXME
-	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
 	else
 	  ld_shlibs_CXX=no
 	fi
@@ -20274,57 +20788,58 @@
 	  # Tell ltmain to make .lib files, not .a files.
 	  libext=lib
 	  # Tell ltmain to make .dll files, not .so files.
-	  shrext_cmds=".dll"
+	  shrext_cmds=.dll
 	  # FIXME: Setting linknames here is a bad hack.
-	  archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	  archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	    else
-	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	    fi~
-	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	    linknames='
+	  archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	  archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+              cp "$export_symbols" "$output_objdir/$soname.def";
+              echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+            else
+              $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+            fi~
+            $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+            linknames='
 	  # The linker will not automatically build a static lib if we build a DLL.
 	  # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
 	  enable_shared_with_static_runtimes_CXX=yes
 	  # Don't use ranlib
 	  old_postinstall_cmds_CXX='chmod 644 $oldlib'
 	  postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
-	    lt_tool_outputfile="@TOOL_OUTPUT@"~
-	    case $lt_outputfile in
-	      *.exe|*.EXE) ;;
-	      *)
-		lt_outputfile="$lt_outputfile.exe"
-		lt_tool_outputfile="$lt_tool_outputfile.exe"
-		;;
-	    esac~
-	    func_to_tool_file "$lt_outputfile"~
-	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	      $RM "$lt_outputfile.manifest";
-	    fi'
+            lt_tool_outputfile="@TOOL_OUTPUT@"~
+            case $lt_outputfile in
+              *.exe|*.EXE) ;;
+              *)
+                lt_outputfile=$lt_outputfile.exe
+                lt_tool_outputfile=$lt_tool_outputfile.exe
+                ;;
+            esac~
+            func_to_tool_file "$lt_outputfile"~
+            if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+              $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+              $RM "$lt_outputfile.manifest";
+            fi'
 	  ;;
 	*)
 	  # g++
 	  # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
 	  # as there is no search path for DLLs.
 	  hardcode_libdir_flag_spec_CXX='-L$libdir'
-	  export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
+	  export_dynamic_flag_spec_CXX='$wl--export-all-symbols'
 	  allow_undefined_flag_CXX=unsupported
 	  always_export_symbols_CXX=no
 	  enable_shared_with_static_runtimes_CXX=yes
 
 	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	    # If the export-symbols file already is a .def file (1st line
-	    # is EXPORTS), use it as is; otherwise, prepend...
-	    archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      cp $export_symbols $output_objdir/$soname.def;
-	    else
-	      echo EXPORTS > $output_objdir/$soname.def;
-	      cat $export_symbols >> $output_objdir/$soname.def;
-	    fi~
-	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    # If the export-symbols file already is a .def file, use it as
+	    # is; otherwise, prepend EXPORTS...
+	    archive_expsym_cmds_CXX='if   test DEF = "`$SED -n     -e '\''s/^[	 ]*//'\''     -e '\''/^\(;.*\)*$/d'\''     -e '\''s/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p'\''     -e q     $export_symbols`" ; then
+              cp $export_symbols $output_objdir/$soname.def;
+            else
+              echo EXPORTS > $output_objdir/$soname.def;
+              cat $export_symbols >> $output_objdir/$soname.def;
+            fi~
+            $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
 	  else
 	    ld_shlibs_CXX=no
 	  fi
@@ -20338,27 +20853,27 @@
   hardcode_direct_CXX=no
   hardcode_automatic_CXX=yes
   hardcode_shlibpath_var_CXX=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  if test yes = "$lt_cv_ld_force_load"; then
+    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
 
   else
     whole_archive_flag_spec_CXX=''
   fi
   link_all_deplibs_CXX=yes
-  allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+  allow_undefined_flag_CXX=$_lt_dar_allow_undefined
   case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
+     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
      *) _lt_dar_can_shared=$GCC ;;
   esac
-  if test "$_lt_dar_can_shared" = "yes"; then
+  if test yes = "$_lt_dar_can_shared"; then
     output_verbose_link_cmd=func_echo_all
-    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-       if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
+       if test yes != "$lt_cv_apple_cc_single_mod"; then
+      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
+      archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
     fi
 
   else
@@ -20367,6 +20882,34 @@
 
 	;;
 
+      os2*)
+	hardcode_libdir_flag_spec_CXX='-L$libdir'
+	hardcode_minus_L_CXX=yes
+	allow_undefined_flag_CXX=unsupported
+	shrext_cmds=.dll
+	archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  prefix_cmds="$SED"~
+	  if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	    prefix_cmds="$prefix_cmds -e 1d";
+	  fi~
+	  prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	  cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+	enable_shared_with_static_runtimes_CXX=yes
+	;;
+
       dgux*)
         case $cc_basename in
           ec++*)
@@ -20402,14 +20945,14 @@
         ;;
 
       haiku*)
-        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
         link_all_deplibs_CXX=yes
         ;;
 
       hpux9*)
-        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+        hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
         hardcode_libdir_separator_CXX=:
-        export_dynamic_flag_spec_CXX='${wl}-E'
+        export_dynamic_flag_spec_CXX='$wl-E'
         hardcode_direct_CXX=yes
         hardcode_minus_L_CXX=yes # Not in the search PATH,
 				             # but as the default
@@ -20421,7 +20964,7 @@
             ld_shlibs_CXX=no
             ;;
           aCC*)
-            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
             # Commands to make compiler produce verbose output that lists
             # what "hidden" libraries, object files and flags are used when
             # linking a shared library.
@@ -20430,11 +20973,11 @@
             # explicitly linking system object files so we need to strip them
             # from the output so that they don't get included in the library
             # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
             ;;
           *)
-            if test "$GXX" = yes; then
-              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            if test yes = "$GXX"; then
+              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
             else
               # FIXME: insert proper C++ library support
               ld_shlibs_CXX=no
@@ -20444,15 +20987,15 @@
         ;;
 
       hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+        if test no = "$with_gnu_ld"; then
+	  hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir'
 	  hardcode_libdir_separator_CXX=:
 
           case $host_cpu in
             hppa*64*|ia64*)
               ;;
             *)
-	      export_dynamic_flag_spec_CXX='${wl}-E'
+	      export_dynamic_flag_spec_CXX='$wl-E'
               ;;
           esac
         fi
@@ -20478,13 +21021,13 @@
           aCC*)
 	    case $host_cpu in
 	      hppa*64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	        ;;
 	      ia64*)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	        ;;
 	      *)
-	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	        ;;
 	    esac
 	    # Commands to make compiler produce verbose output that lists
@@ -20495,20 +21038,20 @@
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 	    ;;
           *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
 	        case $host_cpu in
 	          hppa*64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	          ia64*)
-	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	          *)
-	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	        esac
 	      fi
@@ -20523,22 +21066,22 @@
       interix[3-9]*)
 	hardcode_direct_CXX=no
 	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	export_dynamic_flag_spec_CXX='${wl}-E'
+	hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='$wl-E'
 	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
 	# Instead, shared libraries are loaded at an image base (0x10000000 by
 	# default) and relocated if they conflict, which is a slow very memory
 	# consuming and fragmenting process.  To avoid this, we pick a random,
 	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
 	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
 	;;
       irix5* | irix6*)
         case $cc_basename in
           CC*)
 	    # SGI C++
-	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 
 	    # Archives containing C++ object files must be created using
 	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
@@ -20547,17 +21090,17 @@
 	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
 	    ;;
           *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 	      else
-	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
 	      fi
 	    fi
 	    link_all_deplibs_CXX=yes
 	    ;;
         esac
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
         hardcode_libdir_separator_CXX=:
         inherit_rpath_CXX=yes
         ;;
@@ -20570,8 +21113,8 @@
 	    # KCC will only create a shared library if the output file
 	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
 	    # to its proper name (with version) after linking.
-	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
 	    # Commands to make compiler produce verbose output that lists
 	    # what "hidden" libraries, object files and flags are used when
 	    # linking a shared library.
@@ -20580,10 +21123,10 @@
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
 
 	    # Archives containing C++ object files must be created using
 	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
@@ -20597,59 +21140,59 @@
 	    # earlier do not add the objects themselves.
 	    case `$CC -V 2>&1` in
 	      *"Version 7."*)
-	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 		;;
 	      *)  # Version 8.0 or newer
 	        tmp_idyn=
 	        case $host_cpu in
 		  ia64*) tmp_idyn=' -i_dynamic';;
 		esac
-	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 		;;
 	    esac
 	    archive_cmds_need_lc_CXX=no
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive'
 	    ;;
           pgCC* | pgcpp*)
             # Portland Group C++ compiler
 	    case `$CC -V` in
 	    *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
 	      prelink_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
 	      old_archive_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-		$RANLIB $oldlib'
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+                $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+                $RANLIB $oldlib'
 	      archive_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
 	      archive_expsym_cmds_CXX='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 	      ;;
 	    *) # Version 6 and above use weak symbols
-	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 	      ;;
 	    esac
 
-	    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	    hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
             ;;
 	  cxx*)
 	    # Compaq C++
-	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname  -o $lib $wl-retain-symbols-file $wl$export_symbols'
 
 	    runpath_var=LD_RUN_PATH
 	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
@@ -20663,18 +21206,18 @@
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
 	    ;;
 	  xl* | mpixl* | bgxl*)
 	    # IBM XL 8.0 on PPC, with GNU ld
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
+	    export_dynamic_flag_spec_CXX='$wl--export-dynamic'
+	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    if test yes = "$supports_anon_versioning"; then
 	      archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+                echo "local: *; };" >> $output_objdir/$libname.ver~
+                $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
 	    fi
 	    ;;
 	  *)
@@ -20682,10 +21225,10 @@
 	    *Sun\ C*)
 	      # Sun C++ 5.9
 	      no_undefined_flag_CXX=' -zdefs'
-	      archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+	      archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
 	      hardcode_libdir_flag_spec_CXX='-R$libdir'
-	      whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	      whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	      compiler_needs_object_CXX=yes
 
 	      # Not sure whether something based on
@@ -20743,22 +21286,17 @@
         ld_shlibs_CXX=yes
 	;;
 
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	ld_shlibs_CXX=no
-	;;
-
-      openbsd*)
+      openbsd* | bitrig*)
 	if test -f /usr/libexec/ld.so; then
 	  hardcode_direct_CXX=yes
 	  hardcode_shlibpath_var_CXX=no
 	  hardcode_direct_absolute_CXX=yes
 	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    export_dynamic_flag_spec_CXX='${wl}-E'
-	    whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+	  hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
+	    export_dynamic_flag_spec_CXX='$wl-E'
+	    whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
 	  fi
 	  output_verbose_link_cmd=func_echo_all
 	else
@@ -20774,9 +21312,9 @@
 	    # KCC will only create a shared library if the output file
 	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
 	    # to its proper name (with version) after linking.
-	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
 
-	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir'
 	    hardcode_libdir_separator_CXX=:
 
 	    # Archives containing C++ object files must be created using
@@ -20794,17 +21332,17 @@
           cxx*)
 	    case $host in
 	      osf3*)
-	        allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	        allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
+	        archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	        hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
 		;;
 	      *)
 	        allow_undefined_flag_CXX=' -expect_unresolved \*'
-	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 	        archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
+                  echo "-hidden">> $lib.exp~
+                  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
+                  $RM $lib.exp'
 	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
 		;;
 	    esac
@@ -20819,21 +21357,21 @@
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 	    ;;
 	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*'
 	      case $host in
 	        osf3*)
-	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	          archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 		  ;;
 	        *)
-	          archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	          archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 		  ;;
 	      esac
 
-	      hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	      hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir'
 	      hardcode_libdir_separator_CXX=:
 
 	      # Commands to make compiler produce verbose output that lists
@@ -20879,9 +21417,9 @@
 	    # Sun C++ 4.2, 5.x and Centerline C++
             archive_cmds_need_lc_CXX=yes
 	    no_undefined_flag_CXX=' -zdefs'
-	    archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	    archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+              $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
 	    hardcode_libdir_flag_spec_CXX='-R$libdir'
 	    hardcode_shlibpath_var_CXX=no
@@ -20889,7 +21427,7 @@
 	      solaris2.[0-5] | solaris2.[0-5].*) ;;
 	      *)
 		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
+		# but understands '-z linker_flag'.
 	        # Supported since Solaris 2.6 (maybe 2.5.1?)
 		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
 	        ;;
@@ -20906,30 +21444,30 @@
 	    ;;
           gcx*)
 	    # Green Hills C++ Compiler
-	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
 
 	    # The C++ compiler must be used to create the archive.
 	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
 	    ;;
           *)
 	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      no_undefined_flag_CXX=' $wl-z ${wl}defs'
 	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
 	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+                  $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
 	        # Commands to make compiler produce verbose output that lists
 	        # what "hidden" libraries, object files and flags are used when
 	        # linking a shared library.
 	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	        # g++ 2.7 appears to require '-G' NOT '-shared' on this
 	        # platform.
-	        archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
 	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+                  $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
 	        # Commands to make compiler produce verbose output that lists
 	        # what "hidden" libraries, object files and flags are used when
@@ -20937,11 +21475,11 @@
 	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 	      fi
 
-	      hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+	      hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir'
 	      case $host_os in
 		solaris2.[0-5] | solaris2.[0-5].*) ;;
 		*)
-		  whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+		  whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
 		  ;;
 	      esac
 	    fi
@@ -20950,52 +21488,52 @@
         ;;
 
     sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_CXX='${wl}-z,text'
+      no_undefined_flag_CXX='$wl-z,text'
       archive_cmds_need_lc_CXX=no
       hardcode_shlibpath_var_CXX=no
       runpath_var='LD_RUN_PATH'
 
       case $cc_basename in
         CC*)
-	  archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
       esac
       ;;
 
       sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
+	# Note: We CANNOT use -z defs as we might desire, because we do not
 	# link with -lc, and that would cause any symbols used from libc to
 	# always be unresolved, which means just about no library would
 	# ever link correctly.  If we're not using GNU ld we use -z text
 	# though, which does catch some bad symbols but isn't as heavy-handed
 	# as -z defs.
-	no_undefined_flag_CXX='${wl}-z,text'
-	allow_undefined_flag_CXX='${wl}-z,nodefs'
+	no_undefined_flag_CXX='$wl-z,text'
+	allow_undefined_flag_CXX='$wl-z,nodefs'
 	archive_cmds_need_lc_CXX=no
 	hardcode_shlibpath_var_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
+	hardcode_libdir_flag_spec_CXX='$wl-R,$libdir'
 	hardcode_libdir_separator_CXX=':'
 	link_all_deplibs_CXX=yes
-	export_dynamic_flag_spec_CXX='${wl}-Bexport'
+	export_dynamic_flag_spec_CXX='$wl-Bexport'
 	runpath_var='LD_RUN_PATH'
 
 	case $cc_basename in
           CC*)
-	    archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	    old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
-	      '"$old_archive_cmds_CXX"
+              '"$old_archive_cmds_CXX"
 	    reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
-	      '"$reload_cmds_CXX"
+              '"$reload_cmds_CXX"
 	    ;;
 	  *)
-	    archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	    ;;
 	esac
       ;;
@@ -21027,10 +21565,10 @@
 
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
 $as_echo "$ld_shlibs_CXX" >&6; }
-    test "$ld_shlibs_CXX" = no && can_build_shared=no
+    test no = "$ld_shlibs_CXX" && can_build_shared=no
 
-    GCC_CXX="$GXX"
-    LD_CXX="$LD"
+    GCC_CXX=$GXX
+    LD_CXX=$LD
 
     ## CAVEAT EMPTOR:
     ## There is no encapsulation within the following macros, do not change
@@ -21074,13 +21612,13 @@
   pre_test_object_deps_done=no
 
   for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
+    case $prev$p in
 
     -L* | -R* | -l*)
        # Some compilers place space between "-{L,R}" and the path.
        # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
+       if test x-L = "$p" ||
+          test x-R = "$p"; then
 	 prev=$p
 	 continue
        fi
@@ -21096,16 +21634,16 @@
        case $p in
        =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
        esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
+       if test no = "$pre_test_object_deps_done"; then
+	 case $prev in
 	 -L | -R)
 	   # Internal compiler library paths should come after those
 	   # provided the user.  The postdeps already come after the
 	   # user supplied libs so there is no need to process them.
 	   if test -z "$compiler_lib_search_path_CXX"; then
-	     compiler_lib_search_path_CXX="${prev}${p}"
+	     compiler_lib_search_path_CXX=$prev$p
 	   else
-	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p"
 	   fi
 	   ;;
 	 # The "-l" case would never come before the object being
@@ -21113,9 +21651,9 @@
 	 esac
        else
 	 if test -z "$postdeps_CXX"; then
-	   postdeps_CXX="${prev}${p}"
+	   postdeps_CXX=$prev$p
 	 else
-	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+	   postdeps_CXX="${postdeps_CXX} $prev$p"
 	 fi
        fi
        prev=
@@ -21130,15 +21668,15 @@
 	 continue
        fi
 
-       if test "$pre_test_object_deps_done" = no; then
+       if test no = "$pre_test_object_deps_done"; then
 	 if test -z "$predep_objects_CXX"; then
-	   predep_objects_CXX="$p"
+	   predep_objects_CXX=$p
 	 else
 	   predep_objects_CXX="$predep_objects_CXX $p"
 	 fi
        else
 	 if test -z "$postdep_objects_CXX"; then
-	   postdep_objects_CXX="$p"
+	   postdep_objects_CXX=$p
 	 else
 	   postdep_objects_CXX="$postdep_objects_CXX $p"
 	 fi
@@ -21168,51 +21706,6 @@
   postdep_objects_CXX=
   postdeps_CXX=
   ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC* | sunCC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
 esac
 
 
@@ -21221,7 +21714,7 @@
 esac
  compiler_lib_search_dirs_CXX=
 if test -n "${compiler_lib_search_path_CXX}"; then
- compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'`
 fi
 
 
@@ -21260,17 +21753,18 @@
 
 
   # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
+  if test yes = "$GXX"; then
     lt_prog_compiler_wl_CXX='-Wl,'
     lt_prog_compiler_static_CXX='-static'
 
     case $host_os in
     aix*)
       # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	lt_prog_compiler_static_CXX='-Bstatic'
       fi
+      lt_prog_compiler_pic_CXX='-fPIC'
       ;;
 
     amigaos*)
@@ -21281,8 +21775,8 @@
         ;;
       m68k)
             # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
             lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
         ;;
       esac
@@ -21297,6 +21791,11 @@
       # Although the cygwin gcc ignores -fPIC, still need this for old-style
       # (--disable-auto-import) libraries
       lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      case $host_os in
+      os2*)
+	lt_prog_compiler_static_CXX='$wl-static'
+	;;
+      esac
       ;;
     darwin* | rhapsody*)
       # PIC is the default on this platform
@@ -21346,7 +21845,7 @@
     case $host_os in
       aix[4-9]*)
 	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
+	if test ia64 = "$host_cpu"; then
 	  # AIX 5 now supports IA64 processor
 	  lt_prog_compiler_static_CXX='-Bstatic'
 	else
@@ -21386,14 +21885,14 @@
 	case $cc_basename in
 	  CC*)
 	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
+	    lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
+	    if test ia64 != "$host_cpu"; then
 	      lt_prog_compiler_pic_CXX='+Z'
 	    fi
 	    ;;
 	  aCC*)
 	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    lt_prog_compiler_static_CXX='$wl-a ${wl}archive'
 	    case $host_cpu in
 	    hppa*64*|ia64*)
 	      # +Z the default
@@ -21430,7 +21929,7 @@
 	    lt_prog_compiler_pic_CXX='-fPIC'
 	    ;;
 	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
+	    # old Intel C++ for x86_64, which still supported -KPIC.
 	    lt_prog_compiler_wl_CXX='-Wl,'
 	    lt_prog_compiler_pic_CXX='-KPIC'
 	    lt_prog_compiler_static_CXX='-static'
@@ -21575,7 +22074,7 @@
   fi
 
 case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
+  # For platforms that do not support PIC, -DPIC is meaningless:
   *djgpp*)
     lt_prog_compiler_pic_CXX=
     ;;
@@ -21607,7 +22106,7 @@
   lt_cv_prog_compiler_pic_works_CXX=no
    ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"  ## exclude from sc_useless_quotes_in_assignment
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -21637,7 +22136,7 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
 
-if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
+if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then
     case $lt_prog_compiler_pic_CXX in
      "" | " "*) ;;
      *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
@@ -21663,7 +22162,7 @@
   $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_static_works_CXX=no
-   save_LDFLAGS="$LDFLAGS"
+   save_LDFLAGS=$LDFLAGS
    LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
    echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -21682,13 +22181,13 @@
      fi
    fi
    $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
+   LDFLAGS=$save_LDFLAGS
 
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
 
-if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
+if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then
     :
 else
     lt_prog_compiler_static_CXX=
@@ -21802,8 +22301,8 @@
 
 
 
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+hard_links=nottested
+if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then
   # do not overwrite the value of need_locks provided by the user
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
 $as_echo_n "checking if we can lock with hard links... " >&6; }
@@ -21815,9 +22314,9 @@
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
 $as_echo "$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+  if test no = "$hard_links"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
     need_locks=warn
   fi
 else
@@ -21834,17 +22333,21 @@
   case $host_os in
   aix[4-9]*)
     # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    # Also, AIX nm treats weak defined symbols like other global defined
-    # symbols, whereas GNU nm marks them as "W".
+    # -C means demangle to GNU nm, but means don't demangle to AIX nm.
+    # Without the "-l" option, or with the "-B" option, AIX nm treats
+    # weak defined symbols like other global defined symbols, whereas
+    # GNU nm marks them as "W".
+    # While the 'weak' keyword is ignored in the Export File, we need
+    # it in the Import File for the 'aix-soname' feature, so we have
+    # to replace the "-B" option with "-P" for AIX nm.
     if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
     else
-      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+      export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
     fi
     ;;
   pw32*)
-    export_symbols_cmds_CXX="$ltdll_cmds"
+    export_symbols_cmds_CXX=$ltdll_cmds
     ;;
   cygwin* | mingw* | cegcc*)
     case $cc_basename in
@@ -21867,7 +22370,7 @@
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
 $as_echo "$ld_shlibs_CXX" >&6; }
-test "$ld_shlibs_CXX" = no && can_build_shared=no
+test no = "$ld_shlibs_CXX" && can_build_shared=no
 
 with_gnu_ld_CXX=$with_gnu_ld
 
@@ -21884,7 +22387,7 @@
   # Assume -lc should be added
   archive_cmds_need_lc_CXX=yes
 
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
+  if test yes,yes = "$GCC,$enable_shared"; then
     case $archive_cmds_CXX in
     *'~'*)
       # FIXME: we may have to deal with multi-command sequences.
@@ -22012,7 +22515,7 @@
 library_names_spec=
 libname_spec='lib$name'
 soname_spec=
-shrext_cmds=".so"
+shrext_cmds=.so
 postinstall_cmds=
 postuninstall_cmds=
 finish_cmds=
@@ -22029,14 +22532,16 @@
 # flags to be left without arguments
 need_version=unknown
 
+
+
 case $host_os in
 aix3*)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
   # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
+  soname_spec='$libname$release$shared_ext$major'
   ;;
 
 aix[4-9]*)
@@ -22044,41 +22549,91 @@
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
+  if test ia64 = "$host_cpu"; then
     # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
     shlibpath_var=LD_LIBRARY_PATH
   else
     # With GCC up to 2.95.x, collect2 would create an import file
     # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
+    # the line '#! .'.  This would cause the generated library to
+    # depend on '.', always an invalid library.  This was fixed in
     # development snapshots of GCC prior to 3.0.
     case $host_os in
       aix4 | aix4.[01] | aix4.[01].*)
       if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
 	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	   echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
 	:
       else
 	can_build_shared=no
       fi
       ;;
     esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # Using Import Files as archive members, it is possible to support
+    # filename-based versioning of shared library archives on AIX. While
+    # this would work for both with and without runtime linking, it will
+    # prevent static linking of such archives. So we do filename-based
+    # shared library versioning with .so extension only, which is used
+    # when both runtime linking and shared linking is enabled.
+    # Unfortunately, runtime linking may impact performance, so we do
+    # not want this to be the default eventually. Also, we use the
+    # versioned .so libs for executables only if there is the -brtl
+    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+    # To allow for filename-based versioning support, we need to create
+    # libNAME.so.V as an archive file, containing:
+    # *) an Import File, referring to the versioned filename of the
+    #    archive as well as the shared archive member, telling the
+    #    bitwidth (32 or 64) of that shared object, and providing the
+    #    list of exported symbols of that shared object, eventually
+    #    decorated with the 'weak' keyword
+    # *) the shared object with the F_LOADONLY flag set, to really avoid
+    #    it being seen by the linker.
+    # At run time we better use the real file rather than another symlink,
+    # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+    case $with_aix_soname,$aix_use_runtimelinking in
+    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
     # soname into executable. Probably we can add versioning support to
     # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
+    aix,yes) # traditional libtool
+      dynamic_linker='AIX unversionable lib.so'
       # If using run time linking (on AIX 4.2 or later) use lib<name>.so
       # instead of lib<name>.a to let people know that these are not
       # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      ;;
+    aix,no) # traditional AIX only
+      dynamic_linker='AIX lib.a(lib.so.V)'
       # We preserve .a as extension for shared libraries through AIX4.2
       # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      ;;
+    svr4,*) # full svr4 only
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,yes) # both, prefer svr4
+      dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # unpreferred sharedlib libNAME.a needs extra handling
+      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,no) # both, prefer aix
+      dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)"
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+      ;;
+    esac
     shlibpath_var=LIBPATH
   fi
   ;;
@@ -22088,18 +22643,18 @@
   powerpc)
     # Since July 2007 AmigaOS4 officially supports .so libraries.
     # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     ;;
   m68k)
     library_names_spec='$libname.ixlibrary $libname.a'
     # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
     ;;
   esac
   ;;
 
 beos*)
-  library_names_spec='${libname}${shared_ext}'
+  library_names_spec='$libname$shared_ext'
   dynamic_linker="$host_os ld.so"
   shlibpath_var=LIBRARY_PATH
   ;;
@@ -22107,8 +22662,8 @@
 bsdi[45]*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -22120,7 +22675,7 @@
 
 cygwin* | mingw* | pw32* | cegcc*)
   version_type=windows
-  shrext_cmds=".dll"
+  shrext_cmds=.dll
   need_version=no
   need_lib_prefix=no
 
@@ -22129,8 +22684,8 @@
     # gcc
     library_names_spec='$libname.dll.a'
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
       $install_prog $dir/$dlname \$dldir/$dlname~
@@ -22146,16 +22701,16 @@
     case $host_os in
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
 
       ;;
     mingw* | cegcc*)
       # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
       ;;
     pw32*)
       # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
       ;;
     esac
     dynamic_linker='Win32 ld.exe'
@@ -22164,8 +22719,8 @@
   *,cl*)
     # Native MSVC
     libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
+    soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext'
+    library_names_spec='$libname.dll.lib'
 
     case $build_os in
     mingw*)
@@ -22192,7 +22747,7 @@
       sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
       ;;
     *)
-      sys_lib_search_path_spec="$LIB"
+      sys_lib_search_path_spec=$LIB
       if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
         # It is most probably a Windows format PATH.
         sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
@@ -22205,8 +22760,8 @@
     esac
 
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
       $install_prog $dir/$dlname \$dldir/$dlname'
@@ -22219,7 +22774,7 @@
 
   *)
     # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib'
     dynamic_linker='Win32 ld.exe'
     ;;
   esac
@@ -22232,8 +22787,8 @@
   version_type=darwin
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
+  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$major$shared_ext'
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
@@ -22245,8 +22800,8 @@
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -22264,12 +22819,13 @@
   version_type=freebsd-$objformat
   case $version_type in
     freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
       need_version=no
       need_lib_prefix=no
       ;;
     freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
       need_version=yes
       ;;
   esac
@@ -22299,10 +22855,10 @@
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
+  shlibpath_overrides_runpath=no
   sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
   hardcode_into_libs=yes
   ;;
@@ -22320,14 +22876,15 @@
     dynamic_linker="$host_os dld.so"
     shlibpath_var=LD_LIBRARY_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    if test 32 = "$HPUX_IA64_MODE"; then
       sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
     else
       sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
     fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
   hppa*64*)
     shrext_cmds='.sl'
@@ -22335,8 +22892,8 @@
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
@@ -22345,8 +22902,8 @@
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=SHLIB_PATH
     shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     ;;
   esac
   # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
@@ -22359,8 +22916,8 @@
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
@@ -22371,7 +22928,7 @@
   case $host_os in
     nonstopux*) version_type=nonstopux ;;
     *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
+	if test yes = "$lt_cv_prog_gnu_ld"; then
 		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
@@ -22379,8 +22936,8 @@
   esac
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
   case $host_os in
   irix5* | nonstopux*)
     libsuff= shlibsuff=
@@ -22399,8 +22956,8 @@
   esac
   shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
   shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
   hardcode_into_libs=yes
   ;;
 
@@ -22409,13 +22966,33 @@
   dynamic_linker=no
   ;;
 
+linux*android*)
+  version_type=none # Android doesn't support versioned libraries.
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext'
+  soname_spec='$libname$release$shared_ext'
+  finish_cmds=
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  dynamic_linker='Android linker'
+  # Don't embed -rpath directories since the linker doesn't support them.
+  hardcode_libdir_flag_spec_CXX='-L$libdir'
+  ;;
+
 # This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
@@ -22459,7 +23036,12 @@
   # before this can be enabled.
   hardcode_into_libs=yes
 
-  # Append ld.so.conf contents to the search path
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
   if test -f /etc/ld.so.conf; then
     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
@@ -22491,12 +23073,12 @@
   need_lib_prefix=no
   need_version=no
   if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
     dynamic_linker='NetBSD (a.out) ld.so'
   else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     dynamic_linker='NetBSD ld.elf_so'
   fi
   shlibpath_var=LD_LIBRARY_PATH
@@ -22506,7 +23088,7 @@
 
 newsos6)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   ;;
@@ -22515,58 +23097,68 @@
   version_type=qnx
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   dynamic_linker='ldqnx.so'
   ;;
 
-openbsd*)
+openbsd* | bitrig*)
   version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
+  sys_lib_dlsearch_path_spec=/usr/lib
   need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    need_version=no
+  else
+    need_version=yes
+  fi
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
   shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
+  shlibpath_overrides_runpath=yes
   ;;
 
 os2*)
   libname_spec='$name'
-  shrext_cmds=".dll"
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
   need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
+  # OS/2 can only load a DLL with a base name of 8 characters or less.
+  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+    v=$($ECHO $release$versuffix | tr -d .-);
+    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+    $ECHO $n$v`$shared_ext'
+  library_names_spec='${libname}_dll.$libext'
   dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
+  shlibpath_var=BEGINLIBPATH
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  postinstall_cmds='base_file=`basename \$file`~
+    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+    dldir=$destdir/`dirname \$dlpath`~
+    test -d \$dldir || mkdir -p \$dldir~
+    $install_prog $dir/$dlname \$dldir/$dlname~
+    chmod a+x \$dldir/$dlname~
+    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+    fi'
+  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+    dlpath=$dir/\$dldll~
+    $RM \$dlpath'
   ;;
 
 osf3* | osf4* | osf5*)
   version_type=osf
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
 rdos*)
@@ -22577,8 +23169,8 @@
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
@@ -22588,11 +23180,11 @@
 
 sunos4*)
   version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
   finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     need_lib_prefix=no
   fi
   need_version=yes
@@ -22600,8 +23192,8 @@
 
 sysv4 | sysv4.3*)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   case $host_vendor in
     sni)
@@ -22622,24 +23214,24 @@
   ;;
 
 sysv4*MP*)
-  if test -d /usr/nec ;then
+  if test -d /usr/nec; then
     version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
+    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+    soname_spec='$libname$shared_ext.$major'
     shlibpath_var=LD_LIBRARY_PATH
   fi
   ;;
 
 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
+  version_type=sco
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
   else
     sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
@@ -22657,7 +23249,7 @@
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
@@ -22665,8 +23257,8 @@
 
 uts4*)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -22676,20 +23268,32 @@
 esac
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
 $as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
+test no = "$dynamic_linker" && can_build_shared=no
 
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
 
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
 fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
 fi
 
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
+
+
 
 
 
@@ -22732,15 +23336,15 @@
 hardcode_action_CXX=
 if test -n "$hardcode_libdir_flag_spec_CXX" ||
    test -n "$runpath_var_CXX" ||
-   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+   test yes = "$hardcode_automatic_CXX"; then
 
   # We can hardcode non-existent directories.
-  if test "$hardcode_direct_CXX" != no &&
+  if test no != "$hardcode_direct_CXX" &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
      # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
-     test "$hardcode_minus_L_CXX" != no; then
+     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" &&
+     test no != "$hardcode_minus_L_CXX"; then
     # Linking always hardcodes the temporary library directory.
     hardcode_action_CXX=relink
   else
@@ -22755,12 +23359,12 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
 $as_echo "$hardcode_action_CXX" >&6; }
 
-if test "$hardcode_action_CXX" = relink ||
-   test "$inherit_rpath_CXX" = yes; then
+if test relink = "$hardcode_action_CXX" ||
+   test yes = "$inherit_rpath_CXX"; then
   # Fast installation is not supported
   enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
+elif test yes = "$shlibpath_overrides_runpath" ||
+     test no = "$enable_shared"; then
   # Fast installation is not necessary
   enable_fast_install=needless
 fi
@@ -22783,7 +23387,7 @@
   lt_cv_path_LD=$lt_save_path_LD
   lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
   lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
+fi # test yes != "$_lt_caught_CXX_error"
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -24060,7 +24664,7 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mw__mwvalidcheckl" >&5
 $as_echo "$ac_cv_lib_mw__mwvalidcheckl" >&6; }
 if test "x$ac_cv_lib_mw__mwvalidcheckl" = xyes; then :
-  LIBM="-lmw"
+  LIBM=-lmw
 fi
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5
@@ -24142,7 +24746,7 @@
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5
 $as_echo "$ac_cv_lib_m_cos" >&6; }
 if test "x$ac_cv_lib_m_cos" = xyes; then :
-  LIBM="-lm"
+  LIBM=-lm
 fi
 
   ;;
@@ -29599,7 +30203,6 @@
  videomeasure \
  linsys \
  apexsink dc1394 \
- gsettings \
  musepack nas sdl timidity \
  wininet \
  xvid lv2 sndio libvisual"
@@ -31498,6 +32101,49 @@
 
 
 
+  GST_PLUGINS_ALL="$GST_PLUGINS_ALL netsim"
+
+
+
+  # Check whether --enable-netsim was given.
+if test "${enable_netsim+set}" = set; then :
+  enableval=$enable_netsim;
+      case "${enableval}" in
+        yes) gst_use_netsim=yes ;;
+        no) gst_use_netsim=no ;;
+        *) as_fn_error $? "bad value ${enableval} for --enable-netsim" "$LINENO" 5 ;;
+       esac
+
+else
+  gst_use_netsim=yes
+fi
+
+  if test x$gst_use_netsim = xno; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: disabling dependency-less plugin netsim" >&5
+$as_echo "$as_me: disabling dependency-less plugin netsim" >&6;}
+    WITHOUT_PLUGINS="$WITHOUT_PLUGINS netsim"
+  fi
+
+
+    if [ -z "$WITH_PLUGINS" ] || echo " $WITH_PLUGINS " | tr , ' ' | grep -i " netsim " > /dev/null; then
+    GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED netsim"
+  fi
+    if echo " $WITHOUT_PLUGINS " | tr , ' ' | grep -i " netsim " > /dev/null; then
+    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ netsim / /'`
+  fi
+    if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " netsim " > /dev/null; then
+    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ netsim / /'`
+  fi
+   if echo " $GST_PLUGINS_SELECTED " | grep -i " netsim " > /dev/null; then
+  USE_PLUGIN_NETSIM_TRUE=
+  USE_PLUGIN_NETSIM_FALSE='#'
+else
+  USE_PLUGIN_NETSIM_TRUE='#'
+  USE_PLUGIN_NETSIM_FALSE=
+fi
+
+
+
   GST_PLUGINS_ALL="$GST_PLUGINS_ALL nuvdemux"
 
 
@@ -31799,49 +32445,6 @@
 
 
 
-  GST_PLUGINS_ALL="$GST_PLUGINS_ALL rtp"
-
-
-
-  # Check whether --enable-rtp was given.
-if test "${enable_rtp+set}" = set; then :
-  enableval=$enable_rtp;
-      case "${enableval}" in
-        yes) gst_use_rtp=yes ;;
-        no) gst_use_rtp=no ;;
-        *) as_fn_error $? "bad value ${enableval} for --enable-rtp" "$LINENO" 5 ;;
-       esac
-
-else
-  gst_use_rtp=yes
-fi
-
-  if test x$gst_use_rtp = xno; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: disabling dependency-less plugin rtp" >&5
-$as_echo "$as_me: disabling dependency-less plugin rtp" >&6;}
-    WITHOUT_PLUGINS="$WITHOUT_PLUGINS rtp"
-  fi
-
-
-    if [ -z "$WITH_PLUGINS" ] || echo " $WITH_PLUGINS " | tr , ' ' | grep -i " rtp " > /dev/null; then
-    GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED rtp"
-  fi
-    if echo " $WITHOUT_PLUGINS " | tr , ' ' | grep -i " rtp " > /dev/null; then
-    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ rtp / /'`
-  fi
-    if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " rtp " > /dev/null; then
-    GST_PLUGINS_SELECTED=`echo " $GST_PLUGINS_SELECTED " | $SED -e 's/ rtp / /'`
-  fi
-   if echo " $GST_PLUGINS_SELECTED " | grep -i " rtp " > /dev/null; then
-  USE_PLUGIN_RTP_TRUE=
-  USE_PLUGIN_RTP_FALSE='#'
-else
-  USE_PLUGIN_RTP_TRUE='#'
-  USE_PLUGIN_RTP_FALSE=
-fi
-
-
-
   GST_PLUGINS_ALL="$GST_PLUGINS_ALL sdi"
 
 
@@ -34651,6 +35254,7 @@
 GST_GL_HAVE_GLINTPTR=0
 GST_GL_HAVE_GLSYNC=0
 GST_GL_HAVE_GLUINT64=0
+GST_GL_HAVE_GLINT64=0
 
 old_CFLAGS=$CFLAGS
 CFLAGS="$GL_CFLAGS $CFLAGS"
@@ -34745,6 +35349,21 @@
   GST_GL_HAVE_GLUINT64=1
 fi
 
+ac_fn_c_check_type "$LINENO" "GLint64" "ac_cv_type_GLint64" "$GL_INCLUDES
+"
+if test "x$ac_cv_type_GLint64" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_GLINT64 1
+_ACEOF
+
+
+fi
+
+if test "x$ac_cv_type_GLint64" = "xyes"; then
+  GST_GL_HAVE_GLINT64=1
+fi
+
 CFLAGS=$old_CFLAGS
 
 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
@@ -34754,6 +35373,7 @@
 #define GST_GL_HAVE_GLINTPTR $GST_GL_HAVE_GLINTPTR
 #define GST_GL_HAVE_GLSYNC $GST_GL_HAVE_GLSYNC
 #define GST_GL_HAVE_GLUINT64 $GST_GL_HAVE_GLUINT64
+#define GST_GL_HAVE_GLINT64 $GST_GL_HAVE_GLINT64
 "
 
 ac_config_commands="$ac_config_commands gst-libs/gst/gl/gstglconfig.h"
@@ -34968,6 +35588,95 @@
 fi
 
 
+VULKAN_CONFIG_DEFINES=""
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XCB" >&5
+$as_echo_n "checking for XCB... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$XCB_CFLAGS"; then
+        pkg_cv_XCB_CFLAGS="$XCB_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcb >= 1.10\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "xcb >= 1.10") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_XCB_CFLAGS=`$PKG_CONFIG --cflags "xcb >= 1.10" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$XCB_LIBS"; then
+        pkg_cv_XCB_LIBS="$XCB_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xcb >= 1.10\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "xcb >= 1.10") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_XCB_LIBS=`$PKG_CONFIG --libs "xcb >= 1.10" 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
+	        XCB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "xcb >= 1.10"`
+        else
+	        XCB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xcb >= 1.10"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$XCB_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                HAVE_XCB=no
+elif test $pkg_failed = untried; then
+	HAVE_XCB=no
+else
+	XCB_CFLAGS=$pkg_cv_XCB_CFLAGS
+	XCB_LIBS=$pkg_cv_XCB_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	HAVE_XCB=yes
+fi
+
+ if test "x$HAVE_XCB" = "xyes"; then
+  USE_XCB_TRUE=
+  USE_XCB_FALSE='#'
+else
+  USE_XCB_TRUE='#'
+  USE_XCB_FALSE=
+fi
+
+if test "x$HAVE_XCB" = "xyes"; then
+  VULKAN_CONFIG_DEFINES="$VULKAN_CONFIG_DEFINES
+  #define GST_VULKAN_HAVE_WINDOW_XCB 1"
+fi
+
+ac_config_commands="$ac_config_commands ext/vulkan/vkconfig.h"
+
 
 
 echo
@@ -37944,6 +38653,102 @@
 fi
 
 
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: tinyalsa ***" >&5
+$as_echo "$as_me: *** checking feature: tinyalsa ***" >&6;}
+if test "xtinyalsa" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: tinyalsa ***" >&5
+$as_echo "$as_me: *** for plug-ins: tinyalsa ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_TINYALSA" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-tinyalsa was given.
+if test "${enable_tinyalsa+set}" = set; then :
+  enableval=$enable_tinyalsa;  case "${enableval}" in
+      yes) USE_TINYALSA=yes;;
+      no) USE_TINYALSA=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-tinyalsa" "$LINENO" 5 ;;
+    esac
+else
+   USE_TINYALSA=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_TINYALSA="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** tinyalsa pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** tinyalsa pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " TINYALSA " > /dev/null; then
+  USE_TINYALSA="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** tinyalsa not ported" >&5
+$as_echo "$as_me: WARNING: *** tinyalsa not ported" >&2;}
+fi
+
+
+if test x$USE_TINYALSA = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_TINYALSA=no
+
+  ac_fn_c_check_header_mongrel "$LINENO" "tinyalsa/asoundlib.h" "ac_cv_header_tinyalsa_asoundlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_tinyalsa_asoundlib_h" = xyes; then :
+  HAVE_TINYALSA="yes"
+else
+  HAVE_TINYALSA="no"
+fi
+
+
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_TINYALSA = xno; then
+    USE_TINYALSA=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: tinyalsa" >&5
+$as_echo "$as_me: *** These plugins will be built: tinyalsa" >&6;}
+  fi
+fi
+if test x$USE_TINYALSA = xyes; then
+  :
+  if test "xtinyalsa" != "x"; then
+    GST_PLUGINS_YES="\ttinyalsa\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_TINYALSA /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: tinyalsa" >&5
+$as_echo "$as_me: *** These plugins will not be built: tinyalsa" >&6;}
+  if test "xtinyalsa" != "x"; then
+    GST_PLUGINS_NO="\ttinyalsa\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_TINYALSA = xyes; then
+  USE_TINYALSA_TRUE=
+  USE_TINYALSA_FALSE='#'
+else
+  USE_TINYALSA_TRUE='#'
+  USE_TINYALSA_FALSE=
+fi
+
+
+
 
 if test "x$BUILD_EXTERNAL" = "xyes"; then
 
@@ -40251,6 +41056,46 @@
 
 
 
+# Extract the first word of "wayland-scanner", so it can be a program name with args.
+set dummy wayland-scanner; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_wayland_scanner+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $wayland_scanner in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_wayland_scanner="$wayland_scanner" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_wayland_scanner="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+wayland_scanner=$ac_cv_path_wayland_scanner
+if test -n "$wayland_scanner"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wayland_scanner" >&5
+$as_echo "$wayland_scanner" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
 echo
 { $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: wayland sink ***" >&5
 $as_echo "$as_me: *** checking feature: wayland sink ***" >&6;}
@@ -40308,12 +41153,12 @@
         pkg_cv_WAYLAND_CFLAGS="$WAYLAND_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-client >= 1.4.0 wayland-scanner\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "wayland-client >= 1.4.0 wayland-scanner") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-client >= 1.4.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "wayland-client >= 1.4.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_WAYLAND_CFLAGS=`$PKG_CONFIG --cflags "wayland-client >= 1.4.0 wayland-scanner" 2>/dev/null`
+  pkg_cv_WAYLAND_CFLAGS=`$PKG_CONFIG --cflags "wayland-client >= 1.4.0" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -40326,12 +41171,12 @@
         pkg_cv_WAYLAND_LIBS="$WAYLAND_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-client >= 1.4.0 wayland-scanner\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "wayland-client >= 1.4.0 wayland-scanner") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-client >= 1.4.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "wayland-client >= 1.4.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_WAYLAND_LIBS=`$PKG_CONFIG --libs "wayland-client >= 1.4.0 wayland-scanner" 2>/dev/null`
+  pkg_cv_WAYLAND_LIBS=`$PKG_CONFIG --libs "wayland-client >= 1.4.0" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -40350,9 +41195,9 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        WAYLAND_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "wayland-client >= 1.4.0 wayland-scanner"`
+	        WAYLAND_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "wayland-client >= 1.4.0"`
         else
-	        WAYLAND_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "wayland-client >= 1.4.0 wayland-scanner"`
+	        WAYLAND_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "wayland-client >= 1.4.0"`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$WAYLAND_PKG_ERRORS" >&5
@@ -40370,7 +41215,14 @@
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 
-    HAVE_WAYLAND="yes"
+    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
+
 fi
 
 
@@ -40413,47 +41265,6 @@
 
 
 
-# Extract the first word of "wayland-scanner", so it can be a program name with args.
-set dummy wayland-scanner; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_wayland_scanner+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $wayland_scanner in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_wayland_scanner="$wayland_scanner" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_wayland_scanner="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-wayland_scanner=$ac_cv_path_wayland_scanner
-if test -n "$wayland_scanner"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wayland_scanner" >&5
-$as_echo "$wayland_scanner" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
 echo
 { $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: WebP ***" >&5
 $as_echo "$as_me: *** checking feature: WebP ***" >&6;}
@@ -41325,8 +42136,8 @@
 
 
 echo
-{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: AAC decoder plug-in ***" >&5
-$as_echo "$as_me: *** checking feature: AAC decoder plug-in ***" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: FAAD2 AAC decoder plug-in ***" >&5
+$as_echo "$as_me: *** checking feature: FAAD2 AAC decoder plug-in ***" >&6;}
 if test "xfaad" != "x"
 then
   { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: faad ***" >&5
@@ -41371,72 +42182,6 @@
 
   HAVE_FAAD=no
 
-  HAVE_FAAD="yes"
-  faad_hdr=""
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for faacDecOpen in -lfaad" >&5
-$as_echo_n "checking for faacDecOpen in -lfaad... " >&6; }
-if ${ac_cv_lib_faad_faacDecOpen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lfaad $LIBM $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char faacDecOpen ();
-int
-main ()
-{
-return faacDecOpen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_faad_faacDecOpen=yes
-else
-  ac_cv_lib_faad_faacDecOpen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_faad_faacDecOpen" >&5
-$as_echo "$ac_cv_lib_faad_faacDecOpen" >&6; }
-if test "x$ac_cv_lib_faad_faacDecOpen" = xyes; then :
-  HAVE_FAAD=yes
-else
-  HAVE_FAAD=no
-fi
-
-  if test "x$HAVE_FAAD" = "xyes"; then
-    ac_fn_c_check_header_mongrel "$LINENO" "faad.h" "ac_cv_header_faad_h" "$ac_includes_default"
-if test "x$ac_cv_header_faad_h" = xyes; then :
-  :
-else
-  HAVE_FAAD=no
-fi
-
-
-    if test "x$HAVE_FAAD" = "xyes"; then
-            FAAD_LIBS="-lfaad $LIBM"
-    else
-      HAVE_FAAD="no"
-    fi
-  else
-    HAVE_FAAD="no"
-  fi
-
-
-
-  if test $HAVE_FAAD = "no"; then
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NeAACDecOpen in -lfaad" >&5
 $as_echo_n "checking for NeAACDecOpen in -lfaad... " >&6; }
@@ -41490,31 +42235,7 @@
 
 
     if test "x$HAVE_FAAD" = "xyes"; then
-             FAAD_LIBS="-lfaad $LIBM"
 
-$as_echo "#define FAAD_IS_NEAAC 1" >>confdefs.h
-
-        faad_hdr="neaacdec.h"
-
-    else
-
-        HAVE_FAAD="no"
-
-    fi
-  else
-
-        HAVE_FAAD="no"
-
-  fi
-
-
-
-  else
-    faad_hdr="faad.h"
-  fi
-  if test $HAVE_FAAD = "yes"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking for FAAD >= 2.0" >&5
-$as_echo_n "checking Checking for FAAD >= 2.0... " >&6; }
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <faad.h>
@@ -41522,13 +42243,11 @@
 main ()
 {
 
-        #if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
-        #error Not faad2
-        #else
-        /* Release candidate of 2.0 is not good enough for us. This field
-         * was added only in 2.0 final and does not exist in 2.0-RC3 */
-        faacDecConfiguration conf; conf.dontUpSampleImplicitSBR = 1;
-        #endif
+      #if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
+      #error Not faad2
+      #elif !defined(LATM)
+      #error Not faad2 >= 2.7
+      #endif
 
   ;
   return 0;
@@ -41537,52 +42256,33 @@
 if ac_fn_c_try_compile "$LINENO"; then :
 
       HAVE_FAAD="yes"
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking Checking FAAD2 version in $faad_hdr" >&5
-$as_echo_n "checking Checking FAAD2 version in $faad_hdr... " >&6; }
-      for minor in 10 9 8 7 6 5 0; do
-        if test x$faad2_minor_version = "x"; then
-          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-              #include <$faad_hdr>
-              FAAD2_VERSION
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "\"2\.$minor\"$" >/dev/null 2>&1; then :
-
-              faad2_minor_version=$minor
-
-fi
-rm -f conftest*
-
-        fi
-      done
-      if test x$faad2_minor_version = "x"; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no idea" >&5
-$as_echo "no idea" >&6; }
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.$faad2_minor_version" >&5
-$as_echo "2.$faad2_minor_version" >&6; }
-
-cat >>confdefs.h <<_ACEOF
-#define FAAD2_MINOR_VERSION $faad2_minor_version
-_ACEOF
-
-      fi
+      FAAD_LIBS="-lfaad"
 
 else
 
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Found libfaad, but version not recent enough. Need faad2 >= 2.7" >&5
+$as_echo "$as_me: WARNING: Found libfaad, but version not recent enough. Need faad2 >= 2.7" >&2;}
       HAVE_FAAD="no"
 
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    else
+
+      HAVE_FAAD="no"
+
+    fi
+  else
+
+      HAVE_FAAD="no"
+
   fi
 
 
 
 
+
+
   LIBS=$gst_check_save_LIBS
   LDFLAGS=$gst_check_save_LDFLAGS
   CFLAGS=$gst_check_save_CFLAGS
@@ -44463,167 +45163,6 @@
 
 
 echo
-{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: mpg123 audio decoder ***" >&5
-$as_echo "$as_me: *** checking feature: mpg123 audio decoder ***" >&6;}
-if test "xmpg123" != "x"
-then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: mpg123 ***" >&5
-$as_echo "$as_me: *** for plug-ins: mpg123 ***" >&6;}
-fi
-NOUSE=
-if test "x$USE_MPG123" = "xno"; then
-  NOUSE="yes"
-fi
-# Check whether --enable-mpg123 was given.
-if test "${enable_mpg123+set}" = set; then :
-  enableval=$enable_mpg123;  case "${enableval}" in
-      yes) USE_MPG123=yes;;
-      no) USE_MPG123=no;;
-      *) as_fn_error $? "bad value ${enableval} for --enable-mpg123" "$LINENO" 5 ;;
-    esac
-else
-   USE_MPG123=yes
-fi
-
-if test "x$NOUSE" = "xyes"; then
-  USE_MPG123="no"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** mpg123 pre-configured not to be built" >&5
-$as_echo "$as_me: WARNING: *** mpg123 pre-configured not to be built" >&2;}
-fi
-NOUSE=
-
-if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " MPG123 " > /dev/null; then
-  USE_MPG123="no"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** mpg123 not ported" >&5
-$as_echo "$as_me: WARNING: *** mpg123 not ported" >&2;}
-fi
-
-
-if test x$USE_MPG123 = xyes; then
-
-  gst_check_save_LIBS=$LIBS
-  gst_check_save_LDFLAGS=$LDFLAGS
-  gst_check_save_CFLAGS=$CFLAGS
-  gst_check_save_CPPFLAGS=$CPPFLAGS
-  gst_check_save_CXXFLAGS=$CXXFLAGS
-
-  HAVE_MPG123=no
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MPG123" >&5
-$as_echo_n "checking for MPG123... " >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$MPG123_CFLAGS"; then
-        pkg_cv_MPG123_CFLAGS="$MPG123_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmpg123 >= 1.13\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libmpg123 >= 1.13") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_MPG123_CFLAGS=`$PKG_CONFIG --cflags "libmpg123 >= 1.13" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$MPG123_LIBS"; then
-        pkg_cv_MPG123_LIBS="$MPG123_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmpg123 >= 1.13\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libmpg123 >= 1.13") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_MPG123_LIBS=`$PKG_CONFIG --libs "libmpg123 >= 1.13" 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
-	        MPG123_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libmpg123 >= 1.13"`
-        else
-	        MPG123_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libmpg123 >= 1.13"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$MPG123_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-                HAVE_MPG123="no"
-elif test $pkg_failed = untried; then
-	HAVE_MPG123="no"
-else
-	MPG123_CFLAGS=$pkg_cv_MPG123_CFLAGS
-	MPG123_LIBS=$pkg_cv_MPG123_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	HAVE_MPG123="yes"
-fi
-
-
-
-
-  LIBS=$gst_check_save_LIBS
-  LDFLAGS=$gst_check_save_LDFLAGS
-  CFLAGS=$gst_check_save_CFLAGS
-  CPPFLAGS=$gst_check_save_CPPFLAGS
-  CXXFLAGS=$gst_check_save_CXXFLAGS
-
-    if test x$HAVE_MPG123 = xno; then
-    USE_MPG123=no
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: mpg123" >&5
-$as_echo "$as_me: *** These plugins will be built: mpg123" >&6;}
-  fi
-fi
-if test x$USE_MPG123 = xyes; then
-  :
-  if test "xmpg123" != "x"; then
-    GST_PLUGINS_YES="\tmpg123\n$GST_PLUGINS_YES"
-  fi
-
-$as_echo "#define HAVE_MPG123 /**/" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: mpg123" >&5
-$as_echo "$as_me: *** These plugins will not be built: mpg123" >&6;}
-  if test "xmpg123" != "x"; then
-    GST_PLUGINS_NO="\tmpg123\n$GST_PLUGINS_NO"
-  fi
-  :
-fi
- if test x$USE_MPG123 = xyes; then
-  USE_MPG123_TRUE=
-  USE_MPG123_FALSE='#'
-else
-  USE_MPG123_TRUE='#'
-  USE_MPG123_FALSE=
-fi
-
-
-
-echo
 { $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: mplex ***" >&5
 $as_echo "$as_me: *** checking feature: mplex ***" >&6;}
 if test "xmplex" != "x"
@@ -47502,6 +48041,10 @@
   HAVE_RSVG=no
 
 
+  which="librsvg-2.0 >= 2.36.2"
+    required="no"
+
+
 pkg_failed=no
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RSVG" >&5
 $as_echo_n "checking for RSVG... " >&6; }
@@ -47511,12 +48054,12 @@
         pkg_cv_RSVG_CFLAGS="$RSVG_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.36 cairo\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.36 cairo") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_RSVG_CFLAGS=`$PKG_CONFIG --cflags "librsvg-2.0 >= 2.36 cairo" 2>/dev/null`
+  pkg_cv_RSVG_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -47529,12 +48072,12 @@
         pkg_cv_RSVG_LIBS="$RSVG_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.36 cairo\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.36 cairo") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_RSVG_LIBS=`$PKG_CONFIG --libs "librsvg-2.0 >= 2.36 cairo" 2>/dev/null`
+  pkg_cv_RSVG_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -47553,9 +48096,9 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        RSVG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "librsvg-2.0 >= 2.36 cairo"`
+	        RSVG_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
         else
-	        RSVG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "librsvg-2.0 >= 2.36 cairo"`
+	        RSVG_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$RSVG_PKG_ERRORS" >&5
@@ -47563,11 +48106,23 @@
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 
-    HAVE_RSVG="no"
+      HAVE_RSVG="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$RSVG_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $RSVG_PKG_ERRORS" >&5
+$as_echo "$as_me: $RSVG_PKG_ERRORS" >&6;}
+      fi
 
 elif test $pkg_failed = untried; then
 
-    HAVE_RSVG="no"
+      HAVE_RSVG="no"
+      if test "x$required" = "xyes"; then
+        as_fn_error $? "$RSVG_PKG_ERRORS" "$LINENO" 5
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: $RSVG_PKG_ERRORS" >&5
+$as_echo "$as_me: $RSVG_PKG_ERRORS" >&6;}
+      fi
 
 else
 	RSVG_CFLAGS=$pkg_cv_RSVG_CFLAGS
@@ -47575,83 +48130,7 @@
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 
-    HAVE_RSVG="yes"
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for RSVG_2_36_2" >&5
-$as_echo_n "checking for RSVG_2_36_2... " >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$RSVG_2_36_2_CFLAGS"; then
-        pkg_cv_RSVG_2_36_2_CFLAGS="$RSVG_2_36_2_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.36.2\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.36.2") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_RSVG_2_36_2_CFLAGS=`$PKG_CONFIG --cflags "librsvg-2.0 >= 2.36.2" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$RSVG_2_36_2_LIBS"; then
-        pkg_cv_RSVG_2_36_2_LIBS="$RSVG_2_36_2_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librsvg-2.0 >= 2.36.2\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "librsvg-2.0 >= 2.36.2") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_RSVG_2_36_2_LIBS=`$PKG_CONFIG --libs "librsvg-2.0 >= 2.36.2" 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
-	        RSVG_2_36_2_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "librsvg-2.0 >= 2.36.2"`
-        else
-	        RSVG_2_36_2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "librsvg-2.0 >= 2.36.2"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$RSVG_2_36_2_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-                HAVE_RSVG_2_36_2="no"
-elif test $pkg_failed = untried; then
-	HAVE_RSVG_2_36_2="no"
-else
-	RSVG_2_36_2_CFLAGS=$pkg_cv_RSVG_2_36_2_CFLAGS
-	RSVG_2_36_2_LIBS=$pkg_cv_RSVG_2_36_2_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	HAVE_RSVG_2_36_2="yes"
-fi
-    if test "x$HAVE_RSVG_2_36_2" = "xyes"; then
-
-$as_echo "#define HAVE_RSVG_2_36_2 1" >>confdefs.h
-
-    fi
+      HAVE_RSVG="yes"
 
 fi
 
@@ -48792,7 +49271,7 @@
 $as_echo "yes" >&6; }
 
               QT_CFLAGS="$QT_CFLAGS $GNUSTL_CFLAGS"
-              QT_LIBS="$QT_CFLAGS $GNUSTL_LIBS"
+              QT_LIBS="$QT_LIBS $GNUSTL_LIBS"
 
 fi
 
@@ -48950,6 +49429,148 @@
 
 
 echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: Vulkan elements ***" >&5
+$as_echo "$as_me: *** checking feature: Vulkan elements ***" >&6;}
+if test "xvulkan" != "x"
+then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: vulkan ***" >&5
+$as_echo "$as_me: *** for plug-ins: vulkan ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_VULKAN" = "xno"; then
+  NOUSE="yes"
+fi
+# Check whether --enable-vulkan was given.
+if test "${enable_vulkan+set}" = set; then :
+  enableval=$enable_vulkan;  case "${enableval}" in
+      yes) USE_VULKAN=yes;;
+      no) USE_VULKAN=no;;
+      *) as_fn_error $? "bad value ${enableval} for --enable-vulkan" "$LINENO" 5 ;;
+    esac
+else
+   USE_VULKAN=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+  USE_VULKAN="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** vulkan pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** vulkan pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " VULKAN " > /dev/null; then
+  USE_VULKAN="no"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** vulkan not ported" >&5
+$as_echo "$as_me: WARNING: *** vulkan not ported" >&2;}
+fi
+
+
+if test x$USE_VULKAN = xyes; then
+
+  gst_check_save_LIBS=$LIBS
+  gst_check_save_LDFLAGS=$LDFLAGS
+  gst_check_save_CFLAGS=$CFLAGS
+  gst_check_save_CPPFLAGS=$CPPFLAGS
+  gst_check_save_CXXFLAGS=$CXXFLAGS
+
+  HAVE_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 :
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for vkCreateDevice in -lvulkan" >&5
+$as_echo_n "checking for vkCreateDevice in -lvulkan... " >&6; }
+if ${ac_cv_lib_vulkan_vkCreateDevice+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lvulkan  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char vkCreateDevice ();
+int
+main ()
+{
+return vkCreateDevice ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_vulkan_vkCreateDevice=yes
+else
+  ac_cv_lib_vulkan_vkCreateDevice=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_vulkan_vkCreateDevice" >&5
+$as_echo "$ac_cv_lib_vulkan_vkCreateDevice" >&6; }
+if test "x$ac_cv_lib_vulkan_vkCreateDevice" = xyes; then :
+
+      VULKAN_LIBS="-lvulkan"
+
+            if test "x$HAVE_XCB" = "xyes"; then
+        HAVE_VULKAN=yes
+      fi
+
+fi
+
+
+fi
+
+
+
+
+  LIBS=$gst_check_save_LIBS
+  LDFLAGS=$gst_check_save_LDFLAGS
+  CFLAGS=$gst_check_save_CFLAGS
+  CPPFLAGS=$gst_check_save_CPPFLAGS
+  CXXFLAGS=$gst_check_save_CXXFLAGS
+
+    if test x$HAVE_VULKAN = xno; then
+    USE_VULKAN=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: vulkan" >&5
+$as_echo "$as_me: *** These plugins will be built: vulkan" >&6;}
+  fi
+fi
+if test x$USE_VULKAN = xyes; then
+  :
+  if test "xvulkan" != "x"; then
+    GST_PLUGINS_YES="\tvulkan\n$GST_PLUGINS_YES"
+  fi
+
+$as_echo "#define HAVE_VULKAN /**/" >>confdefs.h
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: vulkan" >&5
+$as_echo "$as_me: *** These plugins will not be built: vulkan" >&6;}
+  if test "xvulkan" != "x"; then
+    GST_PLUGINS_NO="\tvulkan\n$GST_PLUGINS_NO"
+  fi
+  :
+fi
+ if test x$USE_VULKAN = xyes; then
+  USE_VULKAN_TRUE=
+  USE_VULKAN_FALSE='#'
+else
+  USE_VULKAN_TRUE='#'
+  USE_VULKAN_FALSE=
+fi
+
+
+
+echo
 { $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: libvisual visualization library ***" >&5
 $as_echo "$as_me: *** checking feature: libvisual visualization library ***" >&6;}
 if test "xlibvisual" != "x"
@@ -54870,419 +55491,6 @@
 
 
 echo
-{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: GSettings plugin ***" >&5
-$as_echo "$as_me: *** checking feature: GSettings plugin ***" >&6;}
-if test "xgsettings" != "x"
-then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: gsettings ***" >&5
-$as_echo "$as_me: *** for plug-ins: gsettings ***" >&6;}
-fi
-NOUSE=
-if test "x$USE_GSETTINGS" = "xno"; then
-  NOUSE="yes"
-fi
-# Check whether --enable-gsettings was given.
-if test "${enable_gsettings+set}" = set; then :
-  enableval=$enable_gsettings;  case "${enableval}" in
-      yes) USE_GSETTINGS=yes;;
-      no) USE_GSETTINGS=no;;
-      *) as_fn_error $? "bad value ${enableval} for --enable-gsettings" "$LINENO" 5 ;;
-    esac
-else
-   USE_GSETTINGS=yes
-fi
-
-if test "x$NOUSE" = "xyes"; then
-  USE_GSETTINGS="no"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** gsettings pre-configured not to be built" >&5
-$as_echo "$as_me: WARNING: *** gsettings pre-configured not to be built" >&2;}
-fi
-NOUSE=
-
-if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " GSETTINGS " > /dev/null; then
-  USE_GSETTINGS="no"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** gsettings not ported" >&5
-$as_echo "$as_me: WARNING: *** gsettings not ported" >&2;}
-fi
-
-
-if test x$USE_GSETTINGS = xyes; then
-
-  gst_check_save_LIBS=$LIBS
-  gst_check_save_LDFLAGS=$LDFLAGS
-  gst_check_save_CFLAGS=$CFLAGS
-  gst_check_save_CPPFLAGS=$CPPFLAGS
-  gst_check_save_CXXFLAGS=$CXXFLAGS
-
-  HAVE_GSETTINGS=no
-
-
-  which="gio-2.0 >= 2.25.0"
-    required="no"
-
-
-pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GSETTINGS" >&5
-$as_echo_n "checking for GSETTINGS... " >&6; }
-
-if test -n "$PKG_CONFIG"; then
-    if test -n "$GSETTINGS_CFLAGS"; then
-        pkg_cv_GSETTINGS_CFLAGS="$GSETTINGS_CFLAGS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GSETTINGS_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-if test -n "$PKG_CONFIG"; then
-    if test -n "$GSETTINGS_LIBS"; then
-        pkg_cv_GSETTINGS_LIBS="$GSETTINGS_LIBS"
-    else
-        if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "$which") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then
-  pkg_cv_GSETTINGS_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
-else
-  pkg_failed=yes
-fi
-    fi
-else
-	pkg_failed=untried
-fi
-
-
-
-if test $pkg_failed = yes; then
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
-        _pkg_short_errors_supported=yes
-else
-        _pkg_short_errors_supported=no
-fi
-        if test $_pkg_short_errors_supported = yes; then
-	        GSETTINGS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
-        else
-	        GSETTINGS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
-        fi
-	# Put the nasty error message in config.log where it belongs
-	echo "$GSETTINGS_PKG_ERRORS" >&5
-
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-      HAVE_GSETTINGS="no"
-      if test "x$required" = "xyes"; then
-        as_fn_error $? "$GSETTINGS_PKG_ERRORS" "$LINENO" 5
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: $GSETTINGS_PKG_ERRORS" >&5
-$as_echo "$as_me: $GSETTINGS_PKG_ERRORS" >&6;}
-      fi
-
-elif test $pkg_failed = untried; then
-
-      HAVE_GSETTINGS="no"
-      if test "x$required" = "xyes"; then
-        as_fn_error $? "$GSETTINGS_PKG_ERRORS" "$LINENO" 5
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: $GSETTINGS_PKG_ERRORS" >&5
-$as_echo "$as_me: $GSETTINGS_PKG_ERRORS" >&6;}
-      fi
-
-else
-	GSETTINGS_CFLAGS=$pkg_cv_GSETTINGS_CFLAGS
-	GSETTINGS_LIBS=$pkg_cv_GSETTINGS_LIBS
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-
-      HAVE_GSETTINGS="yes"
-
-fi
-
-
-  if test "x$HAVE_GSETTINGS" = "xyes"; then
-
-
-  # Check whether --enable-schemas-compile was given.
-if test "${enable_schemas_compile+set}" = set; then :
-  enableval=$enable_schemas_compile; case ${enableval} in
-                  yes) GSETTINGS_DISABLE_SCHEMAS_COMPILE=""  ;;
-                  no)  GSETTINGS_DISABLE_SCHEMAS_COMPILE="1" ;;
-                  *) as_fn_error $? "bad value ${enableval} for --enable-schemas-compile" "$LINENO" 5 ;;
-                 esac
-fi
-
-
-
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
-  ac_pt_PKG_CONFIG=$PKG_CONFIG
-  # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $ac_pt_PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-if test -n "$ac_pt_PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_pt_PKG_CONFIG" = x; then
-    PKG_CONFIG=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    PKG_CONFIG=$ac_pt_PKG_CONFIG
-  fi
-else
-  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
-
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=0.16
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
-$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	else
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-		PKG_CONFIG=""
-	fi
-
-fi
-  gsettingsschemadir=${datadir}/glib-2.0/schemas
-
-  if test x$cross_compiling != xyes; then
-    GLIB_COMPILE_SCHEMAS=`$PKG_CONFIG --variable glib_compile_schemas gio-2.0`
-  else
-    # Extract the first word of "glib-compile-schemas", so it can be a program name with args.
-set dummy glib-compile-schemas; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GLIB_COMPILE_SCHEMAS+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $GLIB_COMPILE_SCHEMAS in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_GLIB_COMPILE_SCHEMAS="$GLIB_COMPILE_SCHEMAS" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_GLIB_COMPILE_SCHEMAS="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-  ;;
-esac
-fi
-GLIB_COMPILE_SCHEMAS=$ac_cv_path_GLIB_COMPILE_SCHEMAS
-if test -n "$GLIB_COMPILE_SCHEMAS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIB_COMPILE_SCHEMAS" >&5
-$as_echo "$GLIB_COMPILE_SCHEMAS" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-
-  if test "x$GLIB_COMPILE_SCHEMAS" = "x"; then
-    as_fn_error $? "glib-compile-schemas not found." "$LINENO" 5
-  else
-    :
-  fi
-
-  GSETTINGS_RULES='
-.PHONY : uninstall-gsettings-schemas install-gsettings-schemas clean-gsettings-schemas
-
-mostlyclean-am: clean-gsettings-schemas
-
-gsettings__enum_file = $(addsuffix .enums.xml,$(gsettings_ENUM_NAMESPACE))
-
-%.gschema.valid: %.gschema.xml $(gsettings__enum_file)
-	$(AM_V_GEN) if test -f "$<"; then d=; else d="$(srcdir)/"; fi; $(GLIB_COMPILE_SCHEMAS) --strict --dry-run $(addprefix --schema-file=,$(gsettings__enum_file)) --schema-file=$${d}$< && touch $@
-
-all-am: $(gsettings_SCHEMAS:.xml=.valid)
-uninstall-am: uninstall-gsettings-schemas
-install-data-am: install-gsettings-schemas
-
-.SECONDARY: $(gsettings_SCHEMAS)
-
-install-gsettings-schemas: $(gsettings_SCHEMAS) $(gsettings__enum_file)
-	@$(NORMAL_INSTALL)
-	if test -n "$^"; then \
-		test -z "$(gsettingsschemadir)" || $(MKDIR_P) "$(DESTDIR)$(gsettingsschemadir)"; \
-		$(INSTALL_DATA) $^ "$(DESTDIR)$(gsettingsschemadir)"; \
-		test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); \
-	fi
-
-uninstall-gsettings-schemas:
-	@$(NORMAL_UNINSTALL)
-	@list='\''$(gsettings_SCHEMAS) $(gsettings__enum_file)'\''; test -n "$(gsettingsschemadir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e '\''s|^.*/||'\''`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '\''$(DESTDIR)$(gsettingsschemadir)'\'' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(gsettingsschemadir)" && rm -f $$files
-	test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir)
-
-clean-gsettings-schemas:
-	rm -f $(gsettings_SCHEMAS:.xml=.valid) $(gsettings__enum_file)
-
-ifdef gsettings_ENUM_NAMESPACE
-$(gsettings__enum_file): $(gsettings_ENUM_FILES)
-	$(AM_V_GEN) glib-mkenums --comments '\''<!-- @comment@ -->'\'' --fhead "<schemalist>" --vhead "  <@type@ id='\''$(gsettings_ENUM_NAMESPACE).@EnumName@'\''>" --vprod "    <value nick='\''@valuenick@'\'' value='\''@valuenum@'\''/>" --vtail "  </@type@>" --ftail "</schemalist>" $^ > $@.tmp && mv $@.tmp $@
-endif
-'
-
-
-
-
-
-
-  fi
-
-
-  LIBS=$gst_check_save_LIBS
-  LDFLAGS=$gst_check_save_LDFLAGS
-  CFLAGS=$gst_check_save_CFLAGS
-  CPPFLAGS=$gst_check_save_CPPFLAGS
-  CXXFLAGS=$gst_check_save_CXXFLAGS
-
-    if test x$HAVE_GSETTINGS = xno; then
-    USE_GSETTINGS=no
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: gsettings" >&5
-$as_echo "$as_me: *** These plugins will be built: gsettings" >&6;}
-  fi
-fi
-if test x$USE_GSETTINGS = xyes; then
-  :
-  if test "xgsettings" != "x"; then
-    GST_PLUGINS_YES="\tgsettings\n$GST_PLUGINS_YES"
-  fi
-
-$as_echo "#define HAVE_GSETTINGS /**/" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: gsettings" >&5
-$as_echo "$as_me: *** These plugins will not be built: gsettings" >&6;}
-  if test "xgsettings" != "x"; then
-    GST_PLUGINS_NO="\tgsettings\n$GST_PLUGINS_NO"
-  fi
-  :
-fi
- if test x$USE_GSETTINGS = xyes; then
-  USE_GSETTINGS_TRUE=
-  USE_GSETTINGS_FALSE='#'
-else
-  USE_GSETTINGS_TRUE='#'
-  USE_GSETTINGS_FALSE=
-fi
-
-
-
-echo
 { $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: sndio audio ***" >&5
 $as_echo "$as_me: *** checking feature: sndio audio ***" >&6;}
 if test "xsndio" != "x"
@@ -57097,14 +57305,6 @@
 fi
 
  if false; then
-  USE_MPG123_TRUE=
-  USE_MPG123_FALSE='#'
-else
-  USE_MPG123_TRUE='#'
-  USE_MPG123_FALSE=
-fi
-
- if false; then
   USE_MPLEX_TRUE=
   USE_MPLEX_FALSE='#'
 else
@@ -57297,14 +57497,6 @@
 fi
 
  if false; then
-  USE_GSETTINGS_TRUE=
-  USE_GSETTINGS_FALSE='#'
-else
-  USE_GSETTINGS_TRUE='#'
-  USE_GSETTINGS_FALSE=
-fi
-
- if false; then
   USE_XVID_TRUE=
   USE_XVID_FALSE='#'
 else
@@ -57494,7 +57686,7 @@
 $MKDIR_P tests/check/orc
 
 
-ac_config_files="$ac_config_files Makefile common/Makefile common/m4/Makefile gst-plugins-bad.spec gst/Makefile gst/accurip/Makefile gst/adpcmdec/Makefile gst/adpcmenc/Makefile gst/aiff/Makefile gst/videoframe_audiolevel/Makefile gst/asfmux/Makefile gst/audiofxbad/Makefile gst/audiomixer/Makefile gst/audiovisualizers/Makefile gst/autoconvert/Makefile gst/bayer/Makefile gst/camerabin2/Makefile gst/cdxaparse/Makefile gst/coloreffects/Makefile gst/dataurisrc/Makefile gst/dccp/Makefile gst/debugutils/Makefile gst/dvbsuboverlay/Makefile gst/dvdspu/Makefile gst/faceoverlay/Makefile gst/festival/Makefile gst/fieldanalysis/Makefile gst/freeverb/Makefile gst/frei0r/Makefile gst/gaudieffects/Makefile gst/geometrictransform/Makefile gst/gdp/Makefile gst/hdvparse/Makefile gst/id3tag/Makefile gst/inter/Makefile gst/interlace/Makefile gst/ivfparse/Makefile gst/ivtc/Makefile gst/jp2kdecimator/Makefile gst/jpegformat/Makefile gst/librfb/Makefile gst/midi/Makefile gst/mpegdemux/Makefile gst/mpegtsdemux/Makefile gst/mpegtsmux/Makefile gst/mpegtsmux/tsmux/Makefile gst/mpegpsmux/Makefile gst/mve/Makefile gst/mxf/Makefile gst/nuvdemux/Makefile gst/onvif/Makefile gst/patchdetect/Makefile gst/pcapparse/Makefile gst/pnm/Makefile gst/rawparse/Makefile gst/removesilence/Makefile gst/rtp/Makefile gst/sdi/Makefile gst/sdp/Makefile gst/segmentclip/Makefile gst/siren/Makefile gst/smooth/Makefile gst/speed/Makefile gst/subenc/Makefile gst/stereo/Makefile gst/tta/Makefile gst/videofilters/Makefile gst/videomeasure/Makefile gst/videoparsers/Makefile gst/videosignal/Makefile gst/vmnc/Makefile gst/y4m/Makefile gst/yadif/Makefile gst/compositor/Makefile gst-libs/Makefile gst-libs/gst/Makefile gst-libs/gst/adaptivedemux/Makefile gst-libs/gst/basecamerabinsrc/Makefile gst-libs/gst/gl/Makefile gst-libs/gst/gl/android/Makefile gst-libs/gst/gl/cocoa/Makefile gst-libs/gst/gl/dispmanx/Makefile gst-libs/gst/gl/glprototypes/Makefile gst-libs/gst/gl/eagl/Makefile gst-libs/gst/gl/egl/Makefile gst-libs/gst/gl/wayland/Makefile gst-libs/gst/gl/win32/Makefile gst-libs/gst/gl/x11/Makefile gst-libs/gst/insertbin/Makefile gst-libs/gst/interfaces/Makefile gst-libs/gst/codecparsers/Makefile gst-libs/gst/mpegts/Makefile gst-libs/gst/uridownloader/Makefile gst-libs/gst/wayland/Makefile gst-libs/gst/base/Makefile gst-libs/gst/player/Makefile gst-libs/gst/video/Makefile sys/Makefile sys/dshowdecwrapper/Makefile sys/acmenc/Makefile sys/acmmp3dec/Makefile sys/androidmedia/Makefile sys/applemedia/Makefile sys/applemedia-nonpublic/Makefile sys/avc/Makefile sys/bluez/Makefile sys/d3dvideosink/Makefile sys/decklink/Makefile sys/directsound/Makefile sys/dshowsrcwrapper/Makefile sys/dshowvideosink/Makefile sys/dvb/Makefile sys/fbdev/Makefile sys/linsys/Makefile sys/nvenc/Makefile sys/opensles/Makefile sys/shm/Makefile sys/uvch264/Makefile sys/vcd/Makefile sys/vdpau/Makefile sys/pvr2d/Makefile sys/wasapi/Makefile sys/wininet/Makefile sys/winks/Makefile sys/winscreencap/Makefile tests/Makefile tests/check/Makefile tests/files/Makefile tests/examples/Makefile tests/examples/avsamplesink/Makefile tests/examples/camerabin2/Makefile tests/examples/codecparsers/Makefile tests/examples/directfb/Makefile tests/examples/gl/Makefile tests/examples/gl/cocoa/Makefile tests/examples/gl/clutter/Makefile tests/examples/gl/generic/Makefile tests/examples/gl/generic/cube/Makefile tests/examples/gl/generic/cubeyuv/Makefile tests/examples/gl/generic/doublecube/Makefile tests/examples/gl/generic/recordgraphic/Makefile tests/examples/gl/gtk/Makefile tests/examples/gl/gtk/gtkvideooverlay/Makefile tests/examples/gl/gtk/3dvideo/Makefile tests/examples/gl/gtk/filternovideooverlay/Makefile tests/examples/gl/gtk/filtervideooverlay/Makefile tests/examples/gl/gtk/fxtest/Makefile tests/examples/gl/gtk/switchvideooverlay/Makefile tests/examples/gl/qt/Makefile tests/examples/gl/sdl/Makefile tests/examples/gtk/Makefile tests/examples/mpegts/Makefile tests/examples/mxf/Makefile tests/examples/opencv/Makefile tests/examples/uvch264/Makefile tests/examples/waylandsink/Makefile tests/icles/Makefile ext/voamrwbenc/Makefile ext/voaacenc/Makefile ext/assrender/Makefile ext/apexsink/Makefile ext/bs2b/Makefile ext/bz2/Makefile ext/chromaprint/Makefile ext/curl/Makefile ext/dash/Makefile ext/dc1394/Makefile ext/directfb/Makefile ext/wayland/Makefile ext/daala/Makefile ext/dts/Makefile ext/gl/Makefile ext/gtk/Makefile ext/faac/Makefile ext/faad/Makefile ext/flite/Makefile ext/fluidsynth/Makefile ext/gsm/Makefile ext/hls/Makefile ext/kate/Makefile ext/ladspa/Makefile ext/lv2/Makefile ext/libde265/Makefile ext/libmms/Makefile ext/libvisual/Makefile ext/Makefile ext/modplug/Makefile ext/mpeg2enc/Makefile ext/mpg123/Makefile ext/mimic/Makefile ext/mplex/Makefile ext/musepack/Makefile ext/nas/Makefile ext/neon/Makefile ext/ofa/Makefile ext/openal/Makefile ext/opencv/Makefile ext/openexr/Makefile ext/openh264/Makefile ext/openjpeg/Makefile ext/openni2/Makefile ext/opus/Makefile ext/qt/Makefile ext/rsvg/Makefile ext/resindvd/Makefile ext/rtmp/Makefile ext/sbc/Makefile ext/schroedinger/Makefile ext/sdl/Makefile ext/smoothstreaming/Makefile ext/sndfile/Makefile ext/soundtouch/Makefile ext/spandsp/Makefile ext/sndio/Makefile ext/srtp/Makefile ext/teletextdec/Makefile ext/gme/Makefile ext/gsettings/Makefile ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml ext/spc/Makefile ext/timidity/Makefile ext/webp/Makefile ext/x265/Makefile ext/xvid/Makefile ext/zbar/Makefile ext/dtls/Makefile po/Makefile.in docs/Makefile docs/plugins/Makefile docs/libs/Makefile docs/version.entities pkgconfig/Makefile pkgconfig/gstreamer-plugins-bad.pc pkgconfig/gstreamer-plugins-bad-uninstalled.pc pkgconfig/gstreamer-codecparsers.pc pkgconfig/gstreamer-codecparsers-uninstalled.pc pkgconfig/gstreamer-insertbin.pc pkgconfig/gstreamer-insertbin-uninstalled.pc pkgconfig/gstreamer-gl.pc pkgconfig/gstreamer-gl-uninstalled.pc pkgconfig/gstreamer-mpegts.pc pkgconfig/gstreamer-mpegts-uninstalled.pc pkgconfig/gstreamer-player.pc pkgconfig/gstreamer-player-uninstalled.pc pkgconfig/gstreamer-wayland.pc pkgconfig/gstreamer-wayland-uninstalled.pc pkgconfig/gstreamer-bad-base.pc pkgconfig/gstreamer-bad-base-uninstalled.pc pkgconfig/gstreamer-bad-video.pc pkgconfig/gstreamer-bad-video-uninstalled.pc tools/Makefile m4/Makefile"
+ac_config_files="$ac_config_files Makefile common/Makefile common/m4/Makefile gst-plugins-bad.spec gst/Makefile gst/accurip/Makefile gst/adpcmdec/Makefile gst/adpcmenc/Makefile gst/aiff/Makefile gst/videoframe_audiolevel/Makefile gst/asfmux/Makefile gst/audiofxbad/Makefile gst/audiomixer/Makefile gst/audiovisualizers/Makefile gst/autoconvert/Makefile gst/bayer/Makefile gst/camerabin2/Makefile gst/cdxaparse/Makefile gst/coloreffects/Makefile gst/dataurisrc/Makefile gst/dccp/Makefile gst/debugutils/Makefile gst/dvbsuboverlay/Makefile gst/dvdspu/Makefile gst/faceoverlay/Makefile gst/festival/Makefile gst/fieldanalysis/Makefile gst/freeverb/Makefile gst/frei0r/Makefile gst/gaudieffects/Makefile gst/geometrictransform/Makefile gst/gdp/Makefile gst/hdvparse/Makefile gst/id3tag/Makefile gst/inter/Makefile gst/interlace/Makefile gst/ivfparse/Makefile gst/ivtc/Makefile gst/jp2kdecimator/Makefile gst/jpegformat/Makefile gst/librfb/Makefile gst/midi/Makefile gst/mpegdemux/Makefile gst/mpegtsdemux/Makefile gst/mpegtsmux/Makefile gst/mpegtsmux/tsmux/Makefile gst/mpegpsmux/Makefile gst/mve/Makefile gst/mxf/Makefile gst/netsim/Makefile gst/nuvdemux/Makefile gst/onvif/Makefile gst/patchdetect/Makefile gst/pcapparse/Makefile gst/pnm/Makefile gst/rawparse/Makefile gst/removesilence/Makefile gst/sdi/Makefile gst/sdp/Makefile gst/segmentclip/Makefile gst/siren/Makefile gst/smooth/Makefile gst/speed/Makefile gst/subenc/Makefile gst/stereo/Makefile gst/tta/Makefile gst/videofilters/Makefile gst/videomeasure/Makefile gst/videoparsers/Makefile gst/videosignal/Makefile gst/vmnc/Makefile gst/y4m/Makefile gst/yadif/Makefile gst/compositor/Makefile gst-libs/Makefile gst-libs/gst/Makefile gst-libs/gst/adaptivedemux/Makefile gst-libs/gst/basecamerabinsrc/Makefile gst-libs/gst/gl/Makefile gst-libs/gst/gl/android/Makefile gst-libs/gst/gl/cocoa/Makefile gst-libs/gst/gl/dispmanx/Makefile gst-libs/gst/gl/glprototypes/Makefile gst-libs/gst/gl/eagl/Makefile gst-libs/gst/gl/egl/Makefile gst-libs/gst/gl/wayland/Makefile gst-libs/gst/gl/win32/Makefile gst-libs/gst/gl/x11/Makefile gst-libs/gst/insertbin/Makefile gst-libs/gst/interfaces/Makefile gst-libs/gst/codecparsers/Makefile gst-libs/gst/mpegts/Makefile gst-libs/gst/uridownloader/Makefile gst-libs/gst/wayland/Makefile gst-libs/gst/base/Makefile gst-libs/gst/player/Makefile gst-libs/gst/video/Makefile gst-libs/gst/audio/Makefile sys/Makefile sys/dshowdecwrapper/Makefile sys/acmenc/Makefile sys/acmmp3dec/Makefile sys/androidmedia/Makefile sys/applemedia/Makefile sys/applemedia-nonpublic/Makefile sys/avc/Makefile sys/bluez/Makefile sys/d3dvideosink/Makefile sys/decklink/Makefile sys/directsound/Makefile sys/dshowsrcwrapper/Makefile sys/dshowvideosink/Makefile sys/dvb/Makefile sys/fbdev/Makefile sys/linsys/Makefile sys/nvenc/Makefile sys/opensles/Makefile sys/shm/Makefile sys/tinyalsa/Makefile sys/uvch264/Makefile sys/vcd/Makefile sys/vdpau/Makefile sys/pvr2d/Makefile sys/wasapi/Makefile sys/wininet/Makefile sys/winks/Makefile sys/winscreencap/Makefile tests/Makefile tests/check/Makefile tests/files/Makefile tests/examples/Makefile tests/examples/avsamplesink/Makefile tests/examples/camerabin2/Makefile tests/examples/codecparsers/Makefile tests/examples/directfb/Makefile tests/examples/gl/Makefile tests/examples/gl/cocoa/Makefile tests/examples/gl/clutter/Makefile tests/examples/gl/generic/Makefile tests/examples/gl/generic/cube/Makefile tests/examples/gl/generic/cubeyuv/Makefile tests/examples/gl/generic/doublecube/Makefile tests/examples/gl/generic/recordgraphic/Makefile tests/examples/gl/gtk/Makefile tests/examples/gl/gtk/gtkvideooverlay/Makefile tests/examples/gl/gtk/3dvideo/Makefile tests/examples/gl/gtk/filternovideooverlay/Makefile tests/examples/gl/gtk/filtervideooverlay/Makefile tests/examples/gl/gtk/fxtest/Makefile tests/examples/gl/gtk/switchvideooverlay/Makefile tests/examples/gl/qt/Makefile tests/examples/gl/sdl/Makefile tests/examples/gtk/Makefile tests/examples/mpegts/Makefile tests/examples/mxf/Makefile tests/examples/opencv/Makefile tests/examples/uvch264/Makefile tests/examples/waylandsink/Makefile tests/icles/Makefile ext/voamrwbenc/Makefile ext/voaacenc/Makefile ext/assrender/Makefile ext/apexsink/Makefile ext/bs2b/Makefile ext/bz2/Makefile ext/chromaprint/Makefile ext/curl/Makefile ext/dash/Makefile ext/dc1394/Makefile ext/directfb/Makefile ext/wayland/Makefile ext/daala/Makefile ext/dts/Makefile ext/gl/Makefile ext/gtk/Makefile ext/faac/Makefile ext/faad/Makefile ext/flite/Makefile ext/fluidsynth/Makefile ext/gsm/Makefile ext/hls/Makefile ext/kate/Makefile ext/ladspa/Makefile ext/lv2/Makefile ext/libde265/Makefile ext/libmms/Makefile ext/libvisual/Makefile ext/Makefile ext/modplug/Makefile ext/mpeg2enc/Makefile ext/mimic/Makefile ext/mplex/Makefile ext/musepack/Makefile ext/nas/Makefile ext/neon/Makefile ext/ofa/Makefile ext/openal/Makefile ext/opencv/Makefile ext/openexr/Makefile ext/openh264/Makefile ext/openjpeg/Makefile ext/openni2/Makefile ext/opus/Makefile ext/qt/Makefile ext/rsvg/Makefile ext/resindvd/Makefile ext/rtmp/Makefile ext/sbc/Makefile ext/schroedinger/Makefile ext/sdl/Makefile ext/smoothstreaming/Makefile ext/sndfile/Makefile ext/soundtouch/Makefile ext/spandsp/Makefile ext/sndio/Makefile ext/srtp/Makefile ext/teletextdec/Makefile ext/gme/Makefile ext/spc/Makefile ext/timidity/Makefile ext/vulkan/Makefile ext/vulkan/xcb/Makefile ext/webp/Makefile ext/x265/Makefile ext/xvid/Makefile ext/zbar/Makefile ext/dtls/Makefile po/Makefile.in docs/Makefile docs/plugins/Makefile docs/libs/Makefile docs/version.entities pkgconfig/Makefile pkgconfig/gstreamer-plugins-bad.pc pkgconfig/gstreamer-plugins-bad-uninstalled.pc pkgconfig/gstreamer-codecparsers.pc pkgconfig/gstreamer-codecparsers-uninstalled.pc pkgconfig/gstreamer-insertbin.pc pkgconfig/gstreamer-insertbin-uninstalled.pc pkgconfig/gstreamer-gl.pc pkgconfig/gstreamer-gl-uninstalled.pc pkgconfig/gstreamer-mpegts.pc pkgconfig/gstreamer-mpegts-uninstalled.pc pkgconfig/gstreamer-player.pc pkgconfig/gstreamer-player-uninstalled.pc pkgconfig/gstreamer-wayland.pc pkgconfig/gstreamer-wayland-uninstalled.pc pkgconfig/gstreamer-bad-base.pc pkgconfig/gstreamer-bad-base-uninstalled.pc pkgconfig/gstreamer-bad-video.pc pkgconfig/gstreamer-bad-video-uninstalled.pc pkgconfig/gstreamer-bad-audio.pc pkgconfig/gstreamer-bad-audio-uninstalled.pc tools/Makefile m4/Makefile"
 
 
 sed \
@@ -58041,6 +58233,10 @@
   as_fn_error $? "conditional \"USE_PLUGIN_MXF\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_PLUGIN_NETSIM_TRUE}" && test -z "${USE_PLUGIN_NETSIM_FALSE}"; then
+  as_fn_error $? "conditional \"USE_PLUGIN_NETSIM\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_PLUGIN_NUVDEMUX_TRUE}" && test -z "${USE_PLUGIN_NUVDEMUX_FALSE}"; then
   as_fn_error $? "conditional \"USE_PLUGIN_NUVDEMUX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58069,10 +58265,6 @@
   as_fn_error $? "conditional \"USE_PLUGIN_REMOVESILENCE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${USE_PLUGIN_RTP_TRUE}" && test -z "${USE_PLUGIN_RTP_FALSE}"; then
-  as_fn_error $? "conditional \"USE_PLUGIN_RTP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${USE_PLUGIN_SDI_TRUE}" && test -z "${USE_PLUGIN_SDI_FALSE}"; then
   as_fn_error $? "conditional \"USE_PLUGIN_SDI\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58229,6 +58421,10 @@
   as_fn_error $? "conditional \"HAVE_JPEG\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_XCB_TRUE}" && test -z "${USE_XCB_FALSE}"; then
+  as_fn_error $? "conditional \"USE_XCB\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_DIRECTSOUND_TRUE}" && test -z "${USE_DIRECTSOUND_FALSE}"; then
   as_fn_error $? "conditional \"USE_DIRECTSOUND\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58289,6 +58485,10 @@
   as_fn_error $? "conditional \"USE_NVENC_GST_GL\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${USE_TINYALSA_TRUE}" && test -z "${USE_TINYALSA_FALSE}"; then
+  as_fn_error $? "conditional \"USE_TINYALSA\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_ASSRENDER_TRUE}" && test -z "${USE_ASSRENDER_FALSE}"; then
   as_fn_error $? "conditional \"USE_ASSRENDER\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58445,10 +58645,6 @@
   as_fn_error $? "conditional \"USE_MPEG2ENC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${USE_MPG123_TRUE}" && test -z "${USE_MPG123_FALSE}"; then
-  as_fn_error $? "conditional \"USE_MPG123\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${USE_MPLEX_TRUE}" && test -z "${USE_MPLEX_FALSE}"; then
   as_fn_error $? "conditional \"USE_MPLEX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58525,6 +58721,10 @@
   as_fn_error $? "conditional \"USE_QT\" 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
 if test -z "${USE_LIBVISUAL_TRUE}" && test -z "${USE_LIBVISUAL_FALSE}"; then
   as_fn_error $? "conditional \"USE_LIBVISUAL\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58605,10 +58805,6 @@
   as_fn_error $? "conditional \"USE_SPANDSP\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${USE_GSETTINGS_TRUE}" && test -z "${USE_GSETTINGS_FALSE}"; then
-  as_fn_error $? "conditional \"USE_GSETTINGS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${USE_SNDIO_TRUE}" && test -z "${USE_SNDIO_FALSE}"; then
   as_fn_error $? "conditional \"USE_SNDIO\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58777,10 +58973,6 @@
   as_fn_error $? "conditional \"USE_MPEG2ENC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${USE_MPG123_TRUE}" && test -z "${USE_MPG123_FALSE}"; then
-  as_fn_error $? "conditional \"USE_MPG123\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${USE_MPLEX_TRUE}" && test -z "${USE_MPLEX_FALSE}"; then
   as_fn_error $? "conditional \"USE_MPLEX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58877,10 +59069,6 @@
   as_fn_error $? "conditional \"USE_GME\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${USE_GSETTINGS_TRUE}" && test -z "${USE_GSETTINGS_FALSE}"; then
-  as_fn_error $? "conditional \"USE_GSETTINGS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${USE_XVID_TRUE}" && test -z "${USE_XVID_FALSE}"; then
   as_fn_error $? "conditional \"USE_XVID\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -59346,7 +59534,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.7.1, which was
+This file was extended by GStreamer Bad Plug-ins $as_me 1.7.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -59412,7 +59600,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.7.1
+GStreamer Bad Plug-ins config.status 1.7.2
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -59550,6 +59738,7 @@
 enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
 pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
 enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`'
 SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
 ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
 PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
@@ -59597,10 +59786,13 @@
 GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
 lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
 lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`'
 lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`'
 nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
 lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`'
 objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
 MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
 lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
@@ -59665,7 +59857,8 @@
 finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
 hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
 sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`'
+configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`'
 hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
 enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
 enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
@@ -59771,9 +59964,12 @@
 compiler \
 lt_cv_sys_global_symbol_pipe \
 lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_import \
 lt_cv_sys_global_symbol_to_c_name_address \
 lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+lt_cv_nm_interface \
 nm_file_list_spec \
+lt_cv_truncate_bin \
 lt_prog_compiler_no_builtin_flag \
 lt_prog_compiler_pic \
 lt_prog_compiler_wl \
@@ -59839,7 +60035,7 @@
 compiler_lib_search_path_CXX; do
     case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -59866,7 +60062,8 @@
 postuninstall_cmds \
 finish_cmds \
 sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec \
+configure_time_dlsearch_path \
+configure_time_lt_sys_library_path \
 reload_cmds_CXX \
 old_archive_cmds_CXX \
 old_archive_from_new_cmds_CXX \
@@ -59880,7 +60077,7 @@
 postlink_cmds_CXX; do
     case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -59889,19 +60086,16 @@
 done
 
 ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
 
-# See if we are running on zsh, and set the options which allow our
+# See if we are running on zsh, and set the options that allow our
 # commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
+if test -n "\${ZSH_VERSION+set}"; then
    setopt NO_GLOB_SUBST
 fi
 
 
     PACKAGE='$PACKAGE'
     VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
     RM='$RM'
     ofile='$ofile'
 
@@ -59938,6 +60132,9 @@
 gl_config_defines='$GL_CONFIG_DEFINES'
 
 
+vulkan_config_defines='$VULKAN_CONFIG_DEFINES'
+
+
 _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -59952,6 +60149,7 @@
     "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
     "$ac_stdint_h") CONFIG_COMMANDS="$CONFIG_COMMANDS $ac_stdint_h" ;;
     "gst-libs/gst/gl/gstglconfig.h") CONFIG_COMMANDS="$CONFIG_COMMANDS gst-libs/gst/gl/gstglconfig.h" ;;
+    "ext/vulkan/vkconfig.h") CONFIG_COMMANDS="$CONFIG_COMMANDS ext/vulkan/vkconfig.h" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
     "common/Makefile") CONFIG_FILES="$CONFIG_FILES common/Makefile" ;;
     "common/m4/Makefile") CONFIG_FILES="$CONFIG_FILES common/m4/Makefile" ;;
@@ -60001,6 +60199,7 @@
     "gst/mpegpsmux/Makefile") CONFIG_FILES="$CONFIG_FILES gst/mpegpsmux/Makefile" ;;
     "gst/mve/Makefile") CONFIG_FILES="$CONFIG_FILES gst/mve/Makefile" ;;
     "gst/mxf/Makefile") CONFIG_FILES="$CONFIG_FILES gst/mxf/Makefile" ;;
+    "gst/netsim/Makefile") CONFIG_FILES="$CONFIG_FILES gst/netsim/Makefile" ;;
     "gst/nuvdemux/Makefile") CONFIG_FILES="$CONFIG_FILES gst/nuvdemux/Makefile" ;;
     "gst/onvif/Makefile") CONFIG_FILES="$CONFIG_FILES gst/onvif/Makefile" ;;
     "gst/patchdetect/Makefile") CONFIG_FILES="$CONFIG_FILES gst/patchdetect/Makefile" ;;
@@ -60008,7 +60207,6 @@
     "gst/pnm/Makefile") CONFIG_FILES="$CONFIG_FILES gst/pnm/Makefile" ;;
     "gst/rawparse/Makefile") CONFIG_FILES="$CONFIG_FILES gst/rawparse/Makefile" ;;
     "gst/removesilence/Makefile") CONFIG_FILES="$CONFIG_FILES gst/removesilence/Makefile" ;;
-    "gst/rtp/Makefile") CONFIG_FILES="$CONFIG_FILES gst/rtp/Makefile" ;;
     "gst/sdi/Makefile") CONFIG_FILES="$CONFIG_FILES gst/sdi/Makefile" ;;
     "gst/sdp/Makefile") CONFIG_FILES="$CONFIG_FILES gst/sdp/Makefile" ;;
     "gst/segmentclip/Makefile") CONFIG_FILES="$CONFIG_FILES gst/segmentclip/Makefile" ;;
@@ -60049,6 +60247,7 @@
     "gst-libs/gst/base/Makefile") CONFIG_FILES="$CONFIG_FILES gst-libs/gst/base/Makefile" ;;
     "gst-libs/gst/player/Makefile") CONFIG_FILES="$CONFIG_FILES gst-libs/gst/player/Makefile" ;;
     "gst-libs/gst/video/Makefile") CONFIG_FILES="$CONFIG_FILES gst-libs/gst/video/Makefile" ;;
+    "gst-libs/gst/audio/Makefile") CONFIG_FILES="$CONFIG_FILES gst-libs/gst/audio/Makefile" ;;
     "sys/Makefile") CONFIG_FILES="$CONFIG_FILES sys/Makefile" ;;
     "sys/dshowdecwrapper/Makefile") CONFIG_FILES="$CONFIG_FILES sys/dshowdecwrapper/Makefile" ;;
     "sys/acmenc/Makefile") CONFIG_FILES="$CONFIG_FILES sys/acmenc/Makefile" ;;
@@ -60069,6 +60268,7 @@
     "sys/nvenc/Makefile") CONFIG_FILES="$CONFIG_FILES sys/nvenc/Makefile" ;;
     "sys/opensles/Makefile") CONFIG_FILES="$CONFIG_FILES sys/opensles/Makefile" ;;
     "sys/shm/Makefile") CONFIG_FILES="$CONFIG_FILES sys/shm/Makefile" ;;
+    "sys/tinyalsa/Makefile") CONFIG_FILES="$CONFIG_FILES sys/tinyalsa/Makefile" ;;
     "sys/uvch264/Makefile") CONFIG_FILES="$CONFIG_FILES sys/uvch264/Makefile" ;;
     "sys/vcd/Makefile") CONFIG_FILES="$CONFIG_FILES sys/vcd/Makefile" ;;
     "sys/vdpau/Makefile") CONFIG_FILES="$CONFIG_FILES sys/vdpau/Makefile" ;;
@@ -60140,7 +60340,6 @@
     "ext/Makefile") CONFIG_FILES="$CONFIG_FILES ext/Makefile" ;;
     "ext/modplug/Makefile") CONFIG_FILES="$CONFIG_FILES ext/modplug/Makefile" ;;
     "ext/mpeg2enc/Makefile") CONFIG_FILES="$CONFIG_FILES ext/mpeg2enc/Makefile" ;;
-    "ext/mpg123/Makefile") CONFIG_FILES="$CONFIG_FILES ext/mpg123/Makefile" ;;
     "ext/mimic/Makefile") CONFIG_FILES="$CONFIG_FILES ext/mimic/Makefile" ;;
     "ext/mplex/Makefile") CONFIG_FILES="$CONFIG_FILES ext/mplex/Makefile" ;;
     "ext/musepack/Makefile") CONFIG_FILES="$CONFIG_FILES ext/musepack/Makefile" ;;
@@ -60169,10 +60368,10 @@
     "ext/srtp/Makefile") CONFIG_FILES="$CONFIG_FILES ext/srtp/Makefile" ;;
     "ext/teletextdec/Makefile") CONFIG_FILES="$CONFIG_FILES ext/teletextdec/Makefile" ;;
     "ext/gme/Makefile") CONFIG_FILES="$CONFIG_FILES ext/gme/Makefile" ;;
-    "ext/gsettings/Makefile") CONFIG_FILES="$CONFIG_FILES ext/gsettings/Makefile" ;;
-    "ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml") CONFIG_FILES="$CONFIG_FILES ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml" ;;
     "ext/spc/Makefile") CONFIG_FILES="$CONFIG_FILES ext/spc/Makefile" ;;
     "ext/timidity/Makefile") CONFIG_FILES="$CONFIG_FILES ext/timidity/Makefile" ;;
+    "ext/vulkan/Makefile") CONFIG_FILES="$CONFIG_FILES ext/vulkan/Makefile" ;;
+    "ext/vulkan/xcb/Makefile") CONFIG_FILES="$CONFIG_FILES ext/vulkan/xcb/Makefile" ;;
     "ext/webp/Makefile") CONFIG_FILES="$CONFIG_FILES ext/webp/Makefile" ;;
     "ext/x265/Makefile") CONFIG_FILES="$CONFIG_FILES ext/x265/Makefile" ;;
     "ext/xvid/Makefile") CONFIG_FILES="$CONFIG_FILES ext/xvid/Makefile" ;;
@@ -60202,6 +60401,8 @@
     "pkgconfig/gstreamer-bad-base-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/gstreamer-bad-base-uninstalled.pc" ;;
     "pkgconfig/gstreamer-bad-video.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/gstreamer-bad-video.pc" ;;
     "pkgconfig/gstreamer-bad-video-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/gstreamer-bad-video-uninstalled.pc" ;;
+    "pkgconfig/gstreamer-bad-audio.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/gstreamer-bad-audio.pc" ;;
+    "pkgconfig/gstreamer-bad-audio-uninstalled.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/gstreamer-bad-audio-uninstalled.pc" ;;
     "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
     "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;;
 
@@ -60894,55 +61095,53 @@
  ;;
     "libtool":C)
 
-    # See if we are running on zsh, and set the options which allow our
+    # See if we are running on zsh, and set the options that allow our
     # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
+    if test -n "${ZSH_VERSION+set}"; then
       setopt NO_GLOB_SUBST
     fi
 
-    cfgfile="${ofile}T"
+    cfgfile=${ofile}T
     trap "$RM \"$cfgfile\"; exit 1" 1 2 15
     $RM "$cfgfile"
 
     cat <<_LT_EOF >> "$cfgfile"
 #! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Generated automatically by $as_me ($PACKAGE) $VERSION
 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
+
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit, 1996
+
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of of the License, or
+# (at your option) any later version.
 #
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program or library that is built
+# using GNU Libtool, you may include this file under the  same
+# distribution terms that you use for the rest of that program.
 #
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# GNU Libtool 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 General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
 # The names of the tagged configurations supported by this script.
-available_tags="CXX "
+available_tags='CXX '
+
+# Configured defaults for sys_lib_dlsearch_path munging.
+: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
 
 # ### BEGIN LIBTOOL CONFIG
 
@@ -60971,6 +61170,9 @@
 # Whether or not to optimize for fast installation.
 fast_install=$enable_fast_install
 
+# Shared archive member basename,for filename based shared library versioning on AIX.
+shared_archive_member_spec=$shared_archive_member_spec
+
 # Shell to use when invoking shell scripts.
 SHELL=$lt_SHELL
 
@@ -61082,18 +61284,27 @@
 # Transform the output of nm in a proper C declaration.
 global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
 
+# Transform the output of nm into a list of symbols to manually relocate.
+global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import
+
 # Transform the output of nm in a C name address pair.
 global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
 
 # Transform the output of nm in a C name address pair when lib prefix is needed.
 global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
 
+# The name lister interface.
+nm_interface=$lt_lt_cv_nm_interface
+
 # Specify filename containing input files for \$NM.
 nm_file_list_spec=$lt_nm_file_list_spec
 
-# The root where to search for dependent libraries,and in which our libraries should be installed.
+# The root where to search for dependent libraries,and where our libraries should be installed.
 lt_sysroot=$lt_sysroot
 
+# Command to truncate a binary pipe.
+lt_truncate_bin=$lt_lt_cv_truncate_bin
+
 # The name of the directory that contains temporary libtool files.
 objdir=$objdir
 
@@ -61184,8 +61395,11 @@
 # Compile-time system search path for libraries.
 sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
 
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+# Detected run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path
+
+# Explicit LT_SYS_LIBRARY_PATH set during ./configure time.
+configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path
 
 # Whether dlopen is supported.
 dlopen_support=$enable_dlopen
@@ -61278,13 +61492,13 @@
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator
 
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
 # DIR into the resulting binary.
 hardcode_direct=$hardcode_direct
 
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
 # DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
 # library is relocated.
 hardcode_direct_absolute=$hardcode_direct_absolute
 
@@ -61350,13 +61564,72 @@
 
 _LT_EOF
 
+    cat <<'_LT_EOF' >> "$cfgfile"
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
+
+# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; do
+      case $cc_temp in
+        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+
+
+# ### END FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_EOF
+
   case $host_os in
   aix3*)
     cat <<\_LT_EOF >> "$cfgfile"
 # AIX sometimes has problems with the GCC collect2 program.  For some
 # reason, if we set the COLLECT_NAMES environment variable, the problems
 # vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
+if test set != "${COLLECT_NAMES+set}"; then
   COLLECT_NAMES=
   export COLLECT_NAMES
 fi
@@ -61365,7 +61638,7 @@
   esac
 
 
-ltmain="$ac_aux_dir/ltmain.sh"
+ltmain=$ac_aux_dir/ltmain.sh
 
 
   # We use sed instead of cat because bash on DJGPP gets confused if
@@ -61375,165 +61648,6 @@
   sed '$q' "$ltmain" >> "$cfgfile" \
      || (rm -f "$cfgfile"; exit 1)
 
-  if test x"$xsi_shell" = xyes; then
-  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\    # positional parameters, so assign one to ordinary parameter first.\
-\    func_stripname_result=${3}\
-\    func_stripname_result=${func_stripname_result#"${1}"}\
-\    func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\    func_split_long_opt_name=${1%%=*}\
-\    func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\    func_split_short_opt_arg=${1#??}\
-\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\    case ${1} in\
-\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\      *)    func_lo2o_result=${1} ;;\
-\    esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
-    func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
-    func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
-    func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
-    eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\    func_quote_for_eval "${2}"\
-\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
-
-
    mv -f "$cfgfile" "$ofile" ||
     (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
   chmod +x "$ofile"
@@ -61620,13 +61734,13 @@
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
 
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
 # DIR into the resulting binary.
 hardcode_direct=$hardcode_direct_CXX
 
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes
 # DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# "absolute",i.e impossible to change by setting \$shlibpath_var if the
 # library is relocated.
 hardcode_direct_absolute=$hardcode_direct_absolute_CXX
 
@@ -62306,6 +62420,43 @@
 	  mv $outfile gst-libs/gst/gl/gstglconfig.h
 	fi
  ;;
+    "ext/vulkan/vkconfig.h":C)
+	outfile=vkconfig.h-tmp
+	cat > $outfile <<\_______EOF
+/* vkconfig.h
+ *
+ * This is a generated file.  Please modify `configure.ac'
+ */
+
+#ifndef __GST_VULKAN_CONFIG_H__
+#define __GST_VULKAN_CONFIG_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+_______EOF
+
+	cat >>$outfile <<_______EOF
+$vulkan_config_defines
+_______EOF
+
+	cat >>$outfile <<_______EOF
+
+G_END_DECLS
+
+#endif  /* __GST_VULKAN_CONFIG_H__ */
+_______EOF
+
+
+	if cmp -s $outfile ext/vulkan/vkconfig.h; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: ext/vulkan/vkconfig.h is unchanged" >&5
+$as_echo "$as_me: ext/vulkan/vkconfig.h is unchanged" >&6;}
+	  rm -f $outfile
+	else
+	  mv $outfile ext/vulkan/vkconfig.h
+	fi
+ ;;
 
   esac
 done # for ac_tag
diff --git a/configure.ac b/configure.ac
index 5aa65e6..1dc9b7f 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.7.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
+AC_INIT([GStreamer Bad Plug-ins],[1.7.2],[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, 701, 0, 701)
+AS_LIBTOOL(GST, 702, 0, 702)
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.7.1
-GSTPB_REQ=1.7.1
+GST_REQ=1.7.2
+GSTPB_REQ=1.7.2
 
 dnl *** autotools stuff ****
 
@@ -451,7 +451,6 @@
  videomeasure \
  linsys \
  apexsink dc1394 \
- gsettings \
  musepack nas sdl timidity \
  wininet \
  xvid lv2 sndio libvisual"
@@ -502,6 +501,7 @@
 AG_GST_CHECK_PLUGIN(mpegpsmux)
 AG_GST_CHECK_PLUGIN(mve)
 AG_GST_CHECK_PLUGIN(mxf)
+AG_GST_CHECK_PLUGIN(netsim)
 AG_GST_CHECK_PLUGIN(nuvdemux)
 AG_GST_CHECK_PLUGIN(onvif)
 AG_GST_CHECK_PLUGIN(patchdetect)
@@ -509,7 +509,6 @@
 AG_GST_CHECK_PLUGIN(pnm)
 AG_GST_CHECK_PLUGIN(rawparse)
 AG_GST_CHECK_PLUGIN(removesilence)
-AG_GST_CHECK_PLUGIN(rtp)
 AG_GST_CHECK_PLUGIN(sdi)
 AG_GST_CHECK_PLUGIN(sdp)
 AG_GST_CHECK_PLUGIN(segmentclip)
@@ -1340,6 +1339,7 @@
 GST_GL_HAVE_GLINTPTR=0
 GST_GL_HAVE_GLSYNC=0
 GST_GL_HAVE_GLUINT64=0
+GST_GL_HAVE_GLINT64=0
 
 old_CFLAGS=$CFLAGS
 CFLAGS="$GL_CFLAGS $CFLAGS"
@@ -1374,6 +1374,11 @@
   GST_GL_HAVE_GLUINT64=1
 fi
 
+AC_CHECK_TYPES(GLint64, [], [], [[$GL_INCLUDES]])
+if test "x$ac_cv_type_GLint64" = "xyes"; then
+  GST_GL_HAVE_GLINT64=1
+fi
+
 CFLAGS=$old_CFLAGS
 
 GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
@@ -1383,6 +1388,7 @@
 #define GST_GL_HAVE_GLINTPTR $GST_GL_HAVE_GLINTPTR
 #define GST_GL_HAVE_GLSYNC $GST_GL_HAVE_GLSYNC
 #define GST_GL_HAVE_GLUINT64 $GST_GL_HAVE_GLUINT64
+#define GST_GL_HAVE_GLINT64 $GST_GL_HAVE_GLINT64
 "
 
 AC_CONFIG_COMMANDS([gst-libs/gst/gl/gstglconfig.h], [
@@ -1458,6 +1464,55 @@
 AC_SUBST(HAVE_JPEG)
 AM_CONDITIONAL(HAVE_JPEG, test "x$HAVE_JPEG" = "xyes")
 
+dnl Vulkan
+VULKAN_CONFIG_DEFINES=""
+
+PKG_CHECK_MODULES(XCB, xcb >= 1.10, HAVE_XCB=yes, HAVE_XCB=no)
+
+AM_CONDITIONAL(USE_XCB, test "x$HAVE_XCB" = "xyes")
+if test "x$HAVE_XCB" = "xyes"; then
+  VULKAN_CONFIG_DEFINES="$VULKAN_CONFIG_DEFINES
+  #define GST_VULKAN_HAVE_WINDOW_XCB 1"
+fi
+
+AC_CONFIG_COMMANDS([ext/vulkan/vkconfig.h], [
+	outfile=vkconfig.h-tmp
+	cat > $outfile <<\_______EOF
+/* vkconfig.h
+ *
+ * This is a generated file.  Please modify `configure.ac'
+ */
+
+#ifndef __GST_VULKAN_CONFIG_H__
+#define __GST_VULKAN_CONFIG_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+_______EOF
+
+	cat >>$outfile <<_______EOF
+$vulkan_config_defines
+_______EOF
+
+	cat >>$outfile <<_______EOF
+
+G_END_DECLS
+
+#endif  /* __GST_VULKAN_CONFIG_H__ */
+_______EOF
+
+
+	if cmp -s $outfile ext/vulkan/vkconfig.h; then
+          AC_MSG_NOTICE([ext/vulkan/vkconfig.h is unchanged])
+	  rm -f $outfile
+	else
+	  mv $outfile ext/vulkan/vkconfig.h
+	fi
+],[
+vulkan_config_defines='$VULKAN_CONFIG_DEFINES'
+])
 
 dnl *** sys plug-ins ***
 
@@ -1887,6 +1942,12 @@
 ])
 AM_CONDITIONAL(USE_NVENC_GST_GL, test "x$USE_NVENC_GST_GL" = "xyes")
 
+dnl check for tinyalsa
+translit(dnm, m, l) AM_CONDITIONAL(USE_TINYALSA, true)
+AG_GST_CHECK_FEATURE(TINYALSA, [tinyalsa], tinyalsa, [
+  AC_CHECK_HEADER(tinyalsa/asoundlib.h, HAVE_TINYALSA="yes", HAVE_TINYALSA="no")
+])
+
 dnl *** ext plug-ins ***
 dnl keep this list sorted alphabetically !
 
@@ -2089,14 +2150,20 @@
 
 dnl **** Wayland ****
 translit(dnm, m, l) AM_CONDITIONAL(USE_WAYLAND, true)
+AC_PATH_PROG([wayland_scanner], [wayland-scanner])
 AG_GST_CHECK_FEATURE(WAYLAND, [wayland sink], wayland , [
-  PKG_CHECK_MODULES(WAYLAND, wayland-client >= 1.4.0 wayland-scanner, [
-    HAVE_WAYLAND="yes" ], [ HAVE_WAYLAND="no"
+  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
+    ],
+    [ HAVE_WAYLAND="no"
   ])
 ])
 
-AC_PATH_PROG([wayland_scanner], [wayland-scanner])
-
 dnl **** WebP ****
 translit(dnm, m, l) AM_CONDITIONAL(USE_WEBP, true)
 AG_GST_CHECK_FEATURE(WEBP, [WebP], webp , [
@@ -2152,60 +2219,27 @@
   AC_SUBST(FAAC_LIBS)
 ])
 
-dnl **** Free AAC Decoder (FAAD) ****
+dnl **** Free AAC Decoder (FAAD2) ****
 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAD, true)
-AG_GST_CHECK_FEATURE(FAAD, [AAC decoder plug-in], faad, [
-  HAVE_FAAD="yes"
-  faad_hdr=""
-  AG_GST_CHECK_LIBHEADER(FAAD, faad, faacDecOpen, $LIBM, faad.h,
-    FAAD_LIBS="-lfaad $LIBM", HAVE_FAAD="no")
-  if test $HAVE_FAAD = "no"; then
-    AG_GST_CHECK_LIBHEADER(FAAD, faad, NeAACDecOpen, $LIBM, neaacdec.h,
-      [ FAAD_LIBS="-lfaad $LIBM"
-        AC_DEFINE(FAAD_IS_NEAAC, 1, [Define if AAC is using new api prefix])
-        faad_hdr="neaacdec.h"
-      ], [
-        HAVE_FAAD="no"
-      ],)
-  else
-    faad_hdr="faad.h"
-  fi
-  if test $HAVE_FAAD = "yes"; then
-    AC_MSG_CHECKING([Checking for FAAD >= 2.0])
+AG_GST_CHECK_FEATURE(FAAD, [FAAD2 AAC decoder plug-in], faad, [
+  AG_GST_CHECK_LIBHEADER(FAAD, faad, NeAACDecOpen, $LIBM, neaacdec.h, [
     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <faad.h>]], [[
-        #if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
-        #error Not faad2
-        #else
-        /* Release candidate of 2.0 is not good enough for us. This field
-         * was added only in 2.0 final and does not exist in 2.0-RC3 */
-        faacDecConfiguration conf; conf.dontUpSampleImplicitSBR = 1;
-        #endif
+      #if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
+      #error Not faad2
+      #elif !defined(LATM)
+      #error Not faad2 >= 2.7
+      #endif
     ]])],[
       HAVE_FAAD="yes"
-
-      AC_MSG_CHECKING([Checking FAAD2 version in $faad_hdr])
-      for minor in 10 9 8 7 6 5 0; do
-        if test x$faad2_minor_version = "x"; then
-          AC_EGREP_CPP([\"2\.$minor\"$], [
-              #include <$faad_hdr>
-              FAAD2_VERSION
-            ], [
-              faad2_minor_version=$minor
-            ])
-        fi
-      done
-      if test x$faad2_minor_version = "x"; then
-        AC_MSG_RESULT([no idea])
-      else
-        AC_MSG_RESULT([2.$faad2_minor_version])
-        AC_DEFINE_UNQUOTED([FAAD2_MINOR_VERSION], [$faad2_minor_version], [The x in 2.x])
-      fi
-    ],[
+      FAAD_LIBS="-lfaad"
+    ], [
+      AC_MSG_WARN([Found libfaad, but version not recent enough. Need faad2 >= 2.7])
       HAVE_FAAD="no"
     ])
-  fi
+  ], [
+      HAVE_FAAD="no"
+  ])
   AC_SUBST(FAAD_LIBS)
-  AC_SUBST(FAAD_IS_NEAAC)
 ])
 
 dnl *** fbdev ***
@@ -2476,14 +2510,6 @@
   fi
 ])
 
-dnl *** mpg123 ***
-translit(dnm, m, l) AM_CONDITIONAL(USE_MPG123, true)
-AG_GST_CHECK_FEATURE(MPG123, [mpg123 audio decoder], mpg123, [
-  PKG_CHECK_MODULES(MPG123, libmpg123 >= 1.13, HAVE_MPG123="yes", HAVE_MPG123="no")
-  AC_SUBST(MPG123_CFLAGS)
-  AC_SUBST(MPG123_LIBS)
-])
-
 dnl *** mplex ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_MPLEX, true)
 AG_GST_CHECK_FEATURE(MPLEX, [mplex], mplex, [
@@ -2749,17 +2775,7 @@
 dnl *** rsvg ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_RSVG, true)
 AG_GST_CHECK_FEATURE(RSVG, [rsvg decoder], rsvg, [
-  PKG_CHECK_MODULES(RSVG, librsvg-2.0 >= 2.36 cairo, [
-    HAVE_RSVG="yes"
-    PKG_CHECK_MODULES(RSVG_2_36_2, librsvg-2.0 >= 2.36.2, HAVE_RSVG_2_36_2="yes", HAVE_RSVG_2_36_2="no")
-    if test "x$HAVE_RSVG_2_36_2" = "xyes"; then
-      AC_DEFINE(HAVE_RSVG_2_36_2, [1], [Have RSVG 2.36.2 or newer])
-    fi
-  ], [
-    HAVE_RSVG="no"
-  ])
-  AC_SUBST(RSVG_CFLAGS)
-  AC_SUBST(RSVG_LIBS)
+  AG_GST_PKG_CHECK_MODULES(RSVG, librsvg-2.0 >= 2.36.2)
 ])
 
 dnl *** gl ***
@@ -2848,7 +2864,7 @@
             # manually for the library one is using
             PKG_CHECK_MODULES(GNUSTL, gnustl, [
               QT_CFLAGS="$QT_CFLAGS $GNUSTL_CFLAGS"
-              QT_LIBS="$QT_CFLAGS $GNUSTL_LIBS"
+              QT_LIBS="$QT_LIBS $GNUSTL_LIBS"
               ], [
               AC_MSG_NOTICE([Could not find Standard C++ library])])
 
@@ -2890,6 +2906,22 @@
   ])
 ])
 
+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
+      fi
+    ], [])
+  ], [])
+])
+
 dnl *** libvisual ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBVISUAL, true)
 AG_GST_CHECK_FEATURE(LIBVISUAL, [libvisual visualization library], libvisual, [
@@ -3211,15 +3243,6 @@
 AC_SUBST(SPANDSP_CFLAGS)
 AC_SUBST(SPANDSP_LIBS)
 
-dnl *** GSettings ***
-translit(dnm, m, l) AM_CONDITIONAL(USE_GSETTINGS, true)
-AG_GST_CHECK_FEATURE(GSETTINGS, [GSettings plugin], gsettings, [
-  AG_GST_PKG_CHECK_MODULES(GSETTINGS, gio-2.0 >= 2.25.0)
-  if test "x$HAVE_GSETTINGS" = "xyes"; then
-    GLIB_GSETTINGS
-  fi
-])
-
 dnl *** sndio ***
 translit(dnm, m, l) AM_CONDITIONAL(USE_SNDIO, true)
 AG_GST_CHECK_FEATURE(SNDIO, [sndio audio], sndio, [
@@ -3341,7 +3364,6 @@
 AM_CONDITIONAL(USE_MODPLUG, false)
 AM_CONDITIONAL(USE_MIMIC, false)
 AM_CONDITIONAL(USE_MPEG2ENC, false)
-AM_CONDITIONAL(USE_MPG123, false)
 AM_CONDITIONAL(USE_MPLEX, false)
 AM_CONDITIONAL(USE_MUSEPACK, false)
 AM_CONDITIONAL(USE_NAS, false)
@@ -3366,7 +3388,6 @@
 AM_CONDITIONAL(USE_SPC, false)
 AM_CONDITIONAL(USE_SRTP, false)
 AM_CONDITIONAL(USE_GME, false)
-AM_CONDITIONAL(USE_GSETTINGS, false)
 AM_CONDITIONAL(USE_XVID, false)
 AM_CONDITIONAL(USE_DVB, false)
 AM_CONDITIONAL(USE_WININET, false)
@@ -3515,6 +3536,7 @@
 gst/mpegpsmux/Makefile
 gst/mve/Makefile
 gst/mxf/Makefile
+gst/netsim/Makefile
 gst/nuvdemux/Makefile
 gst/onvif/Makefile
 gst/patchdetect/Makefile
@@ -3522,7 +3544,6 @@
 gst/pnm/Makefile
 gst/rawparse/Makefile
 gst/removesilence/Makefile
-gst/rtp/Makefile
 gst/sdi/Makefile
 gst/sdp/Makefile
 gst/segmentclip/Makefile
@@ -3563,6 +3584,7 @@
 gst-libs/gst/base/Makefile
 gst-libs/gst/player/Makefile
 gst-libs/gst/video/Makefile
+gst-libs/gst/audio/Makefile
 sys/Makefile
 sys/dshowdecwrapper/Makefile
 sys/acmenc/Makefile
@@ -3583,6 +3605,7 @@
 sys/nvenc/Makefile
 sys/opensles/Makefile
 sys/shm/Makefile
+sys/tinyalsa/Makefile
 sys/uvch264/Makefile
 sys/vcd/Makefile
 sys/vdpau/Makefile
@@ -3654,7 +3677,6 @@
 ext/Makefile
 ext/modplug/Makefile
 ext/mpeg2enc/Makefile
-ext/mpg123/Makefile
 ext/mimic/Makefile
 ext/mplex/Makefile
 ext/musepack/Makefile
@@ -3683,10 +3705,10 @@
 ext/srtp/Makefile
 ext/teletextdec/Makefile
 ext/gme/Makefile
-ext/gsettings/Makefile
-ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml
 ext/spc/Makefile
 ext/timidity/Makefile
+ext/vulkan/Makefile
+ext/vulkan/xcb/Makefile
 ext/webp/Makefile
 ext/x265/Makefile
 ext/xvid/Makefile
@@ -3716,6 +3738,8 @@
 pkgconfig/gstreamer-bad-base-uninstalled.pc
 pkgconfig/gstreamer-bad-video.pc
 pkgconfig/gstreamer-bad-video-uninstalled.pc
+pkgconfig/gstreamer-bad-audio.pc
+pkgconfig/gstreamer-bad-audio-uninstalled.pc
 tools/Makefile
 m4/Makefile
 )
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 0c53151..5a80f5e 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -114,16 +114,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -296,7 +295,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -318,7 +316,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -340,9 +337,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -504,6 +498,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -517,8 +512,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -605,8 +598,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -658,6 +649,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -678,6 +670,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -715,7 +709,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/docs/libs/Makefile.in b/docs/libs/Makefile.in
index ae32eb4..eaa7328 100644
--- a/docs/libs/Makefile.in
+++ b/docs/libs/Makefile.in
@@ -133,16 +133,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -258,7 +257,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -280,7 +278,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -302,9 +299,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -466,6 +460,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -479,8 +474,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -567,8 +560,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -620,6 +611,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -640,6 +632,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -677,7 +671,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/docs/libs/gst-plugins-bad-libs-sections.txt b/docs/libs/gst-plugins-bad-libs-sections.txt
index 84c435e..c672555 100644
--- a/docs/libs/gst-plugins-bad-libs-sections.txt
+++ b/docs/libs/gst-plugins-bad-libs-sections.txt
@@ -1445,7 +1445,6 @@
 GstPlayer
 
 gst_player_new
-gst_player_new_full
 
 gst_player_play
 gst_player_pause
diff --git a/docs/libs/html/GstGLBaseFilter.html b/docs/libs/html/GstGLBaseFilter.html
index b383e00..433b3f5 100644
--- a/docs/libs/html/GstGLBaseFilter.html
+++ b/docs/libs/html/GstGLBaseFilter.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLBaseFilter: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="GstGLBaseFilter.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -51,7 +51,7 @@
 </div>
 <div class="refsect1">
 <a name="GstGLBaseFilter.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -95,7 +95,7 @@
 GL context from the pipeline.</p>
 <div class="refsect3">
 <a name="id-1.2.9.13.8.2.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -114,13 +114,14 @@
 
   gboolean (*gl_start)          (GstGLBaseFilter *filter);
   void     (*gl_stop)           (GstGLBaseFilter *filter);
+  gboolean (*gl_set_caps)       (GstGLBaseFilter *filter, GstCaps * incaps, GstCaps * outcaps);
 
   gpointer _padding[GST_PADDING];
 } GstGLBaseFilterClass;
 </pre>
 <div class="refsect3">
 <a name="id-1.2.9.13.8.3.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -148,6 +149,12 @@
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLBaseFilterClass.gl-set-caps"></a>gl_set_caps</code></em> ()</p></td>
+<td class="struct_member_description"><p>called in the GL thread when caps are set on <em class="parameter"><code>filter</code></em>
+.</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
 <td class="struct_member_name"><p><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> <em class="structfield"><code><a name="GstGLBaseFilterClass.-padding"></a>_padding</code></em>[GST_PADDING];</p></td>
 <td> </td>
 <td> </td>
diff --git a/docs/libs/html/GstGLBufferPool.html b/docs/libs/html/GstGLBufferPool.html
index 5a87703..997e188 100644
--- a/docs/libs/html/GstGLBufferPool.html
+++ b/docs/libs/html/GstGLBufferPool.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLBufferPool: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-GstGLAPI.html" title="GstGLAPI">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="GstGLBufferPool.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -51,7 +51,7 @@
 </div>
 <div class="refsect1">
 <a name="GstGLBufferPool.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -92,7 +92,7 @@
 gst_gl_buffer_pool_new (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.3.7.2.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
diff --git a/docs/libs/html/GstGLColorConvert.html b/docs/libs/html/GstGLColorConvert.html
index fbfc2c4..d3e6416 100644
--- a/docs/libs/html/GstGLColorConvert.html
+++ b/docs/libs/html/GstGLColorConvert.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLColorConvert: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="GstGLBufferPool.html" title="GstGLBufferPool">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="GstGLColorConvert.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -77,7 +77,7 @@
 </div>
 <div class="refsect1">
 <a name="GstGLColorConvert.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -126,7 +126,7 @@
 gst_gl_color_convert_new (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.4.7.2.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -155,7 +155,7 @@
  with the information required for conversion.</p>
 <div class="refsect3">
 <a name="id-1.2.9.4.7.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -201,7 +201,7 @@
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a>s passed to <a class="link" href="GstGLColorConvert.html#gst-gl-color-convert-set-caps" title="gst_gl_color_convert_set_caps ()"><code class="function">gst_gl_color_convert_set_caps()</code></a></p>
 <div class="refsect3">
 <a name="id-1.2.9.4.7.5.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -258,7 +258,7 @@
 </div>
 <div class="refsect1">
 <a name="GstGLColorConvert.see-also"></a><h2>See Also</h2>
-<p><a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a>, <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/GstGLDownload.html"><span class="type">GstGLDownload</span></a>, <a class="link" href="gst-plugins-bad-libs-gstglmemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p>
+<p><a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a>, <span class="type">GstGLDownload</span>, <a class="link" href="gst-plugins-bad-libs-gstglmemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/libs/html/GstGLContext.html b/docs/libs/html/GstGLContext.html
index 46377d2..4eaef85 100644
--- a/docs/libs/html/GstGLContext.html
+++ b/docs/libs/html/GstGLContext.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLContext: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="GstGLColorConvert.html" title="GstGLColorConvert">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="GstGLContext.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -249,7 +249,7 @@
 </div>
 <div class="refsect1">
 <a name="GstGLContext.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -304,7 +304,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -334,7 +334,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.5.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -364,7 +364,7 @@
 <p>Wraps an existing OpenGL context into a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.6.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -420,7 +420,7 @@
 <p>Should only be called once.</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.7.7"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -461,7 +461,7 @@
 called for this context.</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.8.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -488,7 +488,7 @@
 currently set window.  See <a class="link" href="GstGLContext.html#gst-gl-context-set-window" title="gst_gl_context_set_window ()"><code class="function">gst_gl_context_set_window()</code></a> for details.</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.9.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -535,7 +535,7 @@
 be retrieved using this method.</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.11.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -568,7 +568,7 @@
 gst_gl_context_get_window (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.12.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -601,7 +601,7 @@
 already running.</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.13.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -641,7 +641,7 @@
 <p>MT-safe</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.14.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -676,7 +676,7 @@
 gst_gl_context_get_display (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.15.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -706,7 +706,7 @@
 the <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> chosen.</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.16.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -734,7 +734,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.17.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -762,7 +762,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.18.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -788,7 +788,7 @@
 gst_gl_context_get_current_gl_context (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLPlatform" title="enum GstGLPlatform"><span class="type">GstGLPlatform</span></a> platform</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.19.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -820,7 +820,7 @@
 returned.</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.20.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -859,7 +859,7 @@
 gst_gl_context_get_thread (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.21.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -889,7 +889,7 @@
 <p>Note: This will always fail for two wrapped <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>'s</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.22.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -928,7 +928,7 @@
 determine their existence and so will fail if that is not the case.</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.23.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -966,7 +966,7 @@
                                  <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> min</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.24.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1017,7 +1017,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.25.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1056,7 +1056,7 @@
 allow wrapped contexts to be used as regular <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>'s.</p>
 <div class="refsect3">
 <a name="id-1.2.9.5.7.26.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1090,7 +1090,7 @@
 <a name="GstGLContextError"></a><h3>enum GstGLContextError</h3>
 <div class="refsect3">
 <a name="id-1.2.9.5.8.2.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
diff --git a/docs/libs/html/GstGLDisplay.html b/docs/libs/html/GstGLDisplay.html
index 0339415..e2c8fd1 100644
--- a/docs/libs/html/GstGLDisplay.html
+++ b/docs/libs/html/GstGLDisplay.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLDisplay: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-GstGLContextWGL.html" title="GstGLContextWGL">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="GstGLDisplay.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -118,7 +118,7 @@
 </div>
 <div class="refsect1">
 <a name="GstGLDisplay.signals"></a><h2>Signals</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="signals_return">
 <col width="300px" class="signals_name">
@@ -134,7 +134,7 @@
 </div>
 <div class="refsect1">
 <a name="GstGLDisplay.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -206,7 +206,7 @@
 gst_gl_display_get_handle_type (<em class="parameter"><code><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> *display</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.11.8.3.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -239,7 +239,7 @@
 API supported by a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.9.11.8.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -268,7 +268,7 @@
 <p>see <a class="link" href="GstGLDisplay.html#gst-gl-display-filter-gl-api" title="gst_gl_display_filter_gl_api ()"><code class="function">gst_gl_display_filter_gl_api()</code></a> for what the returned value represents</p>
 <div class="refsect3">
 <a name="id-1.2.9.11.8.5.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -295,7 +295,7 @@
                             <em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.11.8.6.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -334,7 +334,7 @@
                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Threads.html#GThread"><span class="type">GThread</span></a> *thread</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.11.8.7.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -377,7 +377,7 @@
                             <em class="parameter"><code><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> **display</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.11.8.9.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -416,7 +416,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.9.11.8.10.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -451,7 +451,7 @@
 <a name="GstGLDisplayType"></a><h3>enum GstGLDisplayType</h3>
 <div class="refsect3">
 <a name="id-1.2.9.11.9.3.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -524,7 +524,7 @@
 display's object lock held.</p>
 <div class="refsect3">
 <a name="id-1.2.9.11.10.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
diff --git a/docs/libs/html/GstGLFilter.html b/docs/libs/html/GstGLFilter.html
index f6ad33d..895facc 100644
--- a/docs/libs/html/GstGLFilter.html
+++ b/docs/libs/html/GstGLFilter.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLFilter: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="GstGLBaseFilter.html" title="GstGLBaseFilter">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="GstGLFilter.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -77,7 +77,7 @@
 </div>
 <div class="refsect1">
 <a name="GstGLFilter.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -123,7 +123,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.9.14.7.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -175,7 +175,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.9.14.7.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -242,7 +242,7 @@
 <p>See also: <a class="link" href="GstGLFilter.html#gst-gl-filter-render-to-target" title="gst_gl_filter_render_to_target ()"><code class="function">gst_gl_filter_render_to_target()</code></a></p>
 <div class="refsect3">
 <a name="id-1.2.9.14.7.4.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -290,7 +290,7 @@
 automatic download if needed.</p>
 <div class="refsect3">
 <a name="id-1.2.9.14.7.5.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -331,7 +331,7 @@
 <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstBuffer.html"><span class="type">GstBuffer</span></a>s.</p>
 <div class="refsect3">
 <a name="id-1.2.9.14.8.2.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -362,7 +362,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.9.14.8.3.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/GstGLFramebuffer.html b/docs/libs/html/GstGLFramebuffer.html
index 607c8c4..4a9c8c8 100644
--- a/docs/libs/html/GstGLFramebuffer.html
+++ b/docs/libs/html/GstGLFramebuffer.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLFramebuffer: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="GstGLFilter.html" title="GstGLFilter">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="GstGLFramebuffer.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -77,7 +77,7 @@
 </div>
 <div class="refsect1">
 <a name="GstGLFramebuffer.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/libs/html/GstGLUpload.html b/docs/libs/html/GstGLUpload.html
index 81e6363..39228b3 100644
--- a/docs/libs/html/GstGLUpload.html
+++ b/docs/libs/html/GstGLUpload.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLUpload: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-GstGLSyncMeta.html" title="GstGLSyncMeta">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="GstGLUpload.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -93,7 +93,7 @@
 </div>
 <div class="refsect1">
 <a name="GstGLUpload.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -125,7 +125,7 @@
 gst_gl_upload_new (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.19.7.2.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -152,7 +152,7 @@
                         <em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> **out_caps</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.19.7.3.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -194,7 +194,7 @@
  with the information required for upload.</p>
 <div class="refsect3">
 <a name="id-1.2.9.19.7.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -237,7 +237,7 @@
 <p>Adds the required allocation parameters to support uploading.</p>
 <div class="refsect3">
 <a name="id-1.2.9.19.7.5.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -284,7 +284,7 @@
 <a class="link" href="GstGLUpload.html#gst-gl-upload-set-caps" title="gst_gl_upload_set_caps ()"><code class="function">gst_gl_upload_set_caps()</code></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.9.19.7.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -325,7 +325,7 @@
 </div>
 <div class="refsect1">
 <a name="GstGLUpload.see-also"></a><h2>See Also</h2>
-<p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/GstGLDownload.html"><span class="type">GstGLDownload</span></a>, <a class="link" href="gst-plugins-bad-libs-gstglmemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p>
+<p><span class="type">GstGLDownload</span>, <a class="link" href="gst-plugins-bad-libs-gstglmemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/libs/html/GstGLWindow.html b/docs/libs/html/GstGLWindow.html
index 91cb01e..90f9a6a 100644
--- a/docs/libs/html/GstGLWindow.html
+++ b/docs/libs/html/GstGLWindow.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLWindow: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-Utilities.html" title="Utilities">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="GstGLWindow.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -230,7 +230,7 @@
 </div>
 <div class="refsect1">
 <a name="GstGLWindow.signals"></a><h2>Signals</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="signals_return">
 <col width="300px" class="signals_name">
@@ -252,7 +252,7 @@
 </div>
 <div class="refsect1">
 <a name="GstGLWindow.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -332,7 +332,7 @@
 gst_gl_window_new (<em class="parameter"><code><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> *display</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.8.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -361,7 +361,7 @@
 <p>Redraw the window contents.  Implementations should invoke the draw callback.</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.9.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -384,7 +384,7 @@
 <p>Whether the runloop is running</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.10.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -407,7 +407,7 @@
 <p>Quit the runloop's execution.</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.11.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -430,7 +430,7 @@
 <p>Start the execution of the runloop.</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.12.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -452,7 +452,7 @@
 gst_gl_window_get_context (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.13.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -480,7 +480,7 @@
 gst_gl_window_get_display (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.14.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -513,7 +513,7 @@
 have executed when this function returns.</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.15.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -555,7 +555,7 @@
 have been executed when this function returns.</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.16.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -600,7 +600,7 @@
 <p>Sets the callback called when the window is about to close.</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.17.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -645,7 +645,7 @@
 <p>Sets the draw callback called everytime <a class="link" href="GstGLWindow.html#gst-gl-window-draw" title="gst_gl_window_draw ()"><code class="function">gst_gl_window_draw()</code></a> is called</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.18.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -690,7 +690,7 @@
 <p>Sets the resize callback called everytime a resize of the window occurs.</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.19.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -735,7 +735,7 @@
 require this to be called with a valid handle before drawing can commence.</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.20.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -764,7 +764,7 @@
 gst_gl_window_get_window_handle (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.21.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -794,7 +794,7 @@
 to ignore this information.</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.22.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -829,7 +829,7 @@
 <p>Present the window to the screen.</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.23.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -853,7 +853,7 @@
                                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> *height</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.24.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -895,7 +895,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.8.25.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -923,7 +923,7 @@
 <a name="GstGLWindowError"></a><h3>enum GstGLWindowError</h3>
 <div class="refsect3">
 <a name="id-1.2.9.21.9.2.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -982,7 +982,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.9.21.9.4.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -1092,7 +1092,7 @@
 <p>Will be emitted when a key event is received by the GstGLwindow.</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.10.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1138,7 +1138,7 @@
 <p>Will be emitted when a mouse event is received by the GstGLwindow.</p>
 <div class="refsect3">
 <a name="id-1.2.9.21.10.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
diff --git a/docs/libs/html/annotation-glossary.html b/docs/libs/html/annotation-glossary.html
index 002195c..9d8ecbe 100644
--- a/docs/libs/html/annotation-glossary.html
+++ b/docs/libs/html/annotation-glossary.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Annotation Glossary: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="prev" href="api-index-deprecated.html" title="Index of deprecated API">
diff --git a/docs/libs/html/api-index-deprecated.html b/docs/libs/html/api-index-deprecated.html
index 1bb359a..f4cd866 100644
--- a/docs/libs/html/api-index-deprecated.html
+++ b/docs/libs/html/api-index-deprecated.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Index of deprecated API: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="prev" href="api-index-full.html" title="Index">
diff --git a/docs/libs/html/api-index-full.html b/docs/libs/html/api-index-full.html
index 064c13f..b666dea 100644
--- a/docs/libs/html/api-index-full.html
+++ b/docs/libs/html/api-index-full.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Index: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="prev" href="gstreamer-libs-hierarchy.html" title="Part II. Object Hierarchy">
@@ -2920,10 +2920,6 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-new-full" title="gst_player_new_full ()">gst_player_new_full</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-pause" title="gst_player_pause ()">gst_player_pause</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
 </dt>
 <dd></dd>
diff --git a/docs/libs/html/base.html b/docs/libs/html/base.html
index 4e4f768..ee826c0 100644
--- a/docs/libs/html/base.html
+++ b/docs/libs/html/base.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GStreamer Base classes from gst-plugins-bad: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-plugins-bad.html" title="Part I. GStreamer Bad Plugins Libraries">
 <link rel="prev" href="gst-plugins-bad-libs-GstInsertbin.html" title="GstInsertbin">
diff --git a/docs/libs/html/ch08.html b/docs/libs/html/ch08.html
index 7698ec2..5f145ee 100644
--- a/docs/libs/html/ch08.html
+++ b/docs/libs/html/ch08.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Interfaces: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-plugins-bad.html" title="Part I. GStreamer Bad Plugins Libraries">
 <link rel="prev" href="gst-plugins-bad-libs-gstplayer-visualization.html" title="gstplayer-visualization">
diff --git a/docs/libs/html/codecparsers.html b/docs/libs/html/codecparsers.html
index a776dea..1259078 100644
--- a/docs/libs/html/codecparsers.html
+++ b/docs/libs/html/codecparsers.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Bitstream parsing Library: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-plugins-bad.html" title="Part I. GStreamer Bad Plugins Libraries">
 <link rel="prev" href="compiling.html" title="Compiling">
diff --git a/docs/libs/html/compiling.html b/docs/libs/html/compiling.html
index be3610f..c9ca33b 100644
--- a/docs/libs/html/compiling.html
+++ b/docs/libs/html/compiling.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Compiling: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-plugins-bad.html" title="Part I. GStreamer Bad Plugins Libraries">
 <link rel="prev" href="gstreamer-plugins-bad.html" title="Part I. GStreamer Bad Plugins Libraries">
diff --git a/docs/libs/html/gl.html b/docs/libs/html/gl.html
index d0e1b06..53e0606 100644
--- a/docs/libs/html/gl.html
+++ b/docs/libs/html/gl.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>OpenGL Helper Library: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-plugins-bad.html" title="Part I. GStreamer Bad Plugins Libraries">
 <link rel="prev" href="gst-plugins-bad-libs-GstVideoAggregatorPad.html" title="GstVideoAggregatorPad">
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 5377a28..7778a0e 100644
--- a/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
+++ b/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
@@ -669,7 +669,6 @@
     <keyword type="struct" name="struct GstGLWindowX11" link="gst-plugins-bad-libs-GstGLWindowX11.html#GstGLWindowX11"/>
     <keyword type="struct" name="struct GstGLWindowX11Class" link="gst-plugins-bad-libs-GstGLWindowX11.html#GstGLWindowX11Class"/>
     <keyword type="function" name="gst_player_new ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-new"/>
-    <keyword type="function" name="gst_player_new_full ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-new-full"/>
     <keyword type="function" name="gst_player_play ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-play"/>
     <keyword type="function" name="gst_player_pause ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-pause"/>
     <keyword type="function" name="gst_player_stop ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-stop"/>
@@ -797,7 +796,7 @@
     <keyword type="function" name="gst_photography_get_flash_mode ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-get-flash-mode"/>
     <keyword type="function" name="gst_photography_get_flicker_mode ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-get-flicker-mode"/>
     <keyword type="function" name="gst_photography_get_focus_mode ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-get-focus-mode"/>
-    <keyword type="function" name="gst_photography_get_noise_reduction ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-get-noise-reduction" since="0.10.21"/>
+    <keyword type="function" name="gst_photography_get_noise_reduction ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-get-noise-reduction"/>
     <keyword type="function" name="gst_photography_get_zoom ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-get-zoom"/>
     <keyword type="function" name="gst_photography_set_ev_compensation ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-set-ev-compensation"/>
     <keyword type="function" name="gst_photography_set_iso_speed ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-set-iso-speed"/>
@@ -809,7 +808,7 @@
     <keyword type="function" name="gst_photography_set_flash_mode ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-set-flash-mode"/>
     <keyword type="function" name="gst_photography_set_flicker_mode ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-set-flicker-mode"/>
     <keyword type="function" name="gst_photography_set_focus_mode ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-set-focus-mode"/>
-    <keyword type="function" name="gst_photography_set_noise_reduction ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-set-noise-reduction" since="0.10.21"/>
+    <keyword type="function" name="gst_photography_set_noise_reduction ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-set-noise-reduction"/>
     <keyword type="function" name="gst_photography_set_zoom ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-set-zoom"/>
     <keyword type="function" name="gst_photography_get_capabilities ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-get-capabilities"/>
     <keyword type="function" name="gst_photography_prepare_for_capture ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-prepare-for-capture"/>
@@ -817,7 +816,7 @@
     <keyword type="function" name="gst_photography_set_config ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-set-config"/>
     <keyword type="function" name="gst_photography_get_config ()" link="gst-plugins-bad-libs-GstPhotography.html#gst-photography-get-config"/>
     <keyword type="struct" name="GstPhotography" link="gst-plugins-bad-libs-GstPhotography.html#GstPhotography"/>
-    <keyword type="enum" name="enum GstPhotographyNoiseReduction" link="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyNoiseReduction" since="0.10.21"/>
+    <keyword type="enum" name="enum GstPhotographyNoiseReduction" link="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyNoiseReduction"/>
     <keyword type="enum" name="enum GstPhotographyWhiteBalanceMode" link="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyWhiteBalanceMode"/>
     <keyword type="enum" name="enum GstPhotographyColorToneMode" link="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyColorToneMode"/>
     <keyword type="enum" name="enum GstPhotographySceneMode" link="gst-plugins-bad-libs-GstPhotography.html#GstPhotographySceneMode"/>
diff --git a/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html b/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html
index cb6b969..7bb131e 100644
--- a/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html
+++ b/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ATSC variants of MPEG-TS descriptors: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="mpegts.html" title="Mpeg TS helper library">
 <link rel="prev" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -65,7 +65,7 @@
 <p>Consult the relevant specifications for more details.</p>
 <div class="refsect3">
 <a name="id-1.2.5.8.7.2.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html b/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html
index e879118..1bb831b 100644
--- a/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html
+++ b/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ATSC variants of MPEG-TS sections: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="mpegts.html" title="Mpeg TS helper library">
 <link rel="prev" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -101,7 +101,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -172,7 +172,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.5.6.7.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -200,7 +200,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.5.6.7.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -228,7 +228,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.6.7.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -263,7 +263,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.6.7.6.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -291,7 +291,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.6.7.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -319,7 +319,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.6.7.8.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -354,7 +354,7 @@
 <p>see also: <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSectionTableID" title="enum GstMpegtsSectionTableID"><span class="type">GstMpegtsSectionTableID</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.5.6.8.2.6"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -478,7 +478,7 @@
 , can be used both for TVCT and CVCT tables</p>
 <div class="refsect3">
 <a name="id-1.2.5.6.8.3.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -584,7 +584,7 @@
   Cable Virtual Channel Table (A65)</p>
 <div class="refsect3">
 <a name="id-1.2.5.6.8.4.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -620,7 +620,7 @@
 <a name="GstMpegtsAtscMGTTableType"></a><h3>enum GstMpegtsAtscMGTTableType</h3>
 <div class="refsect3">
 <a name="id-1.2.5.6.8.5.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -666,7 +666,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.5.6.8.6.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -715,7 +715,7 @@
 <p>Master Guide Table (A65)</p>
 <div class="refsect3">
 <a name="id-1.2.5.6.8.7.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -756,7 +756,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.5.6.8.8.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -793,7 +793,7 @@
 <p>An ATSC EIT Event</p>
 <div class="refsect3">
 <a name="id-1.2.5.6.8.9.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -847,7 +847,7 @@
 <p>Event Information Table (ATSC)</p>
 <div class="refsect3">
 <a name="id-1.2.5.6.8.10.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -887,7 +887,7 @@
 <p>Extended Text Table (ATSC)</p>
 <div class="refsect3">
 <a name="id-1.2.5.6.8.11.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -936,7 +936,7 @@
 <p>System Time Table (A65)</p>
 <div class="refsect3">
 <a name="id-1.2.5.6.8.12.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html b/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html
index 3f3e64e..6511d48 100644
--- a/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html
+++ b/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Base MPEG-TS descriptors: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="mpegts.html" title="Mpeg TS helper library">
 <link rel="prev" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -116,7 +116,7 @@
 </div>
 <a name="GstMpegtsDescriptor"></a><div class="refsect1">
 <a name="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -186,7 +186,7 @@
 array of descriptors, iterate the <a href="https://developer.gnome.org/glib/unstable/glib-Arrays.html#GArray"><span class="type">GArray</span></a> manually.</p>
 <div class="refsect3">
 <a name="id-1.2.5.5.9.2.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -227,7 +227,7 @@
  will not be copied.</p>
 <div class="refsect3">
 <a name="id-1.2.5.5.9.3.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -268,7 +268,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.5.5.9.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -311,7 +311,7 @@
 <p>Return: <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a>, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on failure</p>
 <div class="refsect3">
 <a name="id-1.2.5.5.9.5.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -351,7 +351,7 @@
 ISO 639-1 language code from the returned ISO 639-2 one.</p>
 <div class="refsect3">
 <a name="id-1.2.5.5.9.6.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -391,7 +391,7 @@
 ISO 639-1 language code from the returned ISO 639-2 one.</p>
 <div class="refsect3">
 <a name="id-1.2.5.5.9.7.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -434,7 +434,7 @@
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.5.5.9.8.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -471,7 +471,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.5.9.10.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -511,7 +511,7 @@
 <p>Mpeg-TS descriptor (ISO/IEC 13818-1).</p>
 <div class="refsect3">
 <a name="id-1.2.5.5.10.2.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -555,7 +555,7 @@
 <p>Consult the relevant specifications for more details.</p>
 <div class="refsect3">
 <a name="id-1.2.5.5.10.3.6"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -844,7 +844,7 @@
 not yet identified from known specifications.</p>
 <div class="refsect3">
 <a name="id-1.2.5.5.10.4.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -880,7 +880,7 @@
 <a name="GstMpegtsIso639AudioType"></a><h3>enum GstMpegtsIso639AudioType</h3>
 <div class="refsect3">
 <a name="id-1.2.5.5.10.6.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-sections.html b/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-sections.html
index c7740c4..4ee4907 100644
--- a/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-sections.html
+++ b/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-sections.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Base MPEG-TS sections: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="mpegts.html" title="Mpeg TS helper library">
 <link rel="prev" href="gst-plugins-bad-libs-Mpeg-ts-helper-library.html" title="Mpeg-ts helper library">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-Base-MPEG-TS-sections.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -190,7 +190,7 @@
 </div>
 <a name="GstMpegtsSection"></a><div class="refsect1">
 <a name="gst-plugins-bad-libs-Base-MPEG-TS-sections.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -264,7 +264,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.9.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -299,7 +299,7 @@
 <p>Returns the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> contained in a message.</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.9.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -330,7 +330,7 @@
  <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.9.5.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -364,7 +364,7 @@
  <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstEvent.html"><span class="type">GstEvent</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.5.4.9.6.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -394,7 +394,7 @@
 immediately. Otherwise, the data field is allocated and populated.</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.9.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -438,7 +438,7 @@
 to the beginning of the section.</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.9.8.7"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -496,7 +496,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.9.11.7"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -551,7 +551,7 @@
  array of <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram"><span class="type">GstMpegtsPatPrograms</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.5.4.9.14.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -586,7 +586,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.9.15.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -640,7 +640,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.5.4.9.18.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -674,7 +674,7 @@
 <p>Returns the array of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> contained in the section</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.9.19.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -704,7 +704,7 @@
 Access Table.</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.9.20.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -750,7 +750,7 @@
 <p>Mpeg-TS Section Information (SI) (ISO/IEC 13818-1)</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.10.2.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -816,7 +816,7 @@
 <span class="type">GstMpegtsSectionSCTETableID</span></p>
 <div class="refsect3">
 <a name="id-1.2.5.4.10.3.6"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -908,7 +908,7 @@
 <p>Types of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> that the library handles.</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.10.4.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1049,7 +1049,7 @@
 <p>A program entry from a Program Association Table (ITU H.222.0, ISO/IEC 13818-1).</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.10.5.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -1086,7 +1086,7 @@
 container <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.10.6.6"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -1130,7 +1130,7 @@
 <p>An individual stream definition.</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.10.7.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -1167,7 +1167,7 @@
 <p>Corresponds to table 2-34 of ITU H.222.0 | ISO/IEC 13818-1</p>
 <div class="refsect3">
 <a name="id-1.2.5.4.10.8.6"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html b/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html
index edeca4b..12009b4 100644
--- a/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html
+++ b/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>DVB variants of MPEG-TS descriptors: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="mpegts.html" title="Mpeg TS helper library">
 <link rel="prev" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html" title="ATSC variants of MPEG-TS descriptors">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -370,7 +370,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -554,7 +554,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -597,7 +597,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -640,7 +640,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.6.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -676,7 +676,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -712,7 +712,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.8.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -748,7 +748,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.9.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -791,7 +791,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.11.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -829,7 +829,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.12.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -875,7 +875,7 @@
 :</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.13.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -912,7 +912,7 @@
 will be allocated, and transferred to the caller.</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.14.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -944,7 +944,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.15.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -992,7 +992,7 @@
 and transferred to the caller.</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.16.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1039,7 +1039,7 @@
 . The language is in ISO639 format.</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.17.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1094,7 +1094,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.18.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1129,7 +1129,7 @@
 ISO 639-1 language code from the returned ISO 639-2 one.</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.19.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1182,7 +1182,7 @@
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.20.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1212,7 +1212,7 @@
                                 <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint16"><span class="type">guint16</span></a> ancillary</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.21.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1258,7 +1258,7 @@
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> *desc</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.23.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1284,7 +1284,7 @@
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> *desc</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.24.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1310,7 +1310,7 @@
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> *desc</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.25.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1340,7 +1340,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.26.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1378,7 +1378,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.27.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1426,7 +1426,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.28.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1475,7 +1475,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.30.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1511,7 +1511,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.31.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1553,7 +1553,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.32.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1599,7 +1599,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.33.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1635,7 +1635,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.34.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1671,7 +1671,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.35.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1709,7 +1709,7 @@
 :</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.36.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1745,7 +1745,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.37.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1781,7 +1781,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.38.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1810,7 +1810,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.39.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1847,7 +1847,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.40.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1884,7 +1884,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.41.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1922,7 +1922,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.8.42.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1964,7 +1964,7 @@
 <p>Consult the relevant specifications for more details.</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.2.6"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -2304,7 +2304,7 @@
 <p>Consult the relevant specifications for more details.</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.3.6"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -2455,7 +2455,7 @@
 <p>Extended Event Descriptor (EN 300 468 v.1.13.1)</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.7.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -2511,7 +2511,7 @@
 <p>Satellite Delivery System Descriptor (EN 300 468 v.1.13.1)</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.8.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -2573,7 +2573,7 @@
 <a name="GstMpegtsDVBCodeRate"></a><h3>enum GstMpegtsDVBCodeRate</h3>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.9.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -2654,7 +2654,7 @@
 <a name="GstMpegtsModulationType"></a><h3>enum GstMpegtsModulationType</h3>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.10.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -2745,7 +2745,7 @@
 <a name="GstMpegtsSatellitePolarizationType"></a><h3>enum GstMpegtsSatellitePolarizationType</h3>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.11.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -2781,7 +2781,7 @@
 <a name="GstMpegtsSatelliteRolloff"></a><h3>enum GstMpegtsSatelliteRolloff</h3>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.12.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -2832,7 +2832,7 @@
 <p>Cable Delivery System Descriptor (EN 300 468 v.1.13.1)</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.13.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -2873,7 +2873,7 @@
 <a name="GstMpegtsCableOuterFECScheme"></a><h3>enum GstMpegtsCableOuterFECScheme</h3>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.14.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -2920,7 +2920,7 @@
 <p>Terrestrial Delivery System Descriptor (EN 300 468 v.1.13.1)</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.15.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -2996,7 +2996,7 @@
 <a name="GstMpegtsTerrestrialTransmissionMode"></a><h3>enum GstMpegtsTerrestrialTransmissionMode</h3>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.16.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -3057,7 +3057,7 @@
 <a name="GstMpegtsTerrestrialGuardInterval"></a><h3>enum GstMpegtsTerrestrialGuardInterval</h3>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.17.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -3128,7 +3128,7 @@
 <a name="GstMpegtsTerrestrialHierarchy"></a><h3>enum GstMpegtsTerrestrialHierarchy</h3>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.18.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -3174,7 +3174,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.19.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -3206,7 +3206,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.20.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -3251,7 +3251,7 @@
 <p>describe DVB-T2 transmissions according to EN 302 755</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.21.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -3314,7 +3314,7 @@
 <p>As specified in Table 87 of ETSI EN 300 468 v1.13.1</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.22.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -3472,7 +3472,7 @@
 <p>As specified in Table 100 of ETSI EN 300 468 v1.13.1</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.23.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -3514,7 +3514,7 @@
 <p>Linkage Type (EN 300 468 v.1.13.1)</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.24.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -3605,7 +3605,7 @@
 <a name="GstMpegtsDVBLinkageHandOverType"></a><h3>enum GstMpegtsDVBLinkageHandOverType</h3>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.25.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -3694,7 +3694,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.29.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -3749,7 +3749,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.30.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -3796,7 +3796,7 @@
 <a name="GstMpegtsDVBScramblingModeType"></a><h3>enum GstMpegtsDVBScramblingModeType</h3>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.31.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -3871,7 +3871,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.33.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -3903,7 +3903,7 @@
 <p>a multilingual network name entry</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.34.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -3935,7 +3935,7 @@
 <p>a multilingual bouquet name entry</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.35.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -3968,7 +3968,7 @@
 <p>a multilingual service name entry</p>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.36.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -4004,7 +4004,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.5.9.9.37.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html b/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html
index 60cfa7d..add57a5 100644
--- a/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html
+++ b/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>DVB variants of MPEG-TS sections: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="mpegts.html" title="Mpeg TS helper library">
 <link rel="prev" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -136,7 +136,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -213,7 +213,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.7.8.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -266,7 +266,7 @@
  is managed by the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.5.7.8.5.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -294,7 +294,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.7.8.6.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -322,7 +322,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.7.8.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -375,7 +375,7 @@
  is managed by the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.5.7.8.10.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -403,7 +403,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.7.8.11.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -430,7 +430,7 @@
 <p>Returns the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstDateTime.html"><span class="type">GstDateTime</span></a> of the TDT</p>
 <div class="refsect3">
 <a name="id-1.2.5.7.8.12.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -458,7 +458,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.5.7.8.13.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -487,7 +487,7 @@
 <p>see also: <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSectionTableID" title="enum GstMpegtsSectionTableID"><span class="type">GstMpegtsSectionTableID</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.5.7.9.2.6"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -703,7 +703,7 @@
 <p>Network Information Table (ISO/IEC 13818-1 / EN 300 468)</p>
 <div class="refsect3">
 <a name="id-1.2.5.7.9.3.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -746,7 +746,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.5.7.9.4.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -784,7 +784,7 @@
 <p>DVB Bouquet Association Table (EN 300 468)</p>
 <div class="refsect3">
 <a name="id-1.2.5.7.9.5.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -830,7 +830,7 @@
 <p>Service Description Table (EN 300 468)</p>
 <div class="refsect3">
 <a name="id-1.2.5.7.9.7.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -877,7 +877,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.5.7.9.8.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -936,7 +936,7 @@
 <p>Event Information Table (EN 300 468)</p>
 <div class="refsect3">
 <a name="id-1.2.5.7.9.9.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -1001,7 +1001,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.5.7.9.10.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -1049,7 +1049,7 @@
 <p>Corresponds to table 6 of ETSI EN 300 468 (v1.13.0)</p>
 <div class="refsect3">
 <a name="id-1.2.5.7.9.11.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1102,7 +1102,7 @@
 <p>Time Offset Table (EN 300 468)</p>
 <div class="refsect3">
 <a name="id-1.2.5.7.9.12.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstAggregator.html b/docs/libs/html/gst-plugins-bad-libs-GstAggregator.html
index 8c13670..c27b39c 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstAggregator.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstAggregator.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstAggregator: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="base.html" title="GStreamer Base classes from gst-plugins-bad">
 <link rel="prev" href="base.html" title="GStreamer Base classes from gst-plugins-bad">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstAggregator.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -77,7 +77,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstAggregator.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -145,7 +145,7 @@
 sent before pushing the buffer.</p>
 <div class="refsect3">
 <a name="id-1.2.7.2.6.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -175,7 +175,7 @@
 <p>Sets the caps to be used on the src pad.</p>
 <div class="refsect3">
 <a name="id-1.2.7.2.6.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -209,7 +209,7 @@
 sink pad.</p>
 <div class="refsect3">
 <a name="id-1.2.7.2.6.4.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -248,7 +248,7 @@
 <p>Typically only called by subclasses.</p>
 <div class="refsect3">
 <a name="id-1.2.7.2.6.5.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -283,7 +283,7 @@
 <p>Aggregator base class object structure.</p>
 <div class="refsect3">
 <a name="id-1.2.7.2.7.2.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -369,7 +369,7 @@
 _finish_buffer from inside that function.</p>
 <div class="refsect3">
 <a name="id-1.2.7.2.7.3.7"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstAggregatorPad.html b/docs/libs/html/gst-plugins-bad-libs-GstAggregatorPad.html
index 11dcb33..59fe84a 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstAggregatorPad.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstAggregatorPad.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstAggregatorPad: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="base.html" title="GStreamer Base classes from gst-plugins-bad">
 <link rel="prev" href="gst-plugins-bad-libs-GstAggregator.html" title="GstAggregator">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstAggregatorPad.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -76,7 +76,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstAggregatorPad.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -106,7 +106,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.7.3.6.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -134,7 +134,7 @@
 gst_aggregator_pad_get_buffer (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad" title="struct GstAggregatorPad"><span class="type">GstAggregatorPad</span></a> *pad</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.7.3.6.3.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -165,7 +165,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.7.3.6.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -212,7 +212,7 @@
 <p>The implementation the GstPad to use with <a class="link" href="gst-plugins-bad-libs-GstAggregator.html#GstAggregator" title="struct GstAggregator"><span class="type">GstAggregator</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.7.3.7.2.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -259,7 +259,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.7.3.7.3.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstEGLImageMemory.html b/docs/libs/html/gst-plugins-bad-libs-GstEGLImageMemory.html
index 4e2e23b..44272b8 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstEGLImageMemory.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstEGLImageMemory.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstEGLImageMemory: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="GstGLDisplay.html" title="GstGLDisplay">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstEGLImageMemory.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -100,7 +100,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstEGLImageMemory.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLAPI.html b/docs/libs/html/gst-plugins-bad-libs-GstGLAPI.html
index 4035ec5..80fb6eb 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLAPI.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLAPI.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLAPI: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gl.html" title="OpenGL Helper Library">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLAPI.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -84,7 +84,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLAPI.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -128,7 +128,7 @@
 gst_gl_api_to_string (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="type">GstGLAPI</span></a> api</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.2.6.2.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -154,7 +154,7 @@
 gst_gl_api_from_string (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *api_s</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.2.6.3.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -180,7 +180,7 @@
 gst_gl_platform_to_string (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLPlatform" title="enum GstGLPlatform"><span class="type">GstGLPlatform</span></a> api</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.2.6.4.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -206,7 +206,7 @@
 gst_gl_platform_from_string (<em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *platform_s</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.2.6.5.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -239,7 +239,7 @@
 <a name="GstGLAPI"></a><h3>enum GstGLAPI</h3>
 <div class="refsect3">
 <a name="id-1.2.9.2.7.2.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -285,7 +285,7 @@
 <a name="GstGLPlatform"></a><h3>enum GstGLPlatform</h3>
 <div class="refsect3">
 <a name="id-1.2.9.2.7.3.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLContextCocoa.html b/docs/libs/html/gst-plugins-bad-libs-GstGLContextCocoa.html
index 49fc8fe..0f93ee1 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLContextCocoa.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLContextCocoa.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLContextCocoa: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="GstGLContext.html" title="GstGLContext">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLContextCocoa.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -68,7 +68,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLContextCocoa.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLContextEGL.html b/docs/libs/html/gst-plugins-bad-libs-GstGLContextEGL.html
index 5736e8e..989d4e4 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLContextEGL.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLContextEGL.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLContextEGL: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-GstGLContextCocoa.html" title="GstGLContextCocoa">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLContextEGL.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -68,7 +68,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLContextEGL.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -118,6 +118,8 @@
 
   GstGLAPI gl_api;
 
+  const gchar *egl_exts;
+
   EGLImageKHR (*eglCreateImage) (EGLDisplay dpy, EGLContext ctx, EGLenum target,
       EGLClientBuffer buffer, const EGLint *attrib_list);
   EGLBoolean (*eglDestroyImage) (EGLDisplay dpy, EGLImageKHR image);
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLContextEagl.html b/docs/libs/html/gst-plugins-bad-libs-GstGLContextEagl.html
index 137dded..04fc3cc 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLContextEagl.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLContextEagl.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLContextEagl: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-GstGLContextEGL.html" title="GstGLContextEGL">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLContextEagl.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -60,7 +60,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLContextEagl.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLContextGLX.html b/docs/libs/html/gst-plugins-bad-libs-GstGLContextGLX.html
index 807561a..427b47f 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLContextGLX.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLContextGLX.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLContextGLX: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-GstGLContextEagl.html" title="GstGLContextEagl">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLContextGLX.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -68,7 +68,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLContextGLX.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLContextWGL.html b/docs/libs/html/gst-plugins-bad-libs-GstGLContextWGL.html
index 0af2373..6a32503 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLContextWGL.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLContextWGL.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLContextWGL: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-GstGLContextGLX.html" title="GstGLContextGLX">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLContextWGL.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -68,7 +68,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLContextWGL.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLSyncMeta.html b/docs/libs/html/gst-plugins-bad-libs-GstGLSyncMeta.html
index 624b9d5..84ee24b 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLSyncMeta.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLSyncMeta.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLSyncMeta: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-gstglshader.html" title="GstGLShader">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLSyncMeta.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -89,7 +89,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLSyncMeta.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -165,6 +165,8 @@
   void (*set_sync_gl) (GstGLSyncMeta * sync, GstGLContext * context);
   void (*wait) (GstGLSyncMeta * sync, GstGLContext * context);
   void (*wait_gl) (GstGLSyncMeta * sync, GstGLContext * context);
+  void (*wait_cpu) (GstGLSyncMeta * sync, GstGLContext * context);
+  void (*wait_cpu_gl) (GstGLSyncMeta * sync, GstGLContext * context);
   void (*copy) (GstGLSyncMeta * src, GstBuffer * sbuffer, GstGLSyncMeta * dest, GstBuffer * dbuffer);
   void (*free) (GstGLSyncMeta * sync, GstGLContext * context);
   void (*free_gl) (GstGLSyncMeta * sync, GstGLContext * context);
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowAndroid.html b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowAndroid.html
index 0a8592b..23e4a91 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowAndroid.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowAndroid.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLWindowAndroid: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="GstGLWindow.html" title="GstGLWindow">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLWindowAndroid.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -50,7 +50,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLWindowAndroid.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowCocoa.html b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowCocoa.html
index b1e2e83..1b94a61 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowCocoa.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowCocoa.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLWindowCocoa: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-GstGLWindowAndroid.html" title="GstGLWindowAndroid">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLWindowCocoa.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -60,7 +60,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLWindowCocoa.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowDispmanx.html b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowDispmanx.html
index 1240617..57e0398 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowDispmanx.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowDispmanx.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLWindowDispmanx: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-GstGLWindowCocoa.html" title="GstGLWindowCocoa">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLWindowDispmanx.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -50,7 +50,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLWindowDispmanx.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowWayland.html b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowWayland.html
index 7b0935c..3e8a549 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowWayland.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowWayland.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLWindowWayland: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-GstGLWindowDispmanx.html" title="GstGLWindowDispmanx">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLWindowWayland.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -50,7 +50,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLWindowWayland.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowWin32.html b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowWin32.html
index ecaa029..bc5a710 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowWin32.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowWin32.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLWindowWin32: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-GstGLWindowWayland.html" title="GstGLWindowWayland">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLWindowWin32.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -60,7 +60,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLWindowWin32.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowX11.html b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowX11.html
index ed38254..d282f13 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowX11.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowX11.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLWindowX11: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-GstGLWindowWin32.html" title="GstGLWindowWin32">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLWindowX11.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -76,7 +76,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstGLWindowX11.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstInsertbin.html b/docs/libs/html/gst-plugins-bad-libs-GstInsertbin.html
index 6c0fb9c..0859be6 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstInsertbin.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstInsertbin.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstInsertbin: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="tools.html" title="Useful elements">
 <link rel="prev" href="tools.html" title="Useful elements">
@@ -36,7 +36,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstInsertbin.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -103,7 +103,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstInsertbin.signals"></a><h2>Signals</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="signals_return">
 <col width="300px" class="signals_name">
@@ -140,7 +140,7 @@
 </div>
 <a name="GstInsertBin"></a><div class="refsect1">
 <a name="gst-plugins-bad-libs-GstInsertbin.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -200,7 +200,7 @@
 operation is requested.</p>
 <div class="refsect3">
 <a name="id-1.2.6.2.10.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -239,7 +239,7 @@
 <p>Creates a new <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.6.2.10.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -271,7 +271,7 @@
 <p>Same as the <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin-append" title="The “append” signal"><span class="type">“append”</span></a> signal.</p>
 <div class="refsect3">
 <a name="id-1.2.6.2.10.4.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -312,7 +312,7 @@
 <p>Same as the <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin-prepend" title="The “prepend” signal"><span class="type">“prepend”</span></a> signal.</p>
 <div class="refsect3">
 <a name="id-1.2.6.2.10.5.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -355,7 +355,7 @@
 <p>Same as the <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin-insert-after" title="The “insert-after” signal"><span class="type">“insert-after”</span></a> signal.</p>
 <div class="refsect3">
 <a name="id-1.2.6.2.10.6.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -404,7 +404,7 @@
 <p>Same as the <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin-insert-before" title="The “insert-before” signal"><span class="type">“insert-before”</span></a> signal.</p>
 <div class="refsect3">
 <a name="id-1.2.6.2.10.7.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -450,7 +450,7 @@
 <p>Same as the <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin-remove" title="The “remove” signal"><span class="type">“remove”</span></a> signal.</p>
 <div class="refsect3">
 <a name="id-1.2.6.2.10.8.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -511,7 +511,7 @@
 <p>Same as <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-append" title="gst_insert_bin_append ()"><code class="function">gst_insert_bin_append()</code></a></p>
 <div class="refsect3">
 <a name="id-1.2.6.2.12.2.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -566,7 +566,7 @@
 <p>Same as <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-insert-after" title="gst_insert_bin_insert_after ()"><code class="function">gst_insert_bin_insert_after()</code></a></p>
 <div class="refsect3">
 <a name="id-1.2.6.2.12.3.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -626,7 +626,7 @@
 <p>Same as <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-insert-before" title="gst_insert_bin_insert_before ()"><code class="function">gst_insert_bin_insert_before()</code></a></p>
 <div class="refsect3">
 <a name="id-1.2.6.2.12.4.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -684,7 +684,7 @@
 <p>Same as <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-prepend" title="gst_insert_bin_prepend ()"><code class="function">gst_insert_bin_prepend()</code></a></p>
 <div class="refsect3">
 <a name="id-1.2.6.2.12.5.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -735,7 +735,7 @@
 <p>Same as <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-remove" title="gst_insert_bin_remove ()"><code class="function">gst_insert_bin_remove()</code></a></p>
 <div class="refsect3">
 <a name="id-1.2.6.2.12.6.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstPhotography.html b/docs/libs/html/gst-plugins-bad-libs-GstPhotography.html
index e35ef86..f138273 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstPhotography.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstPhotography.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstPhotography: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="ch08.html" title="Interfaces">
 <link rel="prev" href="ch08.html" title="Interfaces">
@@ -50,7 +50,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstPhotography.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -301,7 +301,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstPhotography.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -444,7 +444,7 @@
 to e.g. reconfigure capsfilters in pipeline if any.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -475,7 +475,7 @@
 <p>Get the ev compensation value for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -509,7 +509,7 @@
 <p>Get the ISO value (light sensivity) for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -543,7 +543,7 @@
 <p>Get the aperture value for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.5.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -577,7 +577,7 @@
 <p>Get the fixed exposure time (in us) for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.6.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -612,7 +612,7 @@
 <p>Get the white balance mode for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -646,7 +646,7 @@
 <p>Get the color tone mode for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.8.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -680,7 +680,7 @@
 <p>Get the scene mode for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.9.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -714,7 +714,7 @@
 <p>Get the flash mode for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.10.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -748,7 +748,7 @@
 <p>Get the flicker mode value for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.11.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -782,7 +782,7 @@
 <p>Get the focus mode value for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.12.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -816,7 +816,7 @@
 <p>Get the noise reduction mode for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.13.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -840,7 +840,6 @@
 <a name="id-1.2.11.2.7.13.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if getting the value succeeded, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
 </div>
-<p class="since">Since: 0.10.21</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -851,7 +850,7 @@
 <p>Get the zoom value for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.14.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -885,7 +884,7 @@
 <p>Set the ev compensation value for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.15.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -919,7 +918,7 @@
 <p>Set the ISO value (light sensivity) for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.16.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -953,7 +952,7 @@
 <p>Set the aperture value for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.17.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -987,7 +986,7 @@
 <p>Set the fixed exposure time (in us) for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.18.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1022,7 +1021,7 @@
 <p>Set the white balance mode for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.19.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1056,7 +1055,7 @@
 <p>Set the color tone mode for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.20.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1090,7 +1089,7 @@
 <p>Set the scene mode for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.21.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1124,7 +1123,7 @@
 <p>Set the flash mode for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.22.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1158,7 +1157,7 @@
 <p>Set the flicker mode value for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.23.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1192,7 +1191,7 @@
 <p>Set the focus mode value for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.24.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1226,7 +1225,7 @@
 <p>Set the noise reduction mode for the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a></p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.25.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1250,7 +1249,6 @@
 <a name="id-1.2.11.2.7.25.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if setting the value succeeded, <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
 </div>
-<p class="since">Since: 0.10.21</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1262,7 +1260,7 @@
 E.g. 1.0 to get original image and 3.0 for 3x zoom and so on.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.26.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1296,7 +1294,7 @@
 interface features the <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="type">GstElement</span></a> supports</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.27.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1328,7 +1326,7 @@
 done. Image capture will begin after callback returns.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.28.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1374,7 +1372,7 @@
 message is posted to bus when autofocusing has finished.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.29.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1404,7 +1402,7 @@
 <p>Set all configuration settings at once.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.30.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1438,7 +1436,7 @@
 <p>Get all configuration settings at once.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.7.31.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1477,7 +1475,7 @@
 <p>Noise Reduction features of a photography capture or filter element.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.8.3.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1529,7 +1527,6 @@
 </tbody>
 </table></div>
 </div>
-<p class="since">Since: 0.10.21</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -1537,7 +1534,7 @@
 <p>Modes for white balance control.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.8.4.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1618,7 +1615,7 @@
 <p>Modes for special color effects.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.8.5.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1748,7 +1745,7 @@
 good capturing result in certain scene.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.8.6.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1897,7 +1894,7 @@
 <p>Modes for flash control.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.8.7.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1951,7 +1948,7 @@
 <p>Reduce flicker in video caused by light source fluctuation.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.8.8.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1996,7 +1993,7 @@
 <p>Choose mode for focusing algorithm.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.8.9.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -2081,7 +2078,7 @@
 message.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.8.10.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -2127,7 +2124,7 @@
 supports.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.8.11.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -2225,7 +2222,7 @@
 too long exposure time. Used in <a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GST-PHOTOGRAPHY-SHAKE-RISK:CAPS" title="GST_PHOTOGRAPHY_SHAKE_RISK"><span class="type">GST_PHOTOGRAPHY_SHAKE_RISK</span></a> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMessage.html"><span class="type">GstMessage</span></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.11.2.8.12.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregator.html b/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregator.html
index c8ed5f7..6918daf 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregator.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregator.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstVideoAggregator: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="video.html" title="Video helpers and baseclasses">
 <link rel="prev" href="video.html" title="Video helpers and baseclasses">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstVideoAggregator.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -77,7 +77,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.8.2.6.2.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -104,6 +104,9 @@
 <a name="GstVideoAggregatorClass"></a><h3>struct GstVideoAggregatorClass</h3>
 <pre class="programlisting">struct GstVideoAggregatorClass {
   GstCaps *          (*update_caps)               (GstVideoAggregator *  videoaggregator,
+                                                   GstCaps            *  caps,
+                                                   GstCaps            *  filter_caps);
+  GstCaps *          (*fixate_caps)               (GstVideoAggregator *  videoaggregator,
                                                    GstCaps            *  caps);
   GstFlowReturn      (*aggregate_frames)          (GstVideoAggregator *  videoaggregator,
                                                    GstBuffer          *  outbuffer);
@@ -116,14 +119,12 @@
                                                    GstVideoInfo       *  best_info,
                                                    gboolean           *  at_least_one_alpha);
 
-  gboolean           preserve_update_caps_result;
-
   GstCaps           *sink_non_alpha_caps;
 };
 </pre>
 <div class="refsect3">
 <a name="id-1.2.8.2.6.3.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -138,6 +139,16 @@
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoAggregatorClass.fixate-caps"></a>fixate_caps</code></em> ()</p></td>
+<td class="struct_member_description"><p>Fixate and return the src pad caps provided.  The function takes
+ownership of <em class="parameter"><code>caps</code></em>
+and returns a fixated version of
+<em class="parameter"><code>caps</code></em>
+. <em class="parameter"><code>caps</code></em>
+is not guaranteed to be writable.</p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+<tr>
 <td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoAggregatorClass.aggregate-frames"></a>aggregate_frames</code></em> ()</p></td>
 <td class="struct_member_description"><p>Lets subclasses aggregate frames that are ready. Subclasses
 should iterate the GstElement.sinkpads and use the already
@@ -169,13 +180,6 @@
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
-<td class="struct_member_name"><p><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstVideoAggregatorClass.preserve-update-caps-result"></a>preserve_update_caps_result</code></em>;</p></td>
-<td class="struct_member_description"><p>Sub-classes should set this to true if the return result
-of the <code class="function">update_caps()</code> method should not be further modified
-by GstVideoAggregator by removing fields.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
 <td class="struct_member_name"><p><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstCaps.html"><span class="type">GstCaps</span></a> *<em class="structfield"><code><a name="GstVideoAggregatorClass.sink-non-alpha-caps"></a>sink_non_alpha_caps</code></em>;</p></td>
 <td> </td>
 <td> </td>
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregatorPad.html b/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregatorPad.html
index fabcaec..5a4b3ef 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregatorPad.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregatorPad.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstVideoAggregatorPad: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="video.html" title="Video helpers and baseclasses">
 <link rel="prev" href="gst-plugins-bad-libs-GstVideoAggregator.html" title="GstVideoAggregator">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-GstVideoAggregatorPad.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -84,7 +84,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.8.3.6.2.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html b/docs/libs/html/gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html
index 2e0bfae..6cf4c6a 100644
--- a/docs/libs/html/gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html
+++ b/docs/libs/html/gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ISDB variants of MPEG-TS descriptors: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="mpegts.html" title="Mpeg TS helper library">
 <link rel="prev" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -65,7 +65,7 @@
 <p>Consult the relevant specifications for more details.</p>
 <div class="refsect3">
 <a name="id-1.2.5.10.7.2.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-Mpeg-ts-helper-library.html b/docs/libs/html/gst-plugins-bad-libs-Mpeg-ts-helper-library.html
index f96b8b9..b54a2d1 100644
--- a/docs/libs/html/gst-plugins-bad-libs-Mpeg-ts-helper-library.html
+++ b/docs/libs/html/gst-plugins-bad-libs-Mpeg-ts-helper-library.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Mpeg-ts helper library: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="mpegts.html" title="Mpeg TS helper library">
 <link rel="prev" href="mpegts.html" title="Mpeg TS helper library">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-Mpeg-ts-helper-library.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
diff --git a/docs/libs/html/gst-plugins-bad-libs-Utilities.html b/docs/libs/html/gst-plugins-bad-libs-Utilities.html
index 934c372..53963c7 100644
--- a/docs/libs/html/gst-plugins-bad-libs-Utilities.html
+++ b/docs/libs/html/gst-plugins-bad-libs-Utilities.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Utilities: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="GstGLUpload.html" title="GstGLUpload">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-Utilities.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -212,7 +212,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-Utilities.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -238,7 +238,7 @@
 <p>callback definition for operating on textures</p>
 <div class="refsect3">
 <a name="id-1.2.9.20.6.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -277,7 +277,7 @@
 <p>callback definition for operating through a Framebuffer object</p>
 <div class="refsect3">
 <a name="id-1.2.9.20.6.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -302,7 +302,7 @@
 <p>client draw callback</p>
 <div class="refsect3">
 <a name="id-1.2.9.20.6.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -445,7 +445,7 @@
 <p>Note: must be called in the GL thread.</p>
 <div class="refsect3">
 <a name="id-1.2.9.20.6.17.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -509,7 +509,7 @@
 <a name="GstGLDisplayProjection"></a><h3>enum GstGLDisplayProjection</h3>
 <div class="refsect3">
 <a name="id-1.2.9.20.7.2.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstglmemory.html b/docs/libs/html/gst-plugins-bad-libs-gstglmemory.html
index de3d9e7..7b2f356 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstglmemory.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstglmemory.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLMemory: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="GstGLFramebuffer.html" title="GstGLFramebuffer">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstglmemory.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -82,7 +82,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstglmemory.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -97,8 +97,8 @@
 <a name="gst-plugins-bad-libs-gstglmemory.description"></a><h2>Description</h2>
 <p>GstGLMemory is a <span class="type">GstGLBaseBuffer</span> subclass providing support for the mapping of
 GL textures.  </p>
-<p><a class="link" href="gst-plugins-bad-libs-gstglmemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> is created through <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-gstglmemory.html#gst-gl-memory-alloc"><code class="function">gst_gl_memory_alloc()</code></a> or system memory can
-be wrapped through <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-gstglmemory.html#gst-gl-memory-wrapped"><code class="function">gst_gl_memory_wrapped()</code></a>.</p>
+<p><a class="link" href="gst-plugins-bad-libs-gstglmemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> is created through <code class="function">gst_gl_memory_alloc()</code> or system memory can
+be wrapped through <code class="function">gst_gl_memory_wrapped()</code>.</p>
 <p>Data is uploaded or downloaded from the GPU as is necessary.</p>
 </div>
 <div class="refsect1">
@@ -127,7 +127,7 @@
  with the required parameters</p>
 <div class="refsect3">
 <a name="id-1.2.9.16.6.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -189,7 +189,7 @@
                             <em class="parameter"><code><span class="type">GstGLVideoAllocationParams</span> *params</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.16.6.4.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -235,7 +235,7 @@
 gst_is_gl_memory (<em class="parameter"><code><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstMemory.html"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.16.6.6.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -251,7 +251,7 @@
 <div class="refsect3">
 <a name="id-1.2.9.16.6.6.5"></a><h4>Returns</h4>
 <p> whether the memory at <em class="parameter"><code>mem</code></em>
-is a <a class="link" href="gst-plugins-bad-libs-gstglmemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p>
+is a <span class="type">GstGLMemoryPBO</span></p>
 </div>
 </div>
 </div>
@@ -274,7 +274,7 @@
 <p>Represents information about a GL texture</p>
 <div class="refsect3">
 <a name="id-1.2.9.16.7.2.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstglshader.html b/docs/libs/html/gst-plugins-bad-libs-gstglshader.html
index f579896..cde60ab 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstglshader.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstglshader.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GstGLShader: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gl.html" title="OpenGL Helper Library">
 <link rel="prev" href="gst-plugins-bad-libs-gstglmemory.html" title="GstGLMemory">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstglshader.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -294,7 +294,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstglshader.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -309,7 +309,7 @@
 </div>
 <a name="GstGLShader"></a><div class="refsect1">
 <a name="gst-plugins-bad-libs-gstglshader.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -340,7 +340,7 @@
 <p>Note: must be called in the GL thread</p>
 <div class="refsect3">
 <a name="id-1.2.9.17.9.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -367,7 +367,7 @@
 gst_gl_shader_get_program_handle (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglshader.html#GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.9.17.9.3.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -394,7 +394,7 @@
 <p>Note: must be called in the GL thread</p>
 <div class="refsect3">
 <a name="id-1.2.9.17.9.4.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -419,7 +419,7 @@
  must have been linked.</p>
 <div class="refsect3">
 <a name="id-1.2.9.17.9.5.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstmpegvideometa.html b/docs/libs/html/gst-plugins-bad-libs-gstmpegvideometa.html
index 4c1edfd..0c6bc90 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstmpegvideometa.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstmpegvideometa.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>gstmpegvideometa: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="codecparsers.html" title="Bitstream parsing Library">
 <link rel="prev" href="gst-plugins-bad-libs-vc1parser.html" title="vc1parser">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstmpegvideometa.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -73,7 +73,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstmpegvideometa.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -121,7 +121,7 @@
 <p>Provided structures must either be <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> or GSlice-allocated.</p>
 <div class="refsect3">
 <a name="id-1.2.4.8.7.4.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -179,7 +179,7 @@
 If elements wish to use those for longer, they are required to make a copy.</p>
 <div class="refsect3">
 <a name="id-1.2.4.8.8.2.7"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html
index caf3ffa..1c293aa 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>gstplayer-gmaincontextsignaldispatcher: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="player.html" title="Player Library">
 <link rel="prev" href="gst-plugins-bad-libs-gstplayer-mediainfo.html" title="gstplayer-mediainfo">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -60,10 +60,10 @@
                                (<em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-The-Main-Event-Loop.html#GMainContext"><span class="type">GMainContext</span></a> *application_context</code></em>);</pre>
 <p>Creates a new GstPlayerSignalDispatcher that uses <em class="parameter"><code>application_context</code></em>
 ,
-or the thread default one if <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> is used. See <a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-new-full" title="gst_player_new_full ()"><code class="function">gst_player_new_full()</code></a>.</p>
+or the thread default one if <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> is used. See <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-gstplayer.html#gst-player-new-full"><code class="function">gst_player_new_full()</code></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.10.4.5.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer-mediainfo.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer-mediainfo.html
index f69807f..b370149 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer-mediainfo.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer-mediainfo.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>gstplayer-mediainfo: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="player.html" title="Player Library">
 <link rel="prev" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstplayer-mediainfo.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -238,7 +238,7 @@
 </div>
 <a name="GstPlayerMediaInfo"></a><a name="GstPlayerStreamInfo"></a><a name="GstPlayerAudioInfo"></a><a name="GstPlayerVideoInfo"></a><a name="GstPlayerSubtitleInfo"></a><div class="refsect1">
 <a name="gst-plugins-bad-libs-gstplayer-mediainfo.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -288,7 +288,7 @@
 gst_player_media_info_get_uri (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.2.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -313,7 +313,7 @@
 gst_player_media_info_get_duration (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.3.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -338,7 +338,7 @@
 gst_player_media_info_get_title (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.4.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -364,7 +364,7 @@
                                (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.5.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -389,7 +389,7 @@
 gst_player_media_info_is_seekable (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.6.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -417,7 +417,7 @@
 Application can use gst_sample_*_() API's to get caps, buffer etc.</p>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -443,7 +443,7 @@
 gst_player_media_info_get_tags (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.8.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -469,7 +469,7 @@
 gst_player_media_info_get_stream_list (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.9.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -497,7 +497,7 @@
 <p>Function to get stream index from <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a> instance.</p>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.10.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -522,7 +522,7 @@
 gst_player_stream_info_get_caps (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.11.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -548,7 +548,7 @@
 gst_player_stream_info_get_tags (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.12.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -575,7 +575,7 @@
 <p>A string describing codec used in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.13.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -604,7 +604,7 @@
  (ex: "audio", "video", "subtitle")</p>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.14.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -629,7 +629,7 @@
 gst_player_audio_info_get_bitrate (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.15.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -654,7 +654,7 @@
 gst_player_audio_info_get_channels (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.16.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -679,7 +679,7 @@
 gst_player_audio_info_get_language (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.17.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -704,7 +704,7 @@
 gst_player_audio_info_get_max_bitrate (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.18.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -729,7 +729,7 @@
 gst_player_audio_info_get_sample_rate (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.19.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -754,7 +754,7 @@
 gst_player_video_info_get_bitrate (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.20.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -779,7 +779,7 @@
 gst_player_video_info_get_height (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.21.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -804,7 +804,7 @@
 gst_player_video_info_get_width (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.22.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -837,7 +837,7 @@
 gst_player_video_info_get_max_bitrate (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.24.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -868,7 +868,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.25.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -901,7 +901,7 @@
 gst_player_subtitle_info_get_language (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerSubtitleInfo"><span class="type">GstPlayerSubtitleInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.3.12.26.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html
index 08e32ae..5d3cf5b 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>gstplayer-videooverlayvideorenderer: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="player.html" title="Player Library">
 <link rel="prev" href="gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html" title="gstplayer-gmaincontextsignaldispatcher">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -78,7 +78,7 @@
                                (<em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> window_handle</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.5.5.2.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -105,7 +105,7 @@
                                (<em class="parameter"><code><span class="type">GstPlayerVideoOverlayVideoRenderer</span> *self</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.5.5.3.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -136,7 +136,7 @@
 should be rendered</p>
 <div class="refsect3">
 <a name="id-1.2.10.5.5.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer-visualization.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer-visualization.html
index b6e3b0a..bf839ee 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer-visualization.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer-visualization.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>gstplayer-visualization: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="player.html" title="Player Library">
 <link rel="prev" href="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html" title="gstplayer-videooverlayvideorenderer">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstplayer-visualization.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -77,7 +77,7 @@
 </div>
 <a name="GstPlayerVisualization"></a><div class="refsect1">
 <a name="gst-plugins-bad-libs-gstplayer-visualization.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -119,7 +119,7 @@
 <p>Frees a <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> terminated array of <a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="type">GstPlayerVisualization</span></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.10.6.8.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -142,7 +142,7 @@
 freed using <a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#gst-player-visualization-free" title="gst_player_visualization_free ()"><code class="function">gst_player_visualization_free()</code></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.10.6.8.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -170,7 +170,7 @@
 <p>Frees a <a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="type">GstPlayerVisualization</span></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.10.6.8.5.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -197,7 +197,7 @@
 <p>A <a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="type">GstPlayerVisualization</span></a> descriptor.</p>
 <div class="refsect3">
 <a name="id-1.2.10.6.9.2.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
index c2d798d..8d116a1 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>gstplayer: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="player.html" title="Player Library">
 <link rel="prev" href="player.html" title="Player Library">
@@ -38,7 +38,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstplayer.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -54,14 +54,6 @@
 </tr>
 <tr>
 <td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="returnvalue">GstPlayer</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-new-full" title="gst_player_new_full ()">gst_player_new_full</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
@@ -394,7 +386,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstplayer.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -490,7 +482,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-gstplayer.signals"></a><h2>Signals</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="signals_return">
 <col width="300px" class="signals_name">
@@ -562,7 +554,7 @@
 </div>
 <a name="GstPlayer"></a><a name="GstPlayerSignalDispatcher"></a><a name="GstPlayerVideoRenderer"></a><div class="refsect1">
 <a name="gst-plugins-bad-libs-gstplayer.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -641,18 +633,8 @@
 <div class="refsect2">
 <a name="gst-player-new"></a><h3>gst_player_new ()</h3>
 <pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="returnvalue">GstPlayer</span></a> *
-gst_player_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<div class="refsect3">
-<a name="id-1.2.10.2.14.2.4"></a><h4>Returns</h4>
-<p> a new <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-player-new-full"></a><h3>gst_player_new_full ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="returnvalue">GstPlayer</span></a> *
-gst_player_new_full (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRenderer"><span class="type">GstPlayerVideoRenderer</span></a> *video_renderer</code></em>,
-                     <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerSignalDispatcher"><span class="type">GstPlayerSignalDispatcher</span></a> *signal_dispatcher</code></em>);</pre>
+gst_player_new (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRenderer"><span class="type">GstPlayerVideoRenderer</span></a> *video_renderer</code></em>,
+                <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerSignalDispatcher"><span class="type">GstPlayerSignalDispatcher</span></a> *signal_dispatcher</code></em>);</pre>
 <p>Creates a new <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance that uses <em class="parameter"><code>signal_dispatcher</code></em>
  to dispatch
 signals to some event loop system, or emits signals directly if NULL is
@@ -662,8 +644,8 @@
 no special video set up will be done and some default handling will be
 performed.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.3.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.2.6"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -684,7 +666,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.3.7"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.2.7"></a><h4>Returns</h4>
 <p> a new <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p>
 </div>
 </div>
@@ -695,8 +677,8 @@
 gst_player_play (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
 <p>Request to play the loaded stream.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.3.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -717,8 +699,8 @@
 gst_player_pause (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
 <p>Pauses the current stream.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.5.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.4.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -740,8 +722,8 @@
 <p>Stops playing the current stream and resets to the first position
 in the stream.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.6.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.5.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -765,8 +747,8 @@
  time
 in nanoseconds.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.6.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -795,8 +777,8 @@
                     <em class="parameter"><code>const <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *uri</code></em>);</pre>
 <p>Sets the next URI to play.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.8.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.7.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -824,8 +806,36 @@
 gst_player_get_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>);</pre>
 <p>Gets the URI of the currently-playing stream.</p>
 <div class="refsect3">
+<a name="id-1.2.10.2.14.8.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>player</p></td>
+<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.10.2.14.8.6"></a><h4>Returns</h4>
+<p> a string containing the URI of the
+currently-playing stream. <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-get-duration"></a><h3>gst_player_get_duration ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
+gst_player_get_duration (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
+<p>Retrieves the duration of the media stream that self represents.</p>
+<div class="refsect3">
 <a name="id-1.2.10.2.14.9.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -840,34 +850,6 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.10.2.14.9.6"></a><h4>Returns</h4>
-<p> a string containing the URI of the
-currently-playing stream. <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-player-get-duration"></a><h3>gst_player_get_duration ()</h3>
-<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
-gst_player_get_duration (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>Retrieves the duration of the media stream that self represents.</p>
-<div class="refsect3">
-<a name="id-1.2.10.2.14.10.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.10.2.14.10.6"></a><h4>Returns</h4>
 <p> the duration of the currently-playing media stream, in
 nanoseconds.</p>
 </div>
@@ -878,8 +860,8 @@
 <pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
 gst_player_get_position (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.11.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.10.4"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -893,7 +875,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.11.5"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.10.5"></a><h4>Returns</h4>
 <p> the absolute position time, in nanoseconds, of the
 currently-playing stream.</p>
 </div>
@@ -906,8 +888,8 @@
                        <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> val</code></em>);</pre>
 <p>Sets the volume level of the stream as a percentage between 0 and 1.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.12.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.11.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -936,8 +918,8 @@
                      <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> val</code></em>);</pre>
 <p><a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the currently-playing stream should be muted.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.13.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.12.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -965,8 +947,8 @@
 gst_player_get_volume (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
 <p>Returns the current volume level, as a percentage between 0 and 1.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.14.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.13.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -980,7 +962,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.14.6"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.13.6"></a><h4>Returns</h4>
 <p> the volume as percentage between 0 and 1.</p>
 </div>
 </div>
@@ -990,8 +972,33 @@
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_player_get_mute (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
 <div class="refsect3">
+<a name="id-1.2.10.2.14.14.4"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>player</p></td>
+<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.10.2.14.14.5"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the currently-playing stream is muted.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-get-pipeline"></a><h3>gst_player_get_pipeline ()</h3>
+<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="returnvalue">GstElement</span></a> *
+gst_player_get_pipeline (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
+<div class="refsect3">
 <a name="id-1.2.10.2.14.15.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1006,31 +1013,6 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.10.2.14.15.5"></a><h4>Returns</h4>
-<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the currently-playing stream is muted.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-player-get-pipeline"></a><h3>gst_player_get_pipeline ()</h3>
-<pre class="programlisting"><a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html"><span class="returnvalue">GstElement</span></a> *
-gst_player_get_pipeline (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<div class="refsect3">
-<a name="id-1.2.10.2.14.16.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.10.2.14.16.5"></a><h4>Returns</h4>
 <p> The internal playbin instance. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
@@ -1045,8 +1027,8 @@
 <p>Set interval in milliseconds between two position-updated signals.
 Pass 0 to stop updating the position.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.17.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.16.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1074,8 +1056,8 @@
 gst_player_get_position_update_interval
                                (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.18.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.17.4"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1089,7 +1071,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.18.5"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.17.5"></a><h4>Returns</h4>
 <p> current position update interval in milliseconds</p>
 </div>
 </div>
@@ -1100,8 +1082,8 @@
 gst_player_state_get_name (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerState" title="enum GstPlayerState"><span class="type">GstPlayerState</span></a> state</code></em>);</pre>
 <p>Gets a string representing the given state.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.19.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.18.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1115,7 +1097,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.19.6"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.18.6"></a><h4>Returns</h4>
 <p> a string with the name of the state. </p>
 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
 </div>
@@ -1133,8 +1115,8 @@
 gst_player_error_get_name (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerError" title="enum GstPlayerError"><span class="type">GstPlayerError</span></a> error</code></em>);</pre>
 <p>Gets a string representing the given error.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.21.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.20.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1148,7 +1130,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.21.6"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.20.6"></a><h4>Returns</h4>
 <p> a string with the given error. </p>
 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
 </div>
@@ -1160,8 +1142,8 @@
 gst_player_get_media_info (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
 <p>A Function to get the current media info <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> instance.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.22.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.21.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1175,7 +1157,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.22.6"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.21.6"></a><h4>Returns</h4>
 <p> media info instance.</p>
 <p>The caller should free it with <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -1187,8 +1169,35 @@
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
 gst_player_get_audio_streams (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
+<a name="id-1.2.10.2.14.22.4"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>info</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.10.2.14.22.5"></a><h4>Returns</h4>
+<p> A <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
+matching <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a>. </p>
+<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstPlayerAudioInfo]</span></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-get-video-streams"></a><h3>gst_player_get_video_streams ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
+gst_player_get_video_streams (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
+<div class="refsect3">
 <a name="id-1.2.10.2.14.23.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1204,18 +1213,18 @@
 <div class="refsect3">
 <a name="id-1.2.10.2.14.23.5"></a><h4>Returns</h4>
 <p> A <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
-matching <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a>. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstPlayerAudioInfo]</span></p>
+matching <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a>. </p>
+<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstPlayerVideoInfo]</span></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-player-get-video-streams"></a><h3>gst_player_get_video_streams ()</h3>
+<a name="gst-player-get-subtitle-streams"></a><h3>gst_player_get_subtitle_streams ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
-gst_player_get_video_streams (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
+gst_player_get_subtitle_streams (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.2.14.24.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1231,33 +1240,6 @@
 <div class="refsect3">
 <a name="id-1.2.10.2.14.24.5"></a><h4>Returns</h4>
 <p> A <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
-matching <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a>. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstPlayerVideoInfo]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-player-get-subtitle-streams"></a><h3>gst_player_get_subtitle_streams ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
-gst_player_get_subtitle_streams (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="id-1.2.10.2.14.25.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.10.2.14.25.5"></a><h4>Returns</h4>
-<p> A <a href="https://developer.gnome.org/glib/unstable/glib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
 matching <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerSubtitleInfo"><span class="type">GstPlayerSubtitleInfo</span></a>. </p>
 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstPlayerSubtitleInfo]</span></p>
 </div>
@@ -1269,8 +1251,43 @@
 gst_player_set_audio_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
                             <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> stream_index</code></em>);</pre>
 <div class="refsect3">
+<a name="id-1.2.10.2.14.25.4"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>player</p></td>
+<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>stream_index</p></td>
+<td class="parameter_description"><p>stream index</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.10.2.14.25.5"></a><h4>Returns</h4>
+<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
+<p>Sets the audio track <em class="parameter"><code>stream_idex</code></em>
+.</p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-set-video-track"></a><h3>gst_player_set_video_track ()</h3>
+<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_player_set_video_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
+                            <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> stream_index</code></em>);</pre>
+<div class="refsect3">
 <a name="id-1.2.10.2.14.26.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1293,19 +1310,19 @@
 <div class="refsect3">
 <a name="id-1.2.10.2.14.26.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p>Sets the audio track <em class="parameter"><code>stream_idex</code></em>
+<p>Sets the video track <em class="parameter"><code>stream_index</code></em>
 .</p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-player-set-video-track"></a><h3>gst_player_set_video_track ()</h3>
+<a name="gst-player-set-subtitle-track"></a><h3>gst_player_set_subtitle_track ()</h3>
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_player_set_video_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
-                            <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> stream_index</code></em>);</pre>
+gst_player_set_subtitle_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
+                               <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> stream_index</code></em>);</pre>
 <div class="refsect3">
 <a name="id-1.2.10.2.14.27.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1328,41 +1345,6 @@
 <div class="refsect3">
 <a name="id-1.2.10.2.14.27.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p>Sets the video track <em class="parameter"><code>stream_index</code></em>
-.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-player-set-subtitle-track"></a><h3>gst_player_set_subtitle_track ()</h3>
-<pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_player_set_subtitle_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
-                               <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gint"><span class="type">gint</span></a> stream_index</code></em>);</pre>
-<div class="refsect3">
-<a name="id-1.2.10.2.14.28.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>stream_index</p></td>
-<td class="parameter_description"><p>stream index</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.10.2.14.28.5"></a><h4>Returns</h4>
-<p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
 <p>Sets the subtitle strack <em class="parameter"><code>stream_index</code></em>
 .</p>
 </div>
@@ -1374,8 +1356,36 @@
 gst_player_get_current_audio_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
 <p>A Function to get current audio <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> instance.</p>
 <div class="refsect3">
+<a name="id-1.2.10.2.14.28.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>player</p></td>
+<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="id-1.2.10.2.14.28.6"></a><h4>Returns</h4>
+<p> current audio track.</p>
+<p>The caller should free it with <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-get-current-video-track"></a><h3>gst_player_get_current_video_track ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="returnvalue">GstPlayerVideoInfo</span></a> *
+gst_player_get_current_video_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
+<p>A Function to get current video <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a> instance.</p>
+<div class="refsect3">
 <a name="id-1.2.10.2.14.29.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1390,20 +1400,20 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.10.2.14.29.6"></a><h4>Returns</h4>
-<p> current audio track.</p>
+<p> current video track.</p>
 <p>The caller should free it with <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
 </div>
 <hr>
 <div class="refsect2">
-<a name="gst-player-get-current-video-track"></a><h3>gst_player_get_current_video_track ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="returnvalue">GstPlayerVideoInfo</span></a> *
-gst_player_get_current_video_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>A Function to get current video <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a> instance.</p>
+<a name="gst-player-get-current-subtitle-track"></a><h3>gst_player_get_current_subtitle_track ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerSubtitleInfo"><span class="returnvalue">GstPlayerSubtitleInfo</span></a> *
+gst_player_get_current_subtitle_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
+<p>A Function to get current subtitle <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerSubtitleInfo"><span class="type">GstPlayerSubtitleInfo</span></a> instance.</p>
 <div class="refsect3">
 <a name="id-1.2.10.2.14.30.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1418,34 +1428,6 @@
 </div>
 <div class="refsect3">
 <a name="id-1.2.10.2.14.30.6"></a><h4>Returns</h4>
-<p> current video track.</p>
-<p>The caller should free it with <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-player-get-current-subtitle-track"></a><h3>gst_player_get_current_subtitle_track ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerSubtitleInfo"><span class="returnvalue">GstPlayerSubtitleInfo</span></a> *
-gst_player_get_current_subtitle_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>A Function to get current subtitle <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerSubtitleInfo"><span class="type">GstPlayerSubtitleInfo</span></a> instance.</p>
-<div class="refsect3">
-<a name="id-1.2.10.2.14.31.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="id-1.2.10.2.14.31.6"></a><h4>Returns</h4>
 <p> current subtitle track.</p>
 <p>The caller should free it with <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
@@ -1459,8 +1441,8 @@
                                     <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> enabled</code></em>);</pre>
 <p>Enable or disable the current audio track.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.32.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.31.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1489,8 +1471,8 @@
                                     <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> enabled</code></em>);</pre>
 <p>Enable or disable the current video track.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.33.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.32.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1519,8 +1501,8 @@
                                        <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> enabled</code></em>);</pre>
 <p>Enable or disable the current subtitle track.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.34.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.33.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1548,8 +1530,8 @@
 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="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *uri</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.35.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.34.4"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1570,7 +1552,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.35.5"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.34.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> or <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
 <p>Sets the external subtitle URI.</p>
 </div>
@@ -1582,8 +1564,8 @@
 gst_player_get_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>);</pre>
 <p>current subtitle URI</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.36.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.35.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1597,7 +1579,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.36.6"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.35.6"></a><h4>Returns</h4>
 <p> URI of the current external subtitle.
 <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -1610,8 +1592,8 @@
 gst_player_set_visualization (<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="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.37.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.36.4"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1633,7 +1615,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.37.5"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.36.5"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the visualizations was set correctly. Otherwise,
 <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
 </div>
@@ -1646,8 +1628,8 @@
                                       <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> enabled</code></em>);</pre>
 <p>Enable or disable the visualization.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.38.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.37.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1674,8 +1656,8 @@
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
 gst_player_get_current_visualization (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.39.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.38.4"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1689,7 +1671,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.39.5"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.38.5"></a><h4>Returns</h4>
 <p> Name of the currently enabled visualization.
 <a href="https://developer.gnome.org/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage. </p>
 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
@@ -1703,8 +1685,8 @@
                                (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerColorBalanceType" title="enum GstPlayerColorBalanceType"><span class="type">GstPlayerColorBalanceType</span></a> type</code></em>);</pre>
 <p>Gets a string representing the given color balance type.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.40.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.39.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1718,7 +1700,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.40.6"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.39.6"></a><h4>Returns</h4>
 <p> a string with the name of the color
 balance type. </p>
 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
@@ -1732,8 +1714,8 @@
 <p>Checks whether the <em class="parameter"><code>player</code></em>
  has color balance support available.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.41.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.40.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1747,7 +1729,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.41.6"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.40.6"></a><h4>Returns</h4>
 <p> <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>player</code></em>
 has color balance support. Otherwise,
 <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
@@ -1764,8 +1746,8 @@
  to the passed
 value.</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.42.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.41.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1801,8 +1783,8 @@
 <p>Retrieve the current value of the indicated <em class="parameter"><code>type</code></em>
 .</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.43.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.42.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1823,7 +1805,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.43.6"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.42.6"></a><h4>Returns</h4>
 <p> The current value of <em class="parameter"><code>type</code></em>
 , between [0,1]. In case of
 error -1 is returned.</p>
@@ -1835,8 +1817,8 @@
 <pre class="programlisting"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
 gst_player_get_rate (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.44.4"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.43.4"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1850,7 +1832,7 @@
 </table></div>
 </div>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.44.5"></a><h4>Returns</h4>
+<a name="id-1.2.10.2.14.43.5"></a><h4>Returns</h4>
 <p> current playback rate</p>
 </div>
 </div>
@@ -1862,8 +1844,8 @@
                      <em class="parameter"><code><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> rate</code></em>);</pre>
 <p>Playback at specified rate</p>
 <div class="refsect3">
-<a name="id-1.2.10.2.14.45.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<a name="id-1.2.10.2.14.44.5"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1896,7 +1878,7 @@
 <a name="GstPlayerState"></a><h3>enum GstPlayerState</h3>
 <div class="refsect3">
 <a name="id-1.2.10.2.15.3.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1941,7 +1923,7 @@
 <a name="GstPlayerError"></a><h3>enum GstPlayerError</h3>
 <div class="refsect3">
 <a name="id-1.2.10.2.15.4.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1962,7 +1944,7 @@
 <a name="GstPlayerColorBalanceType"></a><h3>enum GstPlayerColorBalanceType</h3>
 <div class="refsect3">
 <a name="id-1.2.10.2.15.5.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-h264parser.html b/docs/libs/html/gst-plugins-bad-libs-h264parser.html
index 066b443..a501690 100644
--- a/docs/libs/html/gst-plugins-bad-libs-h264parser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-h264parser.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>h264parser: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="codecparsers.html" title="Bitstream parsing Library">
 <link rel="prev" href="codecparsers.html" title="Bitstream parsing Library">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-h264parser.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -211,7 +211,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-h264parser.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -400,7 +400,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -457,7 +457,7 @@
 .</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.8.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -516,7 +516,7 @@
  is up to date.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.9.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -555,7 +555,7 @@
  structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.10.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -608,7 +608,7 @@
  structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.11.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -659,7 +659,7 @@
 to parsing a new PPS NAL unit.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.12.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -701,7 +701,7 @@
  array.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.13.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -752,7 +752,7 @@
  and sets it to <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.15.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -778,7 +778,7 @@
  structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.16.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -824,7 +824,7 @@
 to parsing a new PPS NAL unit.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.17.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -863,7 +863,7 @@
  internal resources.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.18.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -895,7 +895,7 @@
  arguments.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.19.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -934,7 +934,7 @@
  arguments.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.20.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -973,7 +973,7 @@
  arguments.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.21.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1012,7 +1012,7 @@
  arguments.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.22.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1055,7 +1055,7 @@
  to 1.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.7.23.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -1113,7 +1113,7 @@
 <p>Indicates the type of H264 Nal Units</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.8.4.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1270,7 +1270,7 @@
 <p>The result of parsing H264 data.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.8.5.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1329,7 +1329,7 @@
 <p>The type of SEI message.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.8.6.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1383,7 +1383,7 @@
 <p>SEI pic_struct type</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.8.7.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1465,7 +1465,7 @@
 <p>Type of Picture slice</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.8.8.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1560,7 +1560,7 @@
 <p>Structure defining the Nal unit headers</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.8.10.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -1710,7 +1710,7 @@
 <p>H264 Sequence Parameter Set (SPS)</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.8.11.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -2047,7 +2047,7 @@
 <p>Defines the HRD parameters</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.8.13.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -2178,7 +2178,7 @@
 <p>The structure representing the VUI parameters.</p>
 <div class="refsect3">
 <a name="id-1.2.4.3.8.14.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-jpegparser.html b/docs/libs/html/gst-plugins-bad-libs-jpegparser.html
index b8aa24e..34d2f5c 100644
--- a/docs/libs/html/gst-plugins-bad-libs-jpegparser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-jpegparser.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>jpegparser: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="codecparsers.html" title="Bitstream parsing Library">
 <link rel="prev" href="gst-plugins-bad-libs-h264parser.html" title="h264parser">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-jpegparser.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -108,7 +108,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-jpegparser.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -223,7 +223,7 @@
 data available when parsing the segment.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.7.2.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -273,7 +273,7 @@
 available.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.7.3.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -312,7 +312,7 @@
 available.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.7.4.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -357,7 +357,7 @@
 <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>;</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.7.5.7"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -403,7 +403,7 @@
 table will also be set to <a href="https://developer.gnome.org/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.7.6.7"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -440,7 +440,7 @@
 available.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.7.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -483,7 +483,7 @@
 specified by the JPEG standard.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.7.9.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -566,7 +566,7 @@
 <p>JPEG entropy coding mode.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.8.11.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -598,7 +598,7 @@
 <p>JPEG encoding processes.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.8.12.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -651,7 +651,7 @@
 <p>A structure that contains the type of a segment, its offset and its size.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.8.13.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -702,7 +702,7 @@
 <p>Frame header.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.8.14.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -752,7 +752,7 @@
 <p>Component-specification parameters.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.8.15.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -795,7 +795,7 @@
 <p>Scan header.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.8.16.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -829,7 +829,7 @@
 <p>Component-specification parameters.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.8.17.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -868,7 +868,7 @@
 decode an image.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.8.18.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -902,7 +902,7 @@
 <p>Huffman table.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.8.19.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -942,7 +942,7 @@
 <p>Quantization table.</p>
 <div class="refsect3">
 <a name="id-1.2.4.4.8.20.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-mpeg4parser.html b/docs/libs/html/gst-plugins-bad-libs-mpeg4parser.html
index 04c76e8..6d08dd6 100644
--- a/docs/libs/html/gst-plugins-bad-libs-mpeg4parser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-mpeg4parser.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mpeg4parser: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="codecparsers.html" title="Bitstream parsing Library">
 <link rel="prev" href="gst-plugins-bad-libs-mpegvideoparser.html" title="mpegvideoparser">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-mpeg4parser.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -101,7 +101,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-mpeg4parser.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -217,7 +217,7 @@
 found.</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.7.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -279,7 +279,7 @@
 structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.7.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -333,7 +333,7 @@
  structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.7.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -378,7 +378,7 @@
  structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.7.5.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -428,7 +428,7 @@
  structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.7.6.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -479,7 +479,7 @@
  structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.7.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -527,7 +527,7 @@
  structure</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.7.8.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -580,7 +580,7 @@
 defined in: Table 6-3 — Start code values</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.8.2.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -718,7 +718,7 @@
 defined in: Table 6-5 -- Meaning of visual object type</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.8.3.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -761,7 +761,7 @@
 defined in: Table 6-12 -- Meaning of pixel aspect ratio</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.8.4.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -820,7 +820,7 @@
 <p>Result type of any parsing function.</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.8.5.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -871,7 +871,7 @@
 Table 6-20 -- Meaning of vop_coding_type</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.8.6.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -917,7 +917,7 @@
 defined in: Table 6-13 -- Meaning of chroma_format</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.8.7.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -938,7 +938,7 @@
 Table 6-16 — Video Object Layer shape type</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.8.8.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -977,7 +977,7 @@
 Table V2 - 2 -- Meaning of sprite_enable codewords</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.8.9.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1012,7 +1012,7 @@
 Table G.1 — FLC table for profile_and_level_indication</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.8.10.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1132,7 +1132,7 @@
 Table G.1 — FLC table for profile_and_level_indication</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.8.11.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1462,7 +1462,7 @@
 <p>A structure that contains the type of a packet, its offset and its size</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.8.20.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -1515,7 +1515,7 @@
 6.2.5.2 Video Plane with Short Header</p>
 <div class="refsect3">
 <a name="id-1.2.4.6.8.21.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html b/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html
index 17486e0..ffb89b5 100644
--- a/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mpegvideoparser: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="codecparsers.html" title="Bitstream parsing Library">
 <link rel="prev" href="gst-plugins-bad-libs-jpegparser.html" title="jpegparser">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-mpegvideoparser.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -133,7 +133,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-mpegvideoparser.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -219,7 +219,7 @@
 the data to find the next packet if needed.</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.7.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -273,7 +273,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.4.5.7.3.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -327,7 +327,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.4.5.7.4.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -382,7 +382,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.4.5.7.5.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -436,7 +436,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.4.5.7.6.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -490,7 +490,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.4.5.7.7.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -557,7 +557,7 @@
 </p>
 <div class="refsect3">
 <a name="id-1.2.4.5.7.9.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -620,7 +620,7 @@
  arguments.</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.7.11.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -659,7 +659,7 @@
  arguments.</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.7.12.6"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -689,7 +689,7 @@
 <p>Indicates the type of MPEG packet</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.8.2.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -771,7 +771,7 @@
 Picture may occur together or separately.</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.8.3.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -823,7 +823,7 @@
 <p>Mpeg-2 Levels.</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.8.4.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -868,7 +868,7 @@
 <p>Mpeg-2 Profiles.</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.8.5.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -927,7 +927,7 @@
 <p>Picture type.</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.8.6.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -972,7 +972,7 @@
 <p>Picture structure type.</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.8.7.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1028,7 +1028,7 @@
 <p>The Mpeg2 Video Sequence Header structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.8.8.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -1132,7 +1132,7 @@
 <p>The Mpeg2 Video Sequence Extension structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.8.9.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -1214,7 +1214,7 @@
 <p>The Mpeg2 Video Picture Header structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.8.10.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -1267,7 +1267,7 @@
 <p>The Mpeg Video Group of Picture structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.8.11.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -1341,7 +1341,7 @@
 <p>The Mpeg2 Video Picture Extension structure.</p>
 <div class="refsect3">
 <a name="id-1.2.4.5.8.12.5"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gst-plugins-bad-libs-vc1parser.html b/docs/libs/html/gst-plugins-bad-libs-vc1parser.html
index 8e59b2f..bfca072 100644
--- a/docs/libs/html/gst-plugins-bad-libs-vc1parser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-vc1parser.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>vc1parser: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="codecparsers.html" title="Bitstream parsing Library">
 <link rel="prev" href="gst-plugins-bad-libs-mpeg4parser.html" title="mpeg4parser">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-vc1parser.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -141,7 +141,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-libs-vc1parser.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -273,7 +273,7 @@
  fields</p>
 <div class="refsect3">
 <a name="id-1.2.4.7.7.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -316,7 +316,7 @@
  fields.</p>
 <div class="refsect3">
 <a name="id-1.2.4.7.7.3.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -359,7 +359,7 @@
  fields.</p>
 <div class="refsect3">
 <a name="id-1.2.4.7.7.4.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -403,7 +403,7 @@
  fields.</p>
 <div class="refsect3">
 <a name="id-1.2.4.7.7.5.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -447,7 +447,7 @@
  fields.</p>
 <div class="refsect3">
 <a name="id-1.2.4.7.7.6.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -491,7 +491,7 @@
  fields.</p>
 <div class="refsect3">
 <a name="id-1.2.4.7.7.7.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -535,7 +535,7 @@
  fields.</p>
 <div class="refsect3">
 <a name="id-1.2.4.7.7.8.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -585,7 +585,7 @@
  fields.</p>
 <div class="refsect3">
 <a name="id-1.2.4.7.7.9.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -664,7 +664,7 @@
 if in advanced mode.</p>
 <div class="refsect3">
 <a name="id-1.2.4.7.7.13.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -709,7 +709,7 @@
 <a name="GstVC1StartCode"></a><h3>enum GstVC1StartCode</h3>
 <div class="refsect3">
 <a name="id-1.2.4.7.8.4.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -780,7 +780,7 @@
 <a name="GstVC1Profile"></a><h3>enum GstVC1Profile</h3>
 <div class="refsect3">
 <a name="id-1.2.4.7.8.5.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -816,7 +816,7 @@
 <a name="GstVC1ParserResult"></a><h3>enum GstVC1ParserResult</h3>
 <div class="refsect3">
 <a name="id-1.2.4.7.8.6.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -857,7 +857,7 @@
 <a name="GstVC1PictureType"></a><h3>enum GstVC1PictureType</h3>
 <div class="refsect3">
 <a name="id-1.2.4.7.8.7.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -898,7 +898,7 @@
 <a name="GstVC1Level"></a><h3>enum GstVC1Level</h3>
 <div class="refsect3">
 <a name="id-1.2.4.7.8.8.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -959,7 +959,7 @@
 <a name="GstVC1QuantizerSpec"></a><h3>enum GstVC1QuantizerSpec</h3>
 <div class="refsect3">
 <a name="id-1.2.4.7.8.9.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -995,7 +995,7 @@
 <a name="GstVC1DQProfile"></a><h3>enum GstVC1DQProfile</h3>
 <div class="refsect3">
 <a name="id-1.2.4.7.8.10.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1031,7 +1031,7 @@
 <a name="GstVC1Condover"></a><h3>enum GstVC1Condover</h3>
 <div class="refsect3">
 <a name="id-1.2.4.7.8.11.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1062,7 +1062,7 @@
 <a name="GstVC1MvMode"></a><h3>enum GstVC1MvMode</h3>
 <div class="refsect3">
 <a name="id-1.2.4.7.8.12.3"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="enum_members_name">
 <col class="enum_members_description">
@@ -1401,7 +1401,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.4.7.8.22.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
@@ -1694,7 +1694,7 @@
 </pre>
 <div class="refsect3">
 <a name="id-1.2.4.7.8.23.4"></a><h4>Members</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="300px" class="struct_members_name">
 <col class="struct_members_description">
diff --git a/docs/libs/html/gstreamer-libs-hierarchy.html b/docs/libs/html/gstreamer-libs-hierarchy.html
index 0c757bf..8311fac 100644
--- a/docs/libs/html/gstreamer-libs-hierarchy.html
+++ b/docs/libs/html/gstreamer-libs-hierarchy.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Part II. Object Hierarchy: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="prev" href="gst-plugins-bad-libs-GstPhotography.html" title="GstPhotography">
diff --git a/docs/libs/html/gstreamer-plugins-bad.html b/docs/libs/html/gstreamer-plugins-bad.html
index 68632e8..3f6225c 100644
--- a/docs/libs/html/gstreamer-plugins-bad.html
+++ b/docs/libs/html/gstreamer-plugins-bad.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Part I. GStreamer Bad Plugins Libraries: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="prev" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index 331bc27..078eb7f 100644
--- a/docs/libs/html/index.html
+++ b/docs/libs/html/index.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GStreamer Bad Plugins 1.0 Library Reference Manual: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="next" href="gstreamer-plugins-bad.html" title="Part I. GStreamer Bad Plugins Libraries">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
@@ -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.7.1)
+      for GStreamer Bad Library 1.0 (1.7.2)
       <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/libs/html/index.sgml b/docs/libs/html/index.sgml
index e4f2596..81f6d2e 100644
--- a/docs/libs/html/index.sgml
+++ b/docs/libs/html/index.sgml
@@ -1627,7 +1627,6 @@
 <ANCHOR id="gst-plugins-bad-libs-gstplayer.description" href="gst-plugins-bad-libs-1.0/gst-plugins-bad-libs-gstplayer.html#gst-plugins-bad-libs-gstplayer.description">
 <ANCHOR id="gst-plugins-bad-libs-gstplayer.functions_details" href="gst-plugins-bad-libs-1.0/gst-plugins-bad-libs-gstplayer.html#gst-plugins-bad-libs-gstplayer.functions_details">
 <ANCHOR id="gst-player-new" href="gst-plugins-bad-libs-1.0/gst-plugins-bad-libs-gstplayer.html#gst-player-new">
-<ANCHOR id="gst-player-new-full" href="gst-plugins-bad-libs-1.0/gst-plugins-bad-libs-gstplayer.html#gst-player-new-full">
 <ANCHOR id="gst-player-play" href="gst-plugins-bad-libs-1.0/gst-plugins-bad-libs-gstplayer.html#gst-player-play">
 <ANCHOR id="gst-player-pause" href="gst-plugins-bad-libs-1.0/gst-plugins-bad-libs-gstplayer.html#gst-player-pause">
 <ANCHOR id="gst-player-stop" href="gst-plugins-bad-libs-1.0/gst-plugins-bad-libs-gstplayer.html#gst-player-stop">
diff --git a/docs/libs/html/mpegts.html b/docs/libs/html/mpegts.html
index 27dce1b..a76a196 100644
--- a/docs/libs/html/mpegts.html
+++ b/docs/libs/html/mpegts.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Mpeg TS helper library: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-plugins-bad.html" title="Part I. GStreamer Bad Plugins Libraries">
 <link rel="prev" href="gst-plugins-bad-libs-gstmpegvideometa.html" title="gstmpegvideometa">
diff --git a/docs/libs/html/player.html b/docs/libs/html/player.html
index 0d90935..fedeebb 100644
--- a/docs/libs/html/player.html
+++ b/docs/libs/html/player.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Player Library: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-plugins-bad.html" title="Part I. GStreamer Bad Plugins Libraries">
 <link rel="prev" href="gst-plugins-bad-libs-GstGLWindowX11.html" title="GstGLWindowX11">
diff --git a/docs/libs/html/tools.html b/docs/libs/html/tools.html
index 7e5a3d0..eb97a9f 100644
--- a/docs/libs/html/tools.html
+++ b/docs/libs/html/tools.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Useful elements: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-plugins-bad.html" title="Part I. GStreamer Bad Plugins Libraries">
 <link rel="prev" href="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html" title="ISDB variants of MPEG-TS descriptors">
diff --git a/docs/libs/html/video.html b/docs/libs/html/video.html
index d10d709..9785deb 100644
--- a/docs/libs/html/video.html
+++ b/docs/libs/html/video.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>Video helpers and baseclasses: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
 <link rel="up" href="gstreamer-plugins-bad.html" title="Part I. GStreamer Bad Plugins Libraries">
 <link rel="prev" href="gst-plugins-bad-libs-GstAggregatorPad.html" title="GstAggregatorPad">
diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in
index 5c6edd5..b140e45 100644
--- a/docs/plugins/Makefile.in
+++ b/docs/plugins/Makefile.in
@@ -131,16 +131,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -316,7 +315,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -338,7 +336,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -360,9 +357,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -524,6 +518,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -537,8 +532,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -625,8 +618,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -678,6 +669,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -698,6 +690,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -735,7 +729,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/docs/plugins/gst-plugins-bad-plugins-docs.sgml b/docs/plugins/gst-plugins-bad-plugins-docs.sgml
index bd25df3..69db609 100644
--- a/docs/plugins/gst-plugins-bad-plugins-docs.sgml
+++ b/docs/plugins/gst-plugins-bad-plugins-docs.sgml
@@ -68,7 +68,6 @@
     <xi:include href="xml/element-mpegpsmux.xml" />
     <xi:include href="xml/element-mpegtsmux.xml" />
     <xi:include href="xml/element-mplex.xml" />
-    <xi:include href="xml/element-mpg123audiodec.xml" />
     <xi:include href="xml/element-neonhttpsrc.xml" />
     <xi:include href="xml/element-ofa.xml" />
     <xi:include href="xml/element-openalsrc.xml" />
diff --git a/docs/plugins/gst-plugins-bad-plugins-sections.txt b/docs/plugins/gst-plugins-bad-plugins-sections.txt
index a289e22..7fed114 100644
--- a/docs/plugins/gst-plugins-bad-plugins-sections.txt
+++ b/docs/plugins/gst-plugins-bad-plugins-sections.txt
@@ -975,20 +975,6 @@
 </SECTION>
 
 <SECTION>
-<FILE>element-mpg123audiodec</FILE>
-<TITLE>mpg123audiodec</TITLE>
-GstMpg123AudioDec
-<SUBSECTION Standard>
-GstMpg123AudioDecClass
-GST_MPG123_AUDIO_DEC
-GST_MPG123_AUDIO_DEC_CLASS
-GST_IS_MPG123_AUDIO_DEC
-GST_IS_MPG123_AUDIO_DEC_CLASS
-GST_TYPE_MPG123_AUDIO_DEC
-gst_mpg123_audio_dec_get_type
-</SECTION>
-
-<SECTION>
 <FILE>element-mxfdemux</FILE>
 <TITLE>mxfdemux</TITLE>
 GstMXFDemux
diff --git a/docs/plugins/gst-plugins-bad-plugins.args b/docs/plugins/gst-plugins-bad-plugins.args
index 3c6b35b..0bdbfbd 100644
--- a/docs/plugins/gst-plugins-bad-plugins.args
+++ b/docs/plugins/gst-plugins-bad-plugins.args
@@ -18749,6 +18749,36 @@
 </ARG>
 
 <ARG>
+<NAME>GstVideoParse::framesize</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Framesize</NICK>
+<BLURB>Size of an image in raw stream (0: default).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstVideoParse::offsets</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Offsets</NICK>
+<BLURB>Offset of each planes in bytes using string format: 'o0,o1,o2,o3'.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstVideoParse::strides</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Strides</NICK>
+<BLURB>Stride of each planes in bytes using string format: 's0,s1,s2,s3'.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstMetadataParse::exif</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
@@ -46389,16 +46419,6 @@
 </ARG>
 
 <ARG>
-<NAME>GstGSettingsAudioSink::profile</NAME>
-<TYPE>GstGSettingsAudioSinkProfile</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Profile</NICK>
-<BLURB>Profile.</BLURB>
-<DEFAULT>Sound Events</DEFAULT>
-</ARG>
-
-<ARG>
 <NAME>Gstsolarize::silent</NAME>
 <TYPE>gboolean</TYPE>
 <RANGE></RANGE>
@@ -47079,6 +47099,16 @@
 </ARG>
 
 <ARG>
+<NAME>GstCvSobel::mask</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Mask</NICK>
+<BLURB>Sets whether the detected derivative edges should be used as a mask on the original input or not.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstCvSmooth::param1</NAME>
 <TYPE>gint</TYPE>
 <RANGE>>= 1</RANGE>
@@ -47199,6 +47229,16 @@
 </ARG>
 
 <ARG>
+<NAME>GstCvLaplace::mask</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Mask</NICK>
+<BLURB>Sets whether the detected edges should be used as a mask on the original input or not.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstRotate::angle</NAME>
 <TYPE>gdouble</TYPE>
 <RANGE></RANGE>
@@ -58504,7 +58544,7 @@
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Use in-band FEC</NICK>
-<BLURB>Use forward error correction if available.</BLURB>
+<BLURB>Use forward error correction if available (needs PLC enabled).</BLURB>
 <DEFAULT>FALSE</DEFAULT>
 </ARG>
 
@@ -58674,7 +58714,7 @@
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Calculate Motion</NICK>
-<BLURB>If needs calculate motion on frame you need this property setting true otherwise false.</BLURB>
+<BLURB>Toggles motion calculation. If FALSE, this filter does nothing.</BLURB>
 <DEFAULT>TRUE</DEFAULT>
 </ARG>
 
@@ -58684,7 +58724,7 @@
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Color of Motion Cells</NICK>
-<BLURB>The color of motion cells separated with ",".</BLURB>
+<BLURB>Color for motion cells in R,G,B format. Max per channel is 255.</BLURB>
 <DEFAULT>"255,255,0"</DEFAULT>
 </ARG>
 
@@ -58714,7 +58754,7 @@
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Display</NICK>
-<BLURB>Motion Cells visible or not on Current Frame.</BLURB>
+<BLURB>Toggle display of motion cells on current frame.</BLURB>
 <DEFAULT>FALSE</DEFAULT>
 </ARG>
 
@@ -58723,8 +58763,8 @@
 <TYPE>gint</TYPE>
 <RANGE>[1,60]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>Gap is time in second, elapsed time from last motion timestamp. </NICK>
-<BLURB>If elapsed time minus form last motion timestamp is greater or equal than gap then we post motion finished bus message. .</BLURB>
+<NICK>Motion-finished Threshold</NICK>
+<BLURB>Interval in seconds after which motion is considered finished and a motion finished bus message is posted.</BLURB>
 <DEFAULT>5</DEFAULT>
 </ARG>
 
@@ -58734,7 +58774,7 @@
 <RANGE>[8,32]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Number of Horizontal Grids</NICK>
-<BLURB>You can give number of horizontal grid cells.</BLURB>
+<BLURB>Number of horizontal grid cells.</BLURB>
 <DEFAULT>10</DEFAULT>
 </ARG>
 
@@ -58744,7 +58784,7 @@
 <RANGE>[8,32]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Number of Vertical Grids</NICK>
-<BLURB>You can give number of vertical grid cells.</BLURB>
+<BLURB>Number of vertical grid cells.</BLURB>
 <DEFAULT>10</DEFAULT>
 </ARG>
 
@@ -58753,8 +58793,8 @@
 <TYPE>gint</TYPE>
 <RANGE>[1,60]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>MINIMUN MOTION FRAMES</NICK>
-<BLURB>Define the minimum number of motion frames that trigger a motion event.</BLURB>
+<NICK>Minimum Motion Frames</NICK>
+<BLURB>Minimum number of motion frames triggering a motion event.</BLURB>
 <DEFAULT>1</DEFAULT>
 </ARG>
 
@@ -58764,7 +58804,7 @@
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Motion Cells Of Interest(MOCI)</NICK>
-<BLURB>The line and column idx separated with ":", describe a cell. Cells separated with ",".</BLURB>
+<BLURB>Describe a cell with its line and column idx separated with ":". Pass multiple cells as a comma-separated list.</BLURB>
 <DEFAULT>NULL</DEFAULT>
 </ARG>
 
@@ -58774,7 +58814,7 @@
 <RANGE>[G_MAXULONG,5]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Motion Cell Thickness</NICK>
-<BLURB>Motion Cell Border Thickness, if it's -1 then motion cell will be fill.</BLURB>
+<BLURB>Motion Cell Border Thickness. Set to -1 to fill motion cell.</BLURB>
 <DEFAULT>1</DEFAULT>
 </ARG>
 
@@ -58784,7 +58824,7 @@
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Motion Mask with Cells Position</NICK>
-<BLURB>The line and column idx separated with ":" what cells want we mask-out, describe a cell. Cells separated with ",".</BLURB>
+<BLURB>Describe a cell with its line and column idx separated with ":". Pass multiple cells as a comma-separated list.</BLURB>
 <DEFAULT>NULL</DEFAULT>
 </ARG>
 
@@ -58794,7 +58834,7 @@
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Motion Mask with Coordinates</NICK>
-<BLURB>The upper left x, y and lower right x, y coordinates separated with ":", describe a region. Regions separated with ",".</BLURB>
+<BLURB>Describe a region with its upper left and lower right x, y coordinates separated with ":". Pass multiple regions as a comma-separated list.</BLURB>
 <DEFAULT>NULL</DEFAULT>
 </ARG>
 
@@ -58804,7 +58844,7 @@
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Post All Motion</NICK>
-<BLURB>Element post bus msg for every motion frame or just motion start and motion stop.</BLURB>
+<BLURB>Post bus messages for every motion frame or just motion start and motion stop.</BLURB>
 <DEFAULT>FALSE</DEFAULT>
 </ARG>
 
@@ -58813,8 +58853,8 @@
 <TYPE>gint</TYPE>
 <RANGE>[0,180]</RANGE>
 <FLAGS>rw</FLAGS>
-<NICK>POSTNOMOTION</NICK>
-<BLURB>If non 0 post a no_motion event is posted on the bus if no motion is detected for N seconds.</BLURB>
+<NICK>No-motion Threshold</NICK>
+<BLURB>If non 0, post a no_motion event on the bus if no motion is detected for the given number of seconds.</BLURB>
 <DEFAULT>0</DEFAULT>
 </ARG>
 
@@ -58824,7 +58864,7 @@
 <RANGE>[0,1]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Motion Sensitivity</NICK>
-<BLURB>You can tunning the element motion sensitivity.</BLURB>
+<BLURB>Motion detection sensitivity.</BLURB>
 <DEFAULT>0.5</DEFAULT>
 </ARG>
 
@@ -58834,7 +58874,7 @@
 <RANGE>[0,1]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Lower bound of motion cells number</NICK>
-<BLURB>Threshold value for motion, when motion cells number greater sum cells * threshold, we show motion.</BLURB>
+<BLURB>Threshold value for motion. Filter detects motion when at least this fraction of the cells have moved.</BLURB>
 <DEFAULT>0.01</DEFAULT>
 </ARG>
 
@@ -58844,7 +58884,7 @@
 <RANGE></RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Use alpha</NICK>
-<BLURB>Use or not alpha blending on frames with motion cells.</BLURB>
+<BLURB>Toggle usage of alpha blending on frames with motion cells.</BLURB>
 <DEFAULT>TRUE</DEFAULT>
 </ARG>
 
@@ -58865,7 +58905,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Eyes profile</NICK>
 <BLURB>Location of Haar cascade file to use for eye-pair detection.</BLURB>
-<DEFAULT>"/usr/share/opencv/haarcascades/haarcascade_mcs_eyepair_small.xml"</DEFAULT>
+<DEFAULT>"/usr/share/OpenCV/haarcascades/haarcascade_mcs_eyepair_small.xml"</DEFAULT>
 </ARG>
 
 <ARG>
@@ -58915,7 +58955,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Mouth profile</NICK>
 <BLURB>Location of Haar cascade file to use for mouth detection.</BLURB>
-<DEFAULT>"/usr/share/opencv/haarcascades/haarcascade_mcs_mouth.xml"</DEFAULT>
+<DEFAULT>"/usr/share/OpenCV/haarcascades/haarcascade_mcs_mouth.xml"</DEFAULT>
 </ARG>
 
 <ARG>
@@ -58925,7 +58965,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Nose profile</NICK>
 <BLURB>Location of Haar cascade file to use for nose detection.</BLURB>
-<DEFAULT>"/usr/share/opencv/haarcascades/haarcascade_mcs_nose.xml"</DEFAULT>
+<DEFAULT>"/usr/share/OpenCV/haarcascades/haarcascade_mcs_nose.xml"</DEFAULT>
 </ARG>
 
 <ARG>
@@ -58935,7 +58975,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Face profile</NICK>
 <BLURB>Location of Haar cascade file to use for face detection.</BLURB>
-<DEFAULT>"/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml"</DEFAULT>
+<DEFAULT>"/usr/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml"</DEFAULT>
 </ARG>
 
 <ARG>
@@ -58975,7 +59015,7 @@
 <FLAGS>rw</FLAGS>
 <NICK>Profile</NICK>
 <BLURB>Location of Haar cascade file to use for face blurion.</BLURB>
-<DEFAULT>"/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml"</DEFAULT>
+<DEFAULT>"/usr/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml"</DEFAULT>
 </ARG>
 
 <ARG>
@@ -68111,6 +68151,46 @@
 </ARG>
 
 <ARG>
+<NAME>GstGLSinkBin::brightness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[-1,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Brightness</NICK>
+<BLURB>brightness.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGLSinkBin::contrast</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,2]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Contrast</NICK>
+<BLURB>contrast.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGLSinkBin::hue</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[-1,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Hue</NICK>
+<BLURB>hue.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGLSinkBin::saturation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,2]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Saturation</NICK>
+<BLURB>saturation.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstGLMixerBin::latency</NAME>
 <TYPE>gint64</TYPE>
 <RANGE>>= 0</RANGE>
@@ -69070,3 +69150,213 @@
 <DEFAULT>"%s\\n"</DEFAULT>
 </ARG>
 
+<ARG>
+<NAME>GstNetSim::delay-probability</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Delay Probability</NICK>
+<BLURB>The Probability a buffer is delayed.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstNetSim::drop-packets</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Drop Packets</NICK>
+<BLURB>Drop the next n packets.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstNetSim::drop-probability</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Drop Probability</NICK>
+<BLURB>The Probability a buffer is dropped.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstNetSim::duplicate-probability</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Duplicate Probability</NICK>
+<BLURB>The Probability a buffer is duplicated.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstNetSim::max-delay</NAME>
+<TYPE>gint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Maximum delay (ms)</NICK>
+<BLURB>The maximum delay in ms to apply to buffers.</BLURB>
+<DEFAULT>400</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstNetSim::min-delay</NAME>
+<TYPE>gint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Minimum delay (ms)</NICK>
+<BLURB>The minimum delay in ms to apply to buffers.</BLURB>
+<DEFAULT>200</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGDPDepay::ts-offset</NAME>
+<TYPE>gint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Timestamp Offset</NICK>
+<BLURB>Timestamp Offset.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGLColorBalance::brightness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[-1,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Brightness</NICK>
+<BLURB>brightness.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGLColorBalance::contrast</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,2]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Contrast</NICK>
+<BLURB>contrast.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGLColorBalance::hue</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[-1,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Hue</NICK>
+<BLURB>hue.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGLColorBalance::saturation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,2]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Saturation</NICK>
+<BLURB>saturation.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstToneGenerateSrc::freq</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,20000]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Frequency</NICK>
+<BLURB>Frequency of test signal.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstToneGenerateSrc::freq2</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[0,20000]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Second Frequency</NICK>
+<BLURB>Frequency of second telephony tone component.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstToneGenerateSrc::off-time</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 0</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Signal OFF time first period </NICK>
+<BLURB>Time of the first period  when the tone signal is off.</BLURB>
+<DEFAULT>1000</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstToneGenerateSrc::off-time2</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 0</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Signal OFF time first period </NICK>
+<BLURB>Time of the second period  when the tone signal is off.</BLURB>
+<DEFAULT>1000</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstToneGenerateSrc::on-time</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 1</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Signal ON time first period</NICK>
+<BLURB>Time of the first period  when the tone signal is present.</BLURB>
+<DEFAULT>1000</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstToneGenerateSrc::on-time2</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 1</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Signal ON time second period</NICK>
+<BLURB>Time of the second period  when the tone signal is present.</BLURB>
+<DEFAULT>1000</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstToneGenerateSrc::repeat</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Repeat the specified tone period </NICK>
+<BLURB>Whether to repeat specified tone indefinitly.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstToneGenerateSrc::samplesperbuffer</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 1</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Samples per buffer</NICK>
+<BLURB>Number of samples in each outgoing buffer.</BLURB>
+<DEFAULT>1024</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstToneGenerateSrc::volume</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[-50,0]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Volume</NICK>
+<BLURB>Volume of first signal.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstToneGenerateSrc::volume2</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[-50,0]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Volume2</NICK>
+<BLURB>Volume of second tone signal.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
diff --git a/docs/plugins/gst-plugins-bad-plugins.hierarchy b/docs/plugins/gst-plugins-bad-plugins.hierarchy
index d955186..c43c7b7 100644
--- a/docs/plugins/gst-plugins-bad-plugins.hierarchy
+++ b/docs/plugins/gst-plugins-bad-plugins.hierarchy
@@ -37,7 +37,6 @@
           GstDtsDec
           GstFaad
           GstGSMDec
-          GstMpg123AudioDec
           GstOpusDec
           GstSbcDec
           GstSirenDec
@@ -73,6 +72,7 @@
             GstAudioSink
               GstOpenALSink
             GstDecklinkAudioSink
+          GstAvdtpSink
           GstChecksumSink
           GstCurlBaseSink
             GstCurlFileSink
@@ -96,6 +96,7 @@
             GstQtSink
             GstWaylandSink
         GstBaseSrc
+          GstAvdtpSrc
           GstDataURISrc
           GstFliteTestSrc
           GstInterAudioSrc
@@ -113,10 +114,10 @@
             GstDvbSrc
             GstGLTestSrc
             GstMMS
-            GstNeonhttpSrc
             GstRTMPSrc
             GstRfbSrc
             GstShmSrc
+            GstToneGenerateSrc
             GstVCDSrc
         GstBaseTransform
           GstAudioFilter
@@ -143,6 +144,7 @@
             GstGLColorConvertElement
             GstGLDownloadElement
             GstGLFilter
+              GstGLColorBalance
               GstGLColorscale
               GstGLDeinterlace
               GstGLDifferenceMatte
@@ -233,11 +235,13 @@
             GstSolarize
             GstVideoAnalyse
             GstVideoDiff
+            GstZBar
             GstZebraStripe
           GstWatchdog
           GstYadif
         GstBin
           DvbBaseBin
+          GstA2dpSink
           GstAdaptiveDemux
             GstDashDemux
             GstHLSDemux
@@ -296,14 +300,13 @@
         GstMpeg2enc
         GstMpegPSDemux
         GstMplex
+        GstNetSim
         GstPcapParse
         GstPitch
         GstRTPBaseDepayload
           GstRTPOpusDepay
-          GstRtpH265Depay
         GstRTPBasePayload
           GstRtpAsfPay
-          GstRtpH265Pay
           GstRtpOPUSPay
         GstRawParse
           GstAudioParse
@@ -326,7 +329,6 @@
           GstLibde265Dec
           GstOpenEXRDec
           GstOpenJPEGDec
-          GstOpenh264Dec
           GstPnmdec
           GstRsvgDec
           GstSchroDec
@@ -334,7 +336,6 @@
           GstWebPDec
         GstVideoEncoder
           GstOpenJPEGEnc
-          GstOpenh264Enc
           GstPnmenc
           GstSchroEnc
           GstWebpEnc
@@ -360,6 +361,7 @@
             GstCompositorPad
             GstGLBaseMixerPad
               GstGLMixerPad
+                GstGLStereoMixPad
                 GstGLVideoMixerPad
       GstPadTemplate
       GstPlugin
diff --git a/docs/plugins/gst-plugins-bad-plugins.interfaces b/docs/plugins/gst-plugins-bad-plugins.interfaces
index 6b16fd5..c9d803f 100644
--- a/docs/plugins/gst-plugins-bad-plugins.interfaces
+++ b/docs/plugins/gst-plugins-bad-plugins.interfaces
@@ -33,25 +33,22 @@
 GstFaceOverlay GstChildProxy
 GstFreeverb GstPreset
 GstGLBaseMixer GstChildProxy
+GstGLColorBalance GstColorBalance
 GstGLFilterBin GstChildProxy
 GstGLImageSink GstVideoOverlay
 GstGLImageSink GstVideoOverlay GstNavigation
 GstGLImageSinkBin GstChildProxy GstVideoOverlay GstNavigation
+GstGLImageSinkBin GstChildProxy GstVideoOverlay GstNavigation GstColorBalance
 GstGLMixer GstChildProxy
 GstGLMixerBin GstChildProxy
 GstGLMosaic GstChildProxy
 GstGLSinkBin GstChildProxy GstVideoOverlay GstNavigation
+GstGLSinkBin GstChildProxy GstVideoOverlay GstNavigation GstColorBalance
 GstGLSrcBin GstChildProxy
 GstGLStereoMix GstChildProxy
 GstGLVideoMixer GstChildProxy
 GstGLVideoMixerBin GstChildProxy
 GstGSMEnc GstPreset
-GstGSettingsAudioSink GstChildProxy
-GstGSettingsAudioSrc GstChildProxy
-GstGSettingsSwitchSink GstChildProxy
-GstGSettingsSwitchSrc GstChildProxy
-GstGSettingsVideoSink GstChildProxy
-GstGSettingsVideoSrc GstChildProxy
 GstGtkBaseSink GstNavigation
 GstGtkGLSink GstNavigation
 GstGtkSink GstNavigation
diff --git a/docs/plugins/html/ch01.html b/docs/plugins/html/ch01.html
index 45e03bd..f209c3a 100644
--- a/docs/plugins/html/ch01.html
+++ b/docs/plugins/html/ch01.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>gst-plugins-bad Elements: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="prev" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
@@ -174,9 +174,6 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-mplex.html">mplex</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-mpg123audiodec.html">mpg123audiodec</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-neonhttpsrc.html">neonhttpsrc</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
diff --git a/docs/plugins/html/ch02.html b/docs/plugins/html/ch02.html
index b08fdd5..908212b 100644
--- a/docs/plugins/html/ch02.html
+++ b/docs/plugins/html/ch02.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>gst-plugins-bad Plugins: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="prev" href="gst-plugins-bad-plugins-wavescope.html" title="wavescope">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2 b/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2
index 1230f11..02a5094 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2
+++ b/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2
@@ -52,7 +52,6 @@
       <sub name="mpegpsmux" link="gst-plugins-bad-plugins-mpegpsmux.html"/>
       <sub name="mpegtsmux" link="gst-plugins-bad-plugins-mpegtsmux.html"/>
       <sub name="mplex" link="gst-plugins-bad-plugins-mplex.html"/>
-      <sub name="mpg123audiodec" link="gst-plugins-bad-plugins-mpg123audiodec.html"/>
       <sub name="neonhttpsrc" link="gst-plugins-bad-plugins-neonhttpsrc.html"/>
       <sub name="ofa" link="gst-plugins-bad-plugins-ofa.html"/>
       <sub name="openalsrc" link="gst-plugins-bad-plugins-openalsrc.html"/>
@@ -181,6 +180,7 @@
     <keyword type="property" name="The “aperture-size” property" link="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--aperture-size"/>
     <keyword type="property" name="The “scale” property" link="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--scale"/>
     <keyword type="property" name="The “shift” property" link="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--shift"/>
+    <keyword type="property" name="The “mask” property" link="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--mask"/>
     <keyword type="struct" name="struct GstCvSmooth" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth-struct"/>
     <keyword type="property" name="The “param1” property" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth--param1"/>
     <keyword type="property" name="The “param2” property" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth--param2"/>
@@ -195,6 +195,7 @@
     <keyword type="property" name="The “aperture-size” property" link="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--aperture-size"/>
     <keyword type="property" name="The “x-order” property" link="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--x-order"/>
     <keyword type="property" name="The “y-order” property" link="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--y-order"/>
+    <keyword type="property" name="The “mask” property" link="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--mask"/>
     <keyword type="struct" name="struct GstDataURISrc" link="gst-plugins-bad-plugins-dataurisrc.html#GstDataURISrc-struct"/>
     <keyword type="property" name="The “uri” property" link="gst-plugins-bad-plugins-dataurisrc.html#GstDataURISrc--uri"/>
     <keyword type="struct" name="struct GstDiffuse" link="gst-plugins-bad-plugins-diffuse.html#GstDiffuse-struct"/>
@@ -378,8 +379,7 @@
     <keyword type="property" name="The “sector-size” property" link="gst-plugins-bad-plugins-mplex.html#GstMplex--sector-size"/>
     <keyword type="property" name="The “system-headers” property" link="gst-plugins-bad-plugins-mplex.html#GstMplex--system-headers"/>
     <keyword type="property" name="The “vbr” property" link="gst-plugins-bad-plugins-mplex.html#GstMplex--vbr"/>
-    <keyword type="struct" name="struct GstMpg123AudioDec" link="gst-plugins-bad-plugins-mpg123audiodec.html#GstMpg123AudioDec-struct"/>
-    <keyword type="struct" name="struct GstNeonhttpSrc" link="gst-plugins-bad-plugins-neonhttpsrc.html#GstNeonhttpSrc-struct"/>
+    <keyword type="struct" name="struct GstNeonhttpSrc" link="gst-plugins-bad-plugins-neonhttpsrc.html#GstNeonhttpSrc"/>
     <keyword type="property" name="The “location” property" link="gst-plugins-bad-plugins-neonhttpsrc.html#GstNeonhttpSrc--location"/>
     <keyword type="property" name="The “proxy” property" link="gst-plugins-bad-plugins-neonhttpsrc.html#GstNeonhttpSrc--proxy"/>
     <keyword type="property" name="The “uri” property" link="gst-plugins-bad-plugins-neonhttpsrc.html#GstNeonhttpSrc--uri"/>
@@ -513,11 +513,14 @@
     <keyword type="property" name="The “width” property" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--width"/>
     <keyword type="property" name="The “interlaced” property" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--interlaced"/>
     <keyword type="property" name="The “top-field-first” property" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--top-field-first"/>
+    <keyword type="property" name="The “framesize” property" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--framesize"/>
+    <keyword type="property" name="The “offsets” property" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--offsets"/>
+    <keyword type="property" name="The “strides” property" link="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--strides"/>
     <keyword type="struct" name="struct GstWaterRipple" link="gst-plugins-bad-plugins-waterripple.html#GstWaterRipple-struct"/>
     <keyword type="property" name="The “amplitude” property" link="gst-plugins-bad-plugins-waterripple.html#GstWaterRipple--amplitude"/>
     <keyword type="property" name="The “phase” property" link="gst-plugins-bad-plugins-waterripple.html#GstWaterRipple--phase"/>
     <keyword type="property" name="The “wavelength” property" link="gst-plugins-bad-plugins-waterripple.html#GstWaterRipple--wavelength"/>
-    <keyword type="struct" name="struct GstZBar" link="gst-plugins-bad-plugins-zbar.html#GstZBar"/>
+    <keyword type="struct" name="struct GstZBar" link="gst-plugins-bad-plugins-zbar.html#GstZBar-struct"/>
     <keyword type="property" name="The “message” property" link="gst-plugins-bad-plugins-zbar.html#GstZBar--message"/>
     <keyword type="property" name="The “cache” property" link="gst-plugins-bad-plugins-zbar.html#GstZBar--cache"/>
     <keyword type="property" name="The “attach-frame” property" link="gst-plugins-bad-plugins-zbar.html#GstZBar--attach-frame"/>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-accurip.html b/docs/plugins/html/gst-plugins-bad-plugins-accurip.html
index 053fbaa..d237171 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-accurip.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-accurip.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>accurip: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="ch01.html" title="gst-plugins-bad Elements">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-accurip.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -57,7 +57,7 @@
 </div>
 <a name="GstAccurip"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-accurip.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-aiffmux.html b/docs/plugins/html/gst-plugins-bad-plugins-aiffmux.html
index b91586e..7f44a85 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-aiffmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-aiffmux.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>aiffmux: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-aiffparse.html" title="aiffparse">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstAiffMux"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-aiffmux.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-aiffparse.html b/docs/plugins/html/gst-plugins-bad-plugins-aiffparse.html
index 75d2e66..75f74f1 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-aiffparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-aiffparse.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>aiffparse: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-accurip.html" title="accurip">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstAiffParse"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-aiffparse.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-assrender.html b/docs/plugins/html/gst-plugins-bad-plugins-assrender.html
index d54b130..92fb1a7 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-assrender.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-assrender.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>assrender: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-aiffmux.html" title="aiffmux">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-assrender.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -62,7 +62,7 @@
 </div>
 <a name="GstAssRender"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-assrender.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-audiomixer.html b/docs/plugins/html/gst-plugins-bad-plugins-audiomixer.html
index 8bdb3bd..32a5c26 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-audiomixer.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-audiomixer.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>audiomixer: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-assrender.html" title="assrender">
@@ -36,7 +36,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-audiomixer.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -74,7 +74,7 @@
 </div>
 <a name="GstAudioMixer"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-audiomixer.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -94,7 +94,7 @@
                 <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad-libs/html/gst-plugins-bad-libs-GstAggregator.html#GstAggregator">GstAggregator</a>
                     <span class="lineart">╰──</span> GstAudioAggregator
                         <span class="lineart">╰──</span> GstAudioMixer
-                            <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/gst-plugins-bad-plugins-liveadder.html#GstLiveAdder">GstLiveAdder</a>
+                            <span class="lineart">╰──</span> GstLiveAdder
 </pre>
 </div>
 <div class="refsect1">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-autoconvert.html b/docs/plugins/html/gst-plugins-bad-plugins-autoconvert.html
index 2c7bfd6..0528ed6 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-autoconvert.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-autoconvert.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>autoconvert: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-audiomixer.html" title="audiomixer">
@@ -36,7 +36,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-autoconvert.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -58,7 +58,7 @@
 </div>
 <a name="GstAutoConvert"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-autoconvert.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-bs2b.html b/docs/plugins/html/gst-plugins-bad-plugins-bs2b.html
index 9643170..620f3e3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-bs2b.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-bs2b.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>bs2b: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-autoconvert.html" title="autoconvert">
@@ -33,7 +33,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-bs2b.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-bulge.html b/docs/plugins/html/gst-plugins-bad-plugins-bulge.html
index 44426f5..ed35772 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-bulge.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-bulge.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>bulge: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-bs2b.html" title="bs2b">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-bulge.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstBulge"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-bulge.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-burn.html b/docs/plugins/html/gst-plugins-bad-plugins-burn.html
index 84bb863..274a187 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-burn.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-burn.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>burn: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-bulge.html" title="bulge">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-burn.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -57,7 +57,7 @@
 </div>
 <a name="GstBurn"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-burn.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-camerabin.html b/docs/plugins/html/gst-plugins-bad-plugins-camerabin.html
index 577dbf3..65f62a4 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-camerabin.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-camerabin.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>camerabin: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-burn.html" title="burn">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-chromium.html b/docs/plugins/html/gst-plugins-bad-plugins-chromium.html
index ee7a5bf..0ff3909 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-chromium.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-chromium.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>chromium: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-camerabin.html" title="camerabin">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-chromium.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-circle.html b/docs/plugins/html/gst-plugins-bad-plugins-circle.html
index 3a1481d..19f5546 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-circle.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-circle.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>circle: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-chromium.html" title="chromium">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-circle.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -62,7 +62,7 @@
 </div>
 <a name="GstCircle"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-circle.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html b/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html
index 1df54d4..58f8c93 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>coloreffects: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-circle.html" title="circle">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-coloreffects.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstColorEffects"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-coloreffects.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-compositor.html b/docs/plugins/html/gst-plugins-bad-plugins-compositor.html
index 9a982e3..2f0a564 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-compositor.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-compositor.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>compositor: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-coloreffects.html" title="coloreffects">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-compositor.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html b/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html
index 2ce59bf..a138c80 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>cvdilate: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-compositor.html" title="compositor">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstCvDilate"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-cvdilate.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html b/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html
index d425935..318d2f9 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>cvequalizehist: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-cverode.html" title="cverode">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstCvEqualizeHist"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-cvequalizehist.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cverode.html b/docs/plugins/html/gst-plugins-bad-plugins-cverode.html
index 5e1c293..4f4a9b4 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cverode.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cverode.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>cverode: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-cvdilate.html" title="cvdilate">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstCvErode"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-cverode.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html b/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html
index 126c31d..fc59170 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>cvlaplace: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-cvequalizehist.html" title="cvequalizehist">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-cvlaplace.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -57,12 +57,17 @@
 <td class="property_name"><a class="link" href="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--shift" title="The “shift” property">shift</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
+<tr>
+<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--mask" title="The “mask” property">mask</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
 </tbody>
 </table></div>
 </div>
 <a name="GstCvLaplace"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-cvlaplace.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -137,7 +142,7 @@
 </tr>
 <tr>
 <td><p><span class="term">details</span></p></td>
-<td>video/x-raw, format=(string)GRAY8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+<td>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
 </tbody>
 </table></div>
@@ -161,7 +166,7 @@
 </tr>
 <tr>
 <td><p><span class="term">details</span></p></td>
-<td>video/x-raw, format=(string)GRAY16_LE, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+<td>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
 </tbody>
 </table></div>
@@ -207,6 +212,14 @@
 <p>Allowed values: &gt;= 0</p>
 <p>Default value: 0</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstCvLaplace--mask"></a><h3>The <code class="literal">“mask”</code> property</h3>
+<pre class="programlisting">  “mask”                     <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Sets whether the detected edges should be used as a mask on the original input or not.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html b/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html
index 51a684c..dc5a0ca 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>cvsmooth: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-cvlaplace.html" title="cvlaplace">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-cvsmooth.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -92,7 +92,7 @@
 </div>
 <a name="GstCvSmooth"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-cvsmooth.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html b/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html
index 2a4fb38..ce3690a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>cvsobel: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-cvsmooth.html" title="cvsmooth">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-cvsobel.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -57,12 +57,17 @@
 <td class="property_name"><a class="link" href="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--y-order" title="The “y-order” property">y-order</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
+<tr>
+<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--mask" title="The “mask” property">mask</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
 </tbody>
 </table></div>
 </div>
 <a name="GstCvSobel"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-cvsobel.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -137,7 +142,7 @@
 </tr>
 <tr>
 <td><p><span class="term">details</span></p></td>
-<td>video/x-raw, format=(string)GRAY8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+<td>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
 </tbody>
 </table></div>
@@ -161,7 +166,7 @@
 </tr>
 <tr>
 <td><p><span class="term">details</span></p></td>
-<td>video/x-raw, format=(string)GRAY16_LE, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+<td>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
 </tr>
 </tbody>
 </table></div>
@@ -207,6 +212,14 @@
 <p>Allowed values: &gt;= G_MAXULONG</p>
 <p>Default value: 0</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstCvSobel--mask"></a><h3>The <code class="literal">“mask”</code> property</h3>
+<pre class="programlisting">  “mask”                     <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Sets whether the detected derivative edges should be used as a mask on the original input or not.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dataurisrc.html b/docs/plugins/html/gst-plugins-bad-plugins-dataurisrc.html
index 02dbe96..b71b2c5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dataurisrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dataurisrc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>dataurisrc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-cvsobel.html" title="cvsobel">
@@ -36,7 +36,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-dataurisrc.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -52,7 +52,7 @@
 </div>
 <a name="GstDataURISrc"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-dataurisrc.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-diffuse.html b/docs/plugins/html/gst-plugins-bad-plugins-diffuse.html
index 96b3615..1bbc46b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-diffuse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-diffuse.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>diffuse: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-dataurisrc.html" title="dataurisrc">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-diffuse.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstDiffuse"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-diffuse.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dilate.html b/docs/plugins/html/gst-plugins-bad-plugins-dilate.html
index 56409f3..99aec3d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dilate.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dilate.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>dilate: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-diffuse.html" title="diffuse">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-dilate.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -57,7 +57,7 @@
 </div>
 <a name="GstDilate"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-dilate.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dodge.html b/docs/plugins/html/gst-plugins-bad-plugins-dodge.html
index 2d1da01..5ffd277 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dodge.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dodge.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>dodge: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-dilate.html" title="dilate">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-dodge.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstDodge"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-dodge.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html b/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html
index 54f4957..9ec2389 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>dtmfdetect: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-dodge.html" title="dodge">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstDtmfDetect"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-dtmfdetect.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html b/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html
index 7dc3912..0a083af 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>dtsdec: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-dtmfdetect.html" title="dtmfdetect">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-dtsdec.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstDtsDec"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-dtsdec.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
index 0bddfdd..a817f4d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>dvbsrc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-dtsdec.html" title="dtsdec">
@@ -36,7 +36,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-dvbsrc.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -310,7 +310,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-dvbsrc.signals"></a><h2>Signals</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="signals_return">
 <col width="300px" class="signals_name">
@@ -342,7 +342,7 @@
 </div>
 <a name="GstDvbSrc"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-dvbsrc.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dvdspu.html b/docs/plugins/html/gst-plugins-bad-plugins-dvdspu.html
index b61e146..88c5d7d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dvdspu.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dvdspu.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>dvdspu: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-dvbsrc.html" title="dvbsrc">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstDVDSpu"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-dvdspu.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html b/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html
index 112d46a..e8bae8a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>edgedetect: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-exclusion.html" title="exclusion">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-exclusion.html b/docs/plugins/html/gst-plugins-bad-plugins-exclusion.html
index ebb51eb..67178cc 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-exclusion.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-exclusion.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>exclusion: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-dvdspu.html" title="dvdspu">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-exclusion.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -57,7 +57,7 @@
 </div>
 <a name="GstExclusion"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-exclusion.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-faac.html b/docs/plugins/html/gst-plugins-bad-plugins-faac.html
index ea9bccc..7314a9e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-faac.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-faac.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>faac: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-edgedetect.html" title="edgedetect">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-faac.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -87,7 +87,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-faac.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-faad.html b/docs/plugins/html/gst-plugins-bad-plugins-faad.html
index 403cee7..abe78e0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-faad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-faad.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>faad: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-faac.html" title="faac">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstFaad"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-faad.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html b/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html
index 9fd9a38..7494189 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>faceblur: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-faad.html" title="faad">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html b/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html
index f972681..e0a9194 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>facedetect: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-faceblur.html" title="faceblur">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-festival.html b/docs/plugins/html/gst-plugins-bad-plugins-festival.html
index 062af12..0948314 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-festival.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-festival.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>festival: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-facedetect.html" title="facedetect">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstFestival"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-festival.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-fisheye.html b/docs/plugins/html/gst-plugins-bad-plugins-fisheye.html
index fcd664a..acc45ff 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-fisheye.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-fisheye.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>fisheye: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-festival.html" title="festival">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstFisheye"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-fisheye.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-fpsdisplaysink.html b/docs/plugins/html/gst-plugins-bad-plugins-fpsdisplaysink.html
index 6e7c808..6b0d4f3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-fpsdisplaysink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-fpsdisplaysink.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>fpsdisplaysink: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-fisheye.html" title="fisheye">
@@ -37,7 +37,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-fpsdisplaysink.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -106,7 +106,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-fpsdisplaysink.signals"></a><h2>Signals</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="signals_return">
 <col width="300px" class="signals_name">
@@ -121,7 +121,7 @@
 </div>
 <a name="GstFPSDisplaySink"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-fpsdisplaysink.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -344,7 +344,7 @@
 <p>Signals the application about the measured fps</p>
 <div class="refsect3">
 <a name="id-1.2.38.13.2.5"></a><h4>Parameters</h4>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="parameters_name">
 <col class="parameters_description">
@@ -380,7 +380,6 @@
 </table></div>
 </div>
 <p>Flags: <a href="https://developer.gnome.org/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
-<p class="since">Since: 0.10.20</p>
 </div>
 </div>
 </div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html b/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html
index 66853ce..7156792 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>gaussianblur: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-fpsdisplaysink.html" title="fpsdisplaysink">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html b/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html
index 20cc166..1fb5061 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>jpegparse: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-gaussianblur.html" title="gaussianblur">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-jpegparse.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="functions_return">
 <col class="functions_name">
@@ -77,7 +77,7 @@
 </div>
 <a name="GstJpegParse"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-jpegparse.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-kaleidoscope.html b/docs/plugins/html/gst-plugins-bad-plugins-kaleidoscope.html
index 98b9a28..ac5aca0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-kaleidoscope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-kaleidoscope.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>kaleidoscope: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-jpegparse.html" title="jpegparse">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-kaleidoscope.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -62,7 +62,7 @@
 </div>
 <a name="GstKaleidoscope"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-kaleidoscope.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-liveadder.html b/docs/plugins/html/gst-plugins-bad-plugins-liveadder.html
index f51fe92..d8f512b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-liveadder.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-liveadder.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>liveadder: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-kaleidoscope.html" title="kaleidoscope">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-marble.html b/docs/plugins/html/gst-plugins-bad-plugins-marble.html
index c177cc9..2228dc9 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-marble.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-marble.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>marble: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-liveadder.html" title="liveadder">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-marble.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -67,7 +67,7 @@
 </div>
 <a name="GstMarble"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-marble.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html b/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html
index e8f3aa0..793ba8f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mimdec: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-mimenc.html" title="mimenc">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstMimDec"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-mimdec.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html b/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html
index 649662f..5a4af8f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mimenc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-marble.html" title="marble">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-mimenc.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstMimEnc"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-mimenc.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mirror.html b/docs/plugins/html/gst-plugins-bad-plugins-mirror.html
index e18dfaf..3a7241a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mirror.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mirror.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mirror: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-mimdec.html" title="mimdec">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-mirror.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstMirror"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-mirror.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-modplug.html b/docs/plugins/html/gst-plugins-bad-plugins-modplug.html
index 5829ac1..01d1f09 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-modplug.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-modplug.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>modplug: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-mirror.html" title="mirror">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-modplug.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -108,7 +108,7 @@
 </div>
 <a name="GstModPlug"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-modplug.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html b/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html
index 6e336d8..7141ebd 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mpeg2enc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-modplug.html" title="modplug">
@@ -36,7 +36,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-mpeg2enc.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -218,7 +218,7 @@
 </div>
 <a name="GstMpeg2enc"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-mpeg2enc.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mpegpsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-mpegpsmux.html
index f27f8ea..ead2d90 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mpegpsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mpegpsmux.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mpegpsmux: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-mpeg2enc.html" title="mpeg2enc">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-mpegpsmux.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mpegtsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-mpegtsmux.html
index f95dee2..e596d07 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mpegtsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mpegtsmux.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mpegtsmux: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-mpegpsmux.html" title="mpegpsmux">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-mpegtsmux.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -149,6 +149,10 @@
 </tr>
 <tr>
 <td><p><span class="term"></span></p></td>
+<td> video/x-h265, stream-format=(string)byte-stream, alignment=(string){ au, nal }</td>
+</tr>
+<tr>
+<td><p><span class="term"></span></p></td>
 <td> audio/mpeg, parsed=(boolean)true, mpegversion=(int){ 1, 2 }</td>
 </tr>
 <tr>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mpg123audiodec.html b/docs/plugins/html/gst-plugins-bad-plugins-mpg123audiodec.html
deleted file mode 100644
index 3b7b281..0000000
--- a/docs/plugins/html/gst-plugins-bad-plugins-mpg123audiodec.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>mpg123audiodec: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
-<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
-<link rel="prev" href="gst-plugins-bad-plugins-mplex.html" title="mplex">
-<link rel="next" href="gst-plugins-bad-plugins-neonhttpsrc.html" title="neonhttpsrc">
-<meta name="generator" content="GTK-Doc V1.24 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-mpg123audiodec.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-mpg123audiodec.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-mplex.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-neonhttpsrc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-bad-plugins-mpg123audiodec"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-mpg123audiodec.top_of_page"></a>mpg123audiodec</span></h2>
-<p>mpg123audiodec</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<a name="GstMpg123AudioDec"></a><div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpg123audiodec.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody><tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-mpg123audiodec.html#GstMpg123AudioDec-struct" title="struct GstMpg123AudioDec">GstMpg123AudioDec</a></td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpg123audiodec.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen">    <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
-    <span class="lineart">╰──</span> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
-        <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
-            <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
-                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstaudiodecoder.html#GstAudioDecoder">GstAudioDecoder</a>
-                    <span class="lineart">╰──</span> GstMpg123AudioDec
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpg123audiodec.description"></a><h2>Description</h2>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<div class="refsect2">
-<a name="id-1.2.52.6.2.1"></a><h3>Element Information</h3>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term">plugin</span></p></td>
-<td>
-            mpg123
-          </td>
-</tr>
-<tr>
-<td><p><span class="term">author</span></p></td>
-<td>Carlos Rafael Giani &lt;dv@pseudoterminal.org&gt;</td>
-</tr>
-<tr>
-<td><p><span class="term">class</span></p></td>
-<td>Codec/Decoder/Audio</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="id-1.2.52.6.2.2"></a><h3>Element Pads</h3>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term">name</span></p></td>
-<td>sink</td>
-</tr>
-<tr>
-<td><p><span class="term">direction</span></p></td>
-<td>sink</td>
-</tr>
-<tr>
-<td><p><span class="term">presence</span></p></td>
-<td>always</td>
-</tr>
-<tr>
-<td><p><span class="term">details</span></p></td>
-<td>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ], rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ], parsed=(boolean)true</td>
-</tr>
-</tbody>
-</table></div>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term">name</span></p></td>
-<td>src</td>
-</tr>
-<tr>
-<td><p><span class="term">direction</span></p></td>
-<td>source</td>
-</tr>
-<tr>
-<td><p><span class="term">presence</span></p></td>
-<td>always</td>
-</tr>
-<tr>
-<td><p><span class="term">details</span></p></td>
-<td>audio/x-raw, format=(string){ S16LE, U16LE, S32LE, U32LE, S24LE, U24LE, F32LE }, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ], layout=(string)interleaved</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpg123audiodec.functions_details"></a><h2>Functions</h2>
-<p></p>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpg123audiodec.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="GstMpg123AudioDec-struct"></a><h3>struct GstMpg123AudioDec</h3>
-<pre class="programlisting">struct GstMpg123AudioDec;</pre>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.24</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mplex.html b/docs/plugins/html/gst-plugins-bad-plugins-mplex.html
index a9ad171..7f6cbf8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mplex.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mplex.html
@@ -3,11 +3,11 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mplex: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-mpegtsmux.html" title="mpegtsmux">
-<link rel="next" href="gst-plugins-bad-plugins-mpg123audiodec.html" title="mpg123audiodec">
+<link rel="next" href="gst-plugins-bad-plugins-neonhttpsrc.html" title="neonhttpsrc">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -22,7 +22,7 @@
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="gst-plugins-bad-plugins-mpegtsmux.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-mpg123audiodec.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-neonhttpsrc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="gst-plugins-bad-plugins-mplex"></a><div class="titlepage"></div>
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-mplex.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -82,7 +82,7 @@
 </div>
 <a name="GstMplex"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-mplex.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-neonhttpsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-neonhttpsrc.html
index 8d0a65d..251915c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-neonhttpsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-neonhttpsrc.html
@@ -3,10 +3,10 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>neonhttpsrc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
-<link rel="prev" href="gst-plugins-bad-plugins-mpg123audiodec.html" title="mpg123audiodec">
+<link rel="prev" href="gst-plugins-bad-plugins-mplex.html" title="mplex">
 <link rel="next" href="gst-plugins-bad-plugins-ofa.html" title="ofa">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -15,14 +15,13 @@
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-neonhttpsrc.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-neonhttpsrc.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-neonhttpsrc.description" class="shortcut">Description</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
                   <a href="#gst-plugins-bad-plugins-neonhttpsrc.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
                   <a href="#gst-plugins-bad-plugins-neonhttpsrc.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-mpg123audiodec.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-mplex.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="gst-plugins-bad-plugins-ofa.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
@@ -36,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-neonhttpsrc.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -122,31 +121,20 @@
 </tbody>
 </table></div>
 </div>
-<a name="GstNeonhttpSrc"></a><div class="refsect1">
+<div class="refsect1">
 <a name="gst-plugins-bad-plugins-neonhttpsrc.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
 </colgroup>
 <tbody><tr>
 <td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-neonhttpsrc.html#GstNeonhttpSrc-struct" title="struct GstNeonhttpSrc">GstNeonhttpSrc</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-neonhttpsrc.html#GstNeonhttpSrc" title="struct GstNeonhttpSrc">GstNeonhttpSrc</a></td>
 </tr></tbody>
 </table></div>
 </div>
 <div class="refsect1">
-<a name="gst-plugins-bad-plugins-neonhttpsrc.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen">    <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
-    <span class="lineart">╰──</span> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
-        <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
-            <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
-                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseSrc.html">GstBaseSrc</a>
-                    <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstPushSrc.html">GstPushSrc</a>
-                        <span class="lineart">╰──</span> GstNeonhttpSrc
-</pre>
-</div>
-<div class="refsect1">
 <a name="gst-plugins-bad-plugins-neonhttpsrc.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
 <p>
 GstNeonhttpSrc implements
@@ -157,7 +145,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.53.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.52.6.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -183,7 +171,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.53.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.52.6.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -218,8 +206,44 @@
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-neonhttpsrc.other_details"></a><h2>Types and Values</h2>
 <div class="refsect2">
-<a name="GstNeonhttpSrc-struct"></a><h3>struct GstNeonhttpSrc</h3>
-<pre class="programlisting">struct GstNeonhttpSrc;</pre>
+<a name="GstNeonhttpSrc"></a><h3>struct GstNeonhttpSrc</h3>
+<pre class="programlisting">struct GstNeonhttpSrc {
+  GstPushSrc element;
+
+  /* socket */
+  ne_session *session;
+  ne_request *request;
+  ne_uri uri;
+  gchar *location;
+  gchar *query_string;
+  ne_uri proxy;
+  gchar *user_agent;
+  gchar **cookies;
+
+  guint64 content_size;
+
+  gboolean eos;
+
+  /* whether to request icecast metadata */
+  gboolean iradio_mode;
+
+  /* enable Neon HTTP redirects (HTTP 302 status code) */
+  gboolean automatic_redirect;
+
+  /* enable Neon HTTP debug messages */
+  gboolean neon_http_debug;
+
+  /* accept self-signed certificates */
+  gboolean accept_self_signed;
+
+  gint64 read_position;
+  gboolean seekable;
+
+  /* seconds before timing out when connecting or reading to/from a socket */
+  guint connect_timeout;
+  guint read_timeout;
+};
+</pre>
 </div>
 </div>
 <div class="refsect1">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-ofa.html b/docs/plugins/html/gst-plugins-bad-plugins-ofa.html
index faa4a32..4d367a0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-ofa.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-ofa.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ofa: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-neonhttpsrc.html" title="neonhttpsrc">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-ofa.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -51,7 +51,7 @@
 </div>
 <a name="GstOFA"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-ofa.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -78,7 +78,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.54.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.53.7.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -104,7 +104,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.54.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.53.7.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-openalsink.html b/docs/plugins/html/gst-plugins-bad-plugins-openalsink.html
index 11e753d..4effea8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-openalsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-openalsink.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>openalsink: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-openalsrc.html" title="openalsrc">
@@ -36,7 +36,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.56.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.55.3.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -62,7 +62,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.56.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.55.3.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-openalsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-openalsrc.html
index 41f4626..8523bff 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-openalsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-openalsrc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>openalsrc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-ofa.html" title="ofa">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-openalsrc.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -59,7 +59,7 @@
 </div>
 <a name="GstOpenalSrc"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-openalsrc.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -88,7 +88,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.55.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.54.7.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -114,7 +114,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.55.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.54.7.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html b/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html
index 80147c1..255cd05 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>opencvtextoverlay: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-templatematch.html" title="templatematch">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-opencvtextoverlay.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -93,7 +93,7 @@
 </div>
 <a name="GstOpenalSrc"></a><a name="GstOpencvTextOverlay"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-opencvtextoverlay.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -121,7 +121,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.80.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.79.8.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -147,7 +147,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.80.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.79.8.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-opusdec.html b/docs/plugins/html/gst-plugins-bad-plugins-opusdec.html
index f6717a8..c12e055 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-opusdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-opusdec.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>opusdec: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-openalsink.html" title="openalsink">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-opusdec.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -57,7 +57,7 @@
 </div>
 <a name="GstOpenalSrc"></a><a name="GstOpencvTextOverlay"></a><a name="GstOpusDec"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-opusdec.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -83,7 +83,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.57.9.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.56.9.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -109,7 +109,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.57.9.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.56.9.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -189,7 +189,7 @@
 <div class="refsect2">
 <a name="GstOpusDec--use-inband-fec"></a><h3>The <code class="literal">“use-inband-fec”</code> property</h3>
 <pre class="programlisting">  “use-inband-fec”           <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Use forward error correction if available.</p>
+<p>Use forward error correction if available (needs PLC enabled).</p>
 <p>Flags: Read / Write</p>
 <p>Default value: FALSE</p>
 </div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-opusenc.html b/docs/plugins/html/gst-plugins-bad-plugins-opusenc.html
index 7e8fd44..3807433 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-opusenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-opusenc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>opusenc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-opusdec.html" title="opusdec">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-opusenc.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -112,7 +112,7 @@
 </div>
 <a name="GstOpenalSrc"></a><a name="GstOpencvTextOverlay"></a><a name="GstOpusDec"></a><a name="GstOpusEnc"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-opusenc.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -138,7 +138,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.58.10.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.57.10.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -164,7 +164,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.58.10.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.57.10.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-opusparse.html b/docs/plugins/html/gst-plugins-bad-plugins-opusparse.html
index da892bf..7e28441 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-opusparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-opusparse.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>opusparse: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-opusenc.html" title="opusenc">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstOpenalSrc"></a><a name="GstOpencvTextOverlay"></a><a name="GstOpusDec"></a><a name="GstOpusEnc"></a><a name="GstOpusParse"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-opusparse.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -60,7 +60,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.59.10.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.58.10.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -86,7 +86,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.59.10.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.58.10.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-pcapparse.html b/docs/plugins/html/gst-plugins-bad-plugins-pcapparse.html
index b4fea18..4176e8a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-pcapparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-pcapparse.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>pcapparse: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-rtpopusdepay.html" title="rtpopusdepay">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-pcapparse.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -80,7 +80,7 @@
 </div>
 <a name="GstPcapParse"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-pcapparse.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -107,7 +107,7 @@
 <a class="link" href="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--src-port" title="The “src-port” property"><span class="type">“src-port”</span></a> and <a class="link" href="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--dst-port" title="The “dst-port” property"><span class="type">“dst-port”</span></a> to restrict which packets
 should be included.</p>
 <div class="refsect2">
-<a name="id-1.2.62.7.3"></a><h3>Example pipelines</h3>
+<a name="id-1.2.61.7.3"></a><h3>Example pipelines</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -126,7 +126,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.62.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.61.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -152,7 +152,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.62.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.61.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-pinch.html b/docs/plugins/html/gst-plugins-bad-plugins-pinch.html
index 34e857d..763aee5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-pinch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-pinch.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>pinch: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-pcapparse.html" title="pcapparse">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-pinch.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstPinch"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-pinch.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -78,7 +78,7 @@
 <a name="gst-plugins-bad-plugins-pinch.description"></a><h2>Description</h2>
 <p>Pinch applies a 'pinch' geometric transform to the image.</p>
 <div class="refsect2">
-<a name="id-1.2.63.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.62.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -94,7 +94,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.63.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.62.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +120,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.63.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.62.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
index dcc53d0..aed8849 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-aiff.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>aiff: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="ch02.html" title="gst-plugins-bad Plugins">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 72320a7..538efef 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-assrender.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>assrender: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-autoconvert.html" title="autoconvert">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 6b33924..0d3f2ac 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiomixer.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>audiomixer: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-aiff.html" title="aiff">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 2b6061a..953cca5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-audiovisualizers.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>audiovisualizers: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-audiomixer.html" title="audiomixer">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 624a615..183958f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-autoconvert.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>autoconvert: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-audiovisualizers.html" title="audiovisualizers">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 507d4e6..deb21eb 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bayer.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>bayer: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-assrender.html" title="assrender">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 3fb6ab2..d85d680 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bs2b.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>bs2b: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-bayer.html" title="bayer">
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 e562880..65af93a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-bz2.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>bz2: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-bs2b.html" title="bs2b">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 4cbbcc7..6690e87 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-camerabin.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>camerabin: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-bz2.html" title="bz2">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 2bcbc4b..279e398 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-coloreffects.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>coloreffects: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-camerabin.html" title="camerabin">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 083ef57..fa16f12 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-curl.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>curl: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-coloreffects.html" title="coloreffects">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 3af5562..c605667 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dataurisrc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>dataurisrc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-curl.html" title="curl">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 fe51c1a..a75207d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-debugutilsbad.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>debugutilsbad: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-dataurisrc.html" title="dataurisrc">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 6b3fa39..f626b73 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dtsdec.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>dtsdec: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-debugutilsbad.html" title="debugutilsbad">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 30cfc9e..cea5582 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvb.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>dvb: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-dtsdec.html" title="dtsdec">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 b222ced..7b631d7 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-dvdspu.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>dvdspu: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-dvb.html" title="dvb">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 a5083bc..b5f5a83 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faac.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>faac: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-dvdspu.html" title="dvdspu">
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 0d15276..1576cb0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-faad.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>faad: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-faac.html" title="faac">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 684cf86..652b6e8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-festival.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>festival: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-faad.html" title="faad">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 54a6782..78007ab 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gaudieffects.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>gaudieffects: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-festival.html" title="festival">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 80d2a5d..6182914 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-geometrictransform.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>geometrictransform: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-gaudieffects.html" title="gaudieffects">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 b5d60af..2aa1d9b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-gsm.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>gsm: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-geometrictransform.html" title="geometrictransform">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 8cc647e..821de50 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-jpegformat.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>jpegformat: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-gsm.html" title="gsm">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 16908cf..80ec5ce 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mimic.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mimic: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-jpegformat.html" title="jpegformat">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 effcab5..5f2bc44 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mms.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mms: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-mimic.html" title="mimic">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 6f0ca22..edefe80 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-modplug.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>modplug: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-mms.html" title="mms">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 ffbc078..f357dde 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpeg2enc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mpeg2enc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-modplug.html" title="modplug">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 3f0001b..a332a2b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegpsmux.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mpegpsmux: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-mpeg2enc.html" title="mpeg2enc">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 37eb8ac..03c748f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mpegtsmux.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mpegtsmux: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-mpegpsmux.html" title="mpegpsmux">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 8456da8..2538b29 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-mplex.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>mplex: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-mpegtsmux.html" title="mpegtsmux">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html
index 3f33c9e..b6865d2 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>neon: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-mplex.html" title="mplex">
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 887898b..11863c5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-ofa.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>ofa: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-neon.html" title="neon">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 219f394..e36b09b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-openal.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>openal: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-ofa.html" title="ofa">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 b2f2c11..e334866 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opencv.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>opencv: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-openal.html" title="openal">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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-opus.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opus.html
index 7fdc0ab..9e47666 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-opus.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-opus.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>opus: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-opencv.html" title="opencv">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 695747b..3d60dda 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-pcapparse.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>pcapparse: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-opus.html" title="opus">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 a97eb88..b970a8c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rawparse.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>rawparse: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-pcapparse.html" title="pcapparse">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 60362c5..91cf930 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rfbsrc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>rfbsrc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-rawparse.html" title="rawparse">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 73e707b..0f259fc 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-rtmp.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>rtmp: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-rfbsrc.html" title="rfbsrc">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 53d28f7..4dd4106 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-sdp.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>sdp: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-rtmp.html" title="rtmp">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 2b55014..f7a4e2d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-shm.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>shm: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-sdp.html" title="sdp">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 d398954..d5263c0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-soundtouch.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>soundtouch: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-shm.html" title="shm">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 6e9cf8e..f34c65e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-speed.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>speed: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-soundtouch.html" title="soundtouch">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 46f2cc6..de02bc1 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voaacenc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>voaacenc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-speed.html" title="speed">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 27a086c..d9f88e5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>voamrwbenc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-voaacenc.html" title="voaacenc">
@@ -42,7 +42,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.7.2</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 9ea9485..999d285 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>zbar: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
 <link rel="prev" href="gst-plugins-bad-plugins-plugin-voamrwbenc.html" title="voamrwbenc">
@@ -41,7 +41,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.7.0.1</td>
+<td>1.7.2</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
@@ -49,7 +49,7 @@
 </tr>
 <tr>
 <td><p><span class="term">package</span></p></td>
-<td>GStreamer Bad Plug-ins git</td>
+<td>GStreamer Bad Plug-ins source release</td>
 </tr>
 <tr>
 <td><p><span class="term">origin</span></p></td>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html b/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html
index 9936792..15c27a1 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>pyramidsegment: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-pinch.html" title="pinch">
@@ -36,7 +36,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.64.4.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.63.4.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -62,7 +62,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.64.4.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.63.4.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rfbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-rfbsrc.html
index 1f72c34..0f9fe63 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rfbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rfbsrc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>rfbsrc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-pyramidsegment.html" title="pyramidsegment">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-rfbsrc.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -110,7 +110,7 @@
 </div>
 <a name="GstRfbSrc"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-rfbsrc.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -137,7 +137,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.65.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.64.7.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -163,7 +163,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.65.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.64.7.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
index 75d17f3..61029d3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>rtmpsink: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-rfbsrc.html" title="rfbsrc">
@@ -36,7 +36,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-rtmpsink.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -52,7 +52,7 @@
 </div>
 <a name="GstRTMPSink"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-rtmpsink.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -84,7 +84,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.66.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.65.8.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -110,7 +110,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.66.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.65.8.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
index 4a3e760..a0da564 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>rtmpsrc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-rtmpsink.html" title="rtmpsink">
@@ -36,7 +36,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-rtmpsrc.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -52,7 +52,7 @@
 </div>
 <a name="GstRTMPSrc"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-rtmpsrc.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -85,7 +85,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.67.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.66.8.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -111,7 +111,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.67.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.66.8.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtpopusdepay.html b/docs/plugins/html/gst-plugins-bad-plugins-rtpopusdepay.html
index f601bd8..e7ec327 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtpopusdepay.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtpopusdepay.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>rtpopusdepay: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-rtpopuspay.html" title="rtpopuspay">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstOpenalSrc"></a><a name="GstOpencvTextOverlay"></a><a name="GstOpusDec"></a><a name="GstOpusEnc"></a><a name="GstOpusParse"></a><a name="GstRTPOpusDepay"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-rtpopusdepay.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -60,7 +60,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.61.11.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.60.11.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -86,7 +86,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.61.11.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.60.11.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtpopuspay.html b/docs/plugins/html/gst-plugins-bad-plugins-rtpopuspay.html
index 5e4bad7..5cb199e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtpopuspay.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtpopuspay.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>rtpopuspay: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-opusparse.html" title="opusparse">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstOpenalSrc"></a><a name="GstOpencvTextOverlay"></a><a name="GstOpusDec"></a><a name="GstOpusEnc"></a><a name="GstOpusParse"></a><a name="GstRTPOpusDepay"></a><a name="GstRtpOPUSPay"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-rtpopuspay.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -60,7 +60,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.60.12.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.59.12.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -86,7 +86,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.60.12.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.59.12.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html b/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html
index a11eaae..fcc629a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>sdpdemux: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-shmsrc.html" title="shmsrc">
@@ -36,7 +36,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-sdpdemux.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -68,7 +68,7 @@
 </div>
 <a name="GstSDPDemux"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-sdpdemux.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -108,7 +108,7 @@
 <p>sdpdemux acts like a live element and will therefore only generate data in the 
 PLAYING state.</p>
 <div class="refsect2">
-<a name="id-1.2.70.8.5"></a><h3>Example launch line</h3>
+<a name="id-1.2.69.8.5"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -125,7 +125,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.70.8.6.1"></a><h3>Element Information</h3>
+<a name="id-1.2.69.8.6.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -151,7 +151,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.70.8.6.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.69.8.6.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html b/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html
index f55f712..caa3fe9 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>shmsink: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-rtmpsrc.html" title="rtmpsrc">
@@ -36,7 +36,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-shmsink.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -74,7 +74,7 @@
 </div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-shmsink.signals"></a><h2>Signals</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="signals_return">
 <col width="300px" class="signals_name">
@@ -96,7 +96,7 @@
 </div>
 <a name="GstShmSink"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-shmsink.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -122,7 +122,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.68.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.67.8.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -148,7 +148,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.68.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.67.8.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html
index 72e88ef..f40773f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>shmsrc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-shmsink.html" title="shmsink">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-shmsrc.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -64,7 +64,7 @@
 </div>
 <a name="GstShmSrc"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-shmsrc.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -91,7 +91,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.69.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.68.7.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -117,7 +117,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.69.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.68.7.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-solarize.html b/docs/plugins/html/gst-plugins-bad-plugins-solarize.html
index 83a0f2e..0de876d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-solarize.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-solarize.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>solarize: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-sdpdemux.html" title="sdpdemux">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-solarize.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -67,7 +67,7 @@
 </div>
 <a name="GstSolarize"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-solarize.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -93,7 +93,7 @@
 <a name="gst-plugins-bad-plugins-solarize.description"></a><h2>Description</h2>
 <p>Solarize does a smart inverse in a video stream in realtime.</p>
 <div class="refsect2">
-<a name="id-1.2.71.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.70.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -109,7 +109,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.71.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.70.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -135,7 +135,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.71.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.70.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html b/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html
index e5fc0ff..5a68b2c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>spacescope: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-solarize.html" title="solarize">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-spacescope.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstSpaceScope"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-spacescope.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -76,7 +76,7 @@
 <p>Spacescope is a simple audio visualisation element. It maps the left and
 right channel to x and y coordinates.</p>
 <div class="refsect2">
-<a name="id-1.2.72.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.71.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -92,7 +92,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.72.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.71.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -118,7 +118,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.72.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.71.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html b/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html
index e1829f9..fbdb602 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>spectrascope: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-spacescope.html" title="spacescope">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstSpectraScope"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-spectrascope.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -60,7 +60,7 @@
 <p>Spectrascope is a simple spectrum visualisation element. It renders the
 frequency spectrum as a series of bars.</p>
 <div class="refsect2">
-<a name="id-1.2.73.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.72.6.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -76,7 +76,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.73.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.72.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -102,7 +102,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.73.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.72.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-speed.html b/docs/plugins/html/gst-plugins-bad-plugins-speed.html
index 96e19eb..b3b55d4 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-speed.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-speed.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>speed: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-synaescope.html" title="synaescope">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-speed.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstSpeed"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-speed.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -78,7 +78,7 @@
 element (but relies on the decoder/demuxer to handle this correctly, also
 requires a fairly up-to-date gst-plugins-base, as of February 2007).</p>
 <div class="refsect2">
-<a name="id-1.2.75.7.4"></a><h3>Example launch line</h3>
+<a name="id-1.2.74.7.4"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -94,7 +94,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.75.7.5.1"></a><h3>Element Information</h3>
+<a name="id-1.2.74.7.5.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +120,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.75.7.5.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.74.7.5.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-sphere.html b/docs/plugins/html/gst-plugins-bad-plugins-sphere.html
index cb03c49..fec16b6 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-sphere.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-sphere.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>sphere: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-speed.html" title="speed">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-sphere.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstSphere"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-sphere.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -78,7 +78,7 @@
 <a name="gst-plugins-bad-plugins-sphere.description"></a><h2>Description</h2>
 <p>The sphere element applies a 'sphere' geometric transform to the image.</p>
 <div class="refsect2">
-<a name="id-1.2.76.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.75.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -94,7 +94,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.76.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.75.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +120,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.76.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.75.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-square.html b/docs/plugins/html/gst-plugins-bad-plugins-square.html
index 48cbe54..609624e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-square.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-square.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>square: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-sphere.html" title="sphere">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-square.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -62,7 +62,7 @@
 </div>
 <a name="GstSquare"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-square.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -89,7 +89,7 @@
 <a name="gst-plugins-bad-plugins-square.description"></a><h2>Description</h2>
 <p>The square element distorts the center part of the image into a square.</p>
 <div class="refsect2">
-<a name="id-1.2.77.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.76.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -105,7 +105,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.77.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.76.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -131,7 +131,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.77.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.76.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-stretch.html b/docs/plugins/html/gst-plugins-bad-plugins-stretch.html
index 5d20b48..9559a46 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-stretch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-stretch.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>stretch: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-square.html" title="square">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-stretch.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstStretch"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-stretch.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -78,7 +78,7 @@
 <a name="gst-plugins-bad-plugins-stretch.description"></a><h2>Description</h2>
 <p>The stretch element stretches the image in a circle around the center point.</p>
 <div class="refsect2">
-<a name="id-1.2.78.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.77.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -94,7 +94,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.78.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.77.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +120,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.78.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.77.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html b/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html
index f8db57a..65ba20b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>synaescope: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-spectrascope.html" title="spectrascope">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstSynaeScope"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-synaescope.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -60,7 +60,7 @@
 <p>Synaescope is an audio visualisation element. It analyzes frequencies and
 out-of phase properties of audio and draws this as clouds of stars.</p>
 <div class="refsect2">
-<a name="id-1.2.74.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.73.6.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -76,7 +76,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.74.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.73.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -102,7 +102,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.74.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.73.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html b/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html
index 258c897..d5fcf4f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>templatematch: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-stretch.html" title="stretch">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-templatematch.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -63,7 +63,7 @@
 </div>
 <a name="GstSynaeScope"></a><a name="GstTemplateMatch"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-templatematch.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -91,7 +91,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.79.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.78.8.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -117,7 +117,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.79.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.78.8.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html b/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html
index 6fa8327..f0d0bc3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>tunnel: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-opencvtextoverlay.html" title="opencvtextoverlay">
@@ -34,7 +34,7 @@
 </tr></table></div>
 <a name="GstTunnel"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-tunnel.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -63,7 +63,7 @@
 <p>Tunnel is a geometric image transform element. It applies a light tunnel
 effect.</p>
 <div class="refsect2">
-<a name="id-1.2.81.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.80.6.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -79,7 +79,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.81.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.80.6.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -105,7 +105,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.81.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.80.6.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-twirl.html b/docs/plugins/html/gst-plugins-bad-plugins-twirl.html
index ff5bd59..5776c03 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-twirl.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-twirl.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>twirl: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-tunnel.html" title="tunnel">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-twirl.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstTwirl"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-twirl.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -78,7 +78,7 @@
 <a name="gst-plugins-bad-plugins-twirl.description"></a><h2>Description</h2>
 <p>The twirl element twists the image from the center out.</p>
 <div class="refsect2">
-<a name="id-1.2.82.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.81.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -94,7 +94,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.82.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.81.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -120,7 +120,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.82.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.81.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html b/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html
index d021987..67d8508 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>videoparse: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-twirl.html" title="twirl">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-videoparse.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -112,12 +112,29 @@
 <td class="property_name"><a class="link" href="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--top-field-first" title="The “top-field-first” property">top-field-first</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
+<tr>
+<td class="property_type"><a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--framesize" title="The “framesize” property">framesize</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--offsets" title="The “offsets” property">offsets</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-videoparse.html#GstVideoParse--strides" title="The “strides” property">strides</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
 </tbody>
 </table></div>
 </div>
 <a name="GstVideoParse"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-videoparse.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -144,7 +161,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.83.7.3.1"></a><h3>Element Information</h3>
+<a name="id-1.2.82.7.3.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -170,7 +187,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.83.7.3.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.82.7.3.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -352,6 +369,30 @@
 <p>Flags: Read / Write</p>
 <p>Default value: TRUE</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstVideoParse--framesize"></a><h3>The <code class="literal">“framesize”</code> property</h3>
+<pre class="programlisting">  “framesize”                <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
+<p>Size of an image in raw stream (0: default).</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstVideoParse--offsets"></a><h3>The <code class="literal">“offsets”</code> property</h3>
+<pre class="programlisting">  “offsets”                  <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Offset of each planes in bytes using string format: 'o0,o1,o2,o3'.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstVideoParse--strides"></a><h3>The <code class="literal">“strides”</code> property</h3>
+<pre class="programlisting">  “strides”                  <a href="https://developer.gnome.org/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Stride of each planes in bytes using string format: 's0,s1,s2,s3'.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
 </div>
 </div>
 <div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html b/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html
index 325654d..52bf574 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>voaacenc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-zbar.html" title="zbar">
@@ -36,7 +36,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-voaacenc.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -51,7 +51,7 @@
 </div>
 <a name="GstVoAacEnc"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-voaacenc.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -83,7 +83,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.86.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.85.8.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -109,7 +109,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.86.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.85.8.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html b/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html
index f18d2d4..813631b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>voamrwbenc: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-voaacenc.html" title="voaacenc">
@@ -36,7 +36,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.87.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.86.3.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -62,7 +62,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.87.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.86.3.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html b/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html
index 4bc97fd..4966341 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>waterripple: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-videoparse.html" title="videoparse">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-waterripple.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -62,7 +62,7 @@
 </div>
 <a name="GstWaterRipple"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-waterripple.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -90,7 +90,7 @@
 <a name="gst-plugins-bad-plugins-waterripple.description"></a><h2>Description</h2>
 <p>The waterripple element creates a water ripple effect on the image.</p>
 <div class="refsect2">
-<a name="id-1.2.84.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.83.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -106,7 +106,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.84.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.83.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -132,7 +132,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.84.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.83.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html b/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html
index 4b0d38d..24acc5e 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>wavescope: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-voamrwbenc.html" title="voamrwbenc">
@@ -35,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-wavescope.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -50,7 +50,7 @@
 </div>
 <a name="GstWaveScope"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-wavescope.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
@@ -76,7 +76,7 @@
 <p>Wavescope is a simple audio visualisation element. It renders the waveforms
 like on an oscilloscope.</p>
 <div class="refsect2">
-<a name="id-1.2.88.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.87.7.3"></a><h3>Example launch line</h3>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
     <tbody>
@@ -92,7 +92,7 @@
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.88.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.87.7.4.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -118,7 +118,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.88.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.87.7.4.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-zbar.html b/docs/plugins/html/gst-plugins-bad-plugins-zbar.html
index 488401b..7f81a64 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-zbar.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-zbar.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>zbar: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
 <link rel="prev" href="gst-plugins-bad-plugins-waterripple.html" title="waterripple">
@@ -15,7 +15,8 @@
 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
 <td width="100%" align="left" class="shortcuts">
 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
-                  <a href="#gst-plugins-bad-plugins-zbar.description" class="shortcut">Description</a></span><span id="nav_properties">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-zbar.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
+                  <a href="#gst-plugins-bad-plugins-zbar.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
                   <a href="#gst-plugins-bad-plugins-zbar.properties" class="shortcut">Properties</a></span>
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
@@ -34,7 +35,7 @@
 </tr></table></div>
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-zbar.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table border="0">
+<div class="informaltable"><table class="informaltable" border="0">
 <colgroup>
 <col width="150px" class="properties_type">
 <col width="300px" class="properties_name">
@@ -59,25 +60,36 @@
 </tbody>
 </table></div>
 </div>
-<div class="refsect1">
+<a name="GstZBar"></a><div class="refsect1">
 <a name="gst-plugins-bad-plugins-zbar.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table width="100%" border="0">
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
 <colgroup>
 <col width="150px" class="name">
 <col class="description">
 </colgroup>
 <tbody><tr>
 <td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-zbar.html#GstZBar" title="struct GstZBar">GstZBar</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-zbar.html#GstZBar-struct" title="struct GstZBar">GstZBar</a></td>
 </tr></tbody>
 </table></div>
 </div>
 <div class="refsect1">
+<a name="gst-plugins-bad-plugins-zbar.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen">    <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a>
+    <span class="lineart">╰──</span> <a href="https://developer.gnome.org/gobject/unstable/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+        <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstObject.html">GstObject</a>
+            <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstElement.html">GstElement</a>
+                <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/GstBaseTransform.html">GstBaseTransform</a>
+                    <span class="lineart">╰──</span> <a href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter">GstVideoFilter</a>
+                        <span class="lineart">╰──</span> GstZBar
+</pre>
+</div>
+<div class="refsect1">
 <a name="gst-plugins-bad-plugins-zbar.description"></a><h2>Description</h2>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
 <div class="refsect2">
-<a name="id-1.2.85.5.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.84.7.2.1"></a><h3>Element Information</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -103,7 +115,7 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="id-1.2.85.5.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.84.7.2.2"></a><h3>Element Pads</h3>
 <div class="variablelist"><table border="0" class="variablelist">
 <colgroup>
 <col align="left" valign="top">
@@ -162,10 +174,8 @@
 <div class="refsect1">
 <a name="gst-plugins-bad-plugins-zbar.other_details"></a><h2>Types and Values</h2>
 <div class="refsect2">
-<a name="GstZBar"></a><h3>struct GstZBar</h3>
-<pre class="programlisting">struct GstZBar {
-};
-</pre>
+<a name="GstZBar-struct"></a><h3>struct GstZBar</h3>
+<pre class="programlisting">struct GstZBar;</pre>
 </div>
 </div>
 <div class="refsect1">
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index a7946b3..4b92889 100644
--- a/docs/plugins/html/index.html
+++ b/docs/plugins/html/index.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <title>GStreamer Bad Plugins 1.0 Plugins Reference Manual: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
 <link rel="next" href="ch01.html" title="gst-plugins-bad Elements">
 <meta name="generator" content="GTK-Doc V1.24 (XML mode)">
@@ -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.7.1)
+      for GStreamer Bad Plugins 1.0 (1.7.2)
       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>
@@ -176,9 +176,6 @@
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-mplex.html">mplex</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-mpg123audiodec.html">mpg123audiodec</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
 <span class="refentrytitle"><a href="gst-plugins-bad-plugins-neonhttpsrc.html">neonhttpsrc</a></span><span class="refpurpose"></span>
 </dt>
 <dt>
diff --git a/docs/plugins/html/index.sgml b/docs/plugins/html/index.sgml
index 9a29d99..89fdccb 100644
--- a/docs/plugins/html/index.sgml
+++ b/docs/plugins/html/index.sgml
@@ -186,6 +186,7 @@
 <ANCHOR id="GstCvLaplace--aperture-size" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--aperture-size">
 <ANCHOR id="GstCvLaplace--scale" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--scale">
 <ANCHOR id="GstCvLaplace--shift" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--shift">
+<ANCHOR id="GstCvLaplace--mask" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--mask">
 <ANCHOR id="gst-plugins-bad-plugins-cvsmooth" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvsmooth.html">
 <ANCHOR id="gst-plugins-bad-plugins-cvsmooth.properties" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvsmooth.html#gst-plugins-bad-plugins-cvsmooth.properties">
 <ANCHOR id="GstCvSmooth" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth">
@@ -218,6 +219,7 @@
 <ANCHOR id="GstCvSobel--aperture-size" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--aperture-size">
 <ANCHOR id="GstCvSobel--x-order" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--x-order">
 <ANCHOR id="GstCvSobel--y-order" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--y-order">
+<ANCHOR id="GstCvSobel--mask" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--mask">
 <ANCHOR id="gst-plugins-bad-plugins-dataurisrc" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-dataurisrc.html">
 <ANCHOR id="gst-plugins-bad-plugins-dataurisrc.properties" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-dataurisrc.html#gst-plugins-bad-plugins-dataurisrc.properties">
 <ANCHOR id="GstDataURISrc" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-dataurisrc.html#GstDataURISrc">
@@ -642,24 +644,14 @@
 <ANCHOR id="GstMplex--sector-size" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-mplex.html#GstMplex--sector-size">
 <ANCHOR id="GstMplex--system-headers" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-mplex.html#GstMplex--system-headers">
 <ANCHOR id="GstMplex--vbr" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-mplex.html#GstMplex--vbr">
-<ANCHOR id="gst-plugins-bad-plugins-mpg123audiodec" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-mpg123audiodec.html">
-<ANCHOR id="GstMpg123AudioDec" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-mpg123audiodec.html#GstMpg123AudioDec">
-<ANCHOR id="gst-plugins-bad-plugins-mpg123audiodec.other" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-mpg123audiodec.html#gst-plugins-bad-plugins-mpg123audiodec.other">
-<ANCHOR id="gst-plugins-bad-plugins-mpg123audiodec.object-hierarchy" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-mpg123audiodec.html#gst-plugins-bad-plugins-mpg123audiodec.object-hierarchy">
-<ANCHOR id="gst-plugins-bad-plugins-mpg123audiodec.description" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-mpg123audiodec.html#gst-plugins-bad-plugins-mpg123audiodec.description">
-<ANCHOR id="gst-plugins-bad-plugins-mpg123audiodec.functions_details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-mpg123audiodec.html#gst-plugins-bad-plugins-mpg123audiodec.functions_details">
-<ANCHOR id="gst-plugins-bad-plugins-mpg123audiodec.other_details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-mpg123audiodec.html#gst-plugins-bad-plugins-mpg123audiodec.other_details">
-<ANCHOR id="GstMpg123AudioDec-struct" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-mpg123audiodec.html#GstMpg123AudioDec-struct">
 <ANCHOR id="gst-plugins-bad-plugins-neonhttpsrc" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html">
 <ANCHOR id="gst-plugins-bad-plugins-neonhttpsrc.properties" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html#gst-plugins-bad-plugins-neonhttpsrc.properties">
-<ANCHOR id="GstNeonhttpSrc" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html#GstNeonhttpSrc">
 <ANCHOR id="gst-plugins-bad-plugins-neonhttpsrc.other" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html#gst-plugins-bad-plugins-neonhttpsrc.other">
-<ANCHOR id="gst-plugins-bad-plugins-neonhttpsrc.object-hierarchy" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html#gst-plugins-bad-plugins-neonhttpsrc.object-hierarchy">
 <ANCHOR id="gst-plugins-bad-plugins-neonhttpsrc.implemented-interfaces" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html#gst-plugins-bad-plugins-neonhttpsrc.implemented-interfaces">
 <ANCHOR id="gst-plugins-bad-plugins-neonhttpsrc.description" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html#gst-plugins-bad-plugins-neonhttpsrc.description">
 <ANCHOR id="gst-plugins-bad-plugins-neonhttpsrc.functions_details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html#gst-plugins-bad-plugins-neonhttpsrc.functions_details">
 <ANCHOR id="gst-plugins-bad-plugins-neonhttpsrc.other_details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html#gst-plugins-bad-plugins-neonhttpsrc.other_details">
-<ANCHOR id="GstNeonhttpSrc-struct" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html#GstNeonhttpSrc-struct">
+<ANCHOR id="GstNeonhttpSrc" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html#GstNeonhttpSrc">
 <ANCHOR id="gst-plugins-bad-plugins-neonhttpsrc.property-details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html#gst-plugins-bad-plugins-neonhttpsrc.property-details">
 <ANCHOR id="GstNeonhttpSrc--location" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html#GstNeonhttpSrc--location">
 <ANCHOR id="GstNeonhttpSrc--proxy" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-neonhttpsrc.html#GstNeonhttpSrc--proxy">
@@ -1079,6 +1071,9 @@
 <ANCHOR id="GstVideoParse--width" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-videoparse.html#GstVideoParse--width">
 <ANCHOR id="GstVideoParse--interlaced" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-videoparse.html#GstVideoParse--interlaced">
 <ANCHOR id="GstVideoParse--top-field-first" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-videoparse.html#GstVideoParse--top-field-first">
+<ANCHOR id="GstVideoParse--framesize" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-videoparse.html#GstVideoParse--framesize">
+<ANCHOR id="GstVideoParse--offsets" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-videoparse.html#GstVideoParse--offsets">
+<ANCHOR id="GstVideoParse--strides" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-videoparse.html#GstVideoParse--strides">
 <ANCHOR id="gst-plugins-bad-plugins-waterripple" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-waterripple.html">
 <ANCHOR id="gst-plugins-bad-plugins-waterripple.properties" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-waterripple.html#gst-plugins-bad-plugins-waterripple.properties">
 <ANCHOR id="GstWaterRipple" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-waterripple.html#GstWaterRipple">
@@ -1095,11 +1090,13 @@
 <ANCHOR id="gst-plugins-bad-plugins-waterripple.see-also" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-waterripple.html#gst-plugins-bad-plugins-waterripple.see-also">
 <ANCHOR id="gst-plugins-bad-plugins-zbar" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-zbar.html">
 <ANCHOR id="gst-plugins-bad-plugins-zbar.properties" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-zbar.html#gst-plugins-bad-plugins-zbar.properties">
+<ANCHOR id="GstZBar" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-zbar.html#GstZBar">
 <ANCHOR id="gst-plugins-bad-plugins-zbar.other" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-zbar.html#gst-plugins-bad-plugins-zbar.other">
+<ANCHOR id="gst-plugins-bad-plugins-zbar.object-hierarchy" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-zbar.html#gst-plugins-bad-plugins-zbar.object-hierarchy">
 <ANCHOR id="gst-plugins-bad-plugins-zbar.description" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-zbar.html#gst-plugins-bad-plugins-zbar.description">
 <ANCHOR id="gst-plugins-bad-plugins-zbar.functions_details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-zbar.html#gst-plugins-bad-plugins-zbar.functions_details">
 <ANCHOR id="gst-plugins-bad-plugins-zbar.other_details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-zbar.html#gst-plugins-bad-plugins-zbar.other_details">
-<ANCHOR id="GstZBar" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-zbar.html#GstZBar">
+<ANCHOR id="GstZBar-struct" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-zbar.html#GstZBar-struct">
 <ANCHOR id="gst-plugins-bad-plugins-zbar.property-details" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-zbar.html#gst-plugins-bad-plugins-zbar.property-details">
 <ANCHOR id="GstZBar--message" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-zbar.html#GstZBar--message">
 <ANCHOR id="GstZBar--cache" href="gst-plugins-bad-plugins-1.0/gst-plugins-bad-plugins-zbar.html#GstZBar--cache">
diff --git a/docs/plugins/inspect/plugin-accurip.xml b/docs/plugins/inspect/plugin-accurip.xml
index c9d4d62..d940c06 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.7.1</version>
+  <version>1.7.2</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 91235c3..9b682a5 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.7.1</version>
+  <version>1.7.2</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 196fdf5..1258995 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.7.1</version>
+  <version>1.7.2</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 5509238..2ec5672 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.7.1</version>
+  <version>1.7.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-androidcamera.xml b/docs/plugins/inspect/plugin-androidcamera.xml
new file mode 100644
index 0000000..c9417ca
--- /dev/null
+++ b/docs/plugins/inspect/plugin-androidcamera.xml
@@ -0,0 +1,28 @@
+<plugin>
+  <name>androidcamera</name>
+  <description>Capture from Android cameras</description>
+  <filename>../../sys/androidcamera/.libs/libgstandroidcamera.so</filename>
+  <basename>libgstandroidcamera.so</basename>
+  <version>0.10.22.1</version>
+  <license>LGPL</license>
+  <source>gst-plugins-bad</source>
+  <package>GStreamer Bad Plug-ins git</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>ahcsrc</name>
+      <longname>Android Camera Source</longname>
+      <class>Source/Video</class>
+      <description>Reads frames from android.hardware.Camera class into buffers</description>
+      <author>Youness Alaoui &lt;youness.alaoui@collabora.co.uk&gt;</author>
+      <pads>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-raw-yuv, format=(fourcc) { YV12 , YUY2 , NV21 , NV16 }, width=(int) [ 1, 2147483647 ], height=(int) [ 1, 2147483647 ], framerate=(fraction) [ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)16, red_mask=(int)63488, green_mask=(int)2016, blue_mask=(int)31, width=(int) [ 1, 2147483647 ], height=(int) [ 1, 2147483647 ], framerate=(fraction) [ 0/1, 2147483647/1 ] </details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
diff --git a/docs/plugins/inspect/plugin-asfmux.xml b/docs/plugins/inspect/plugin-asfmux.xml
index 94cbd7f..66f6fb6 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.7.1</version>
+  <version>1.7.2</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 2b82155..37edff3 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.7.1</version>
+  <version>1.7.2</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 33be9db..d9d81fd 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.7.1</version>
+  <version>1.7.2</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 4ee5420..666aa3e 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.7.1</version>
+  <version>1.7.2</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 e51db5a..21e4232 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.7.1</version>
+  <version>1.7.2</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 9cefab8..40603b2 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.7.1</version>
+  <version>1.7.2</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 6689df2..7231156 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.7.1</version>
+  <version>1.7.2</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
new file mode 100644
index 0000000..73f0fa5
--- /dev/null
+++ b/docs/plugins/inspect/plugin-bluez.xml
@@ -0,0 +1,58 @@
+<plugin>
+  <name>bluez</name>
+  <description>Bluez-based bluetooth support</description>
+  <filename>../../sys/bluez/.libs/libgstbluez.so</filename>
+  <basename>libgstbluez.so</basename>
+  <version>1.7.2</version>
+  <license>LGPL</license>
+  <source>gst-plugins-bad</source>
+  <package>GStreamer Bad Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>a2dpsink</name>
+      <longname>Bluetooth A2DP sink</longname>
+      <class>Sink/Audio</class>
+      <description>Plays audio to an A2DP device</description>
+      <author>Marcel Holtmann &lt;marcel@holtmann.org&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-sbc, rate=(int){ 16000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ], channel-mode=(string){ mono, dual, stereo, joint }, blocks=(int){ 4, 8, 12, 16 }, subbands=(int){ 4, 8 }, allocation-method=(string){ snr, loudness }, bitpool=(int)[ 2, 64 ]; audio/mpeg</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>avdtpsink</name>
+      <longname>Bluetooth AVDTP sink</longname>
+      <class>Sink/Audio</class>
+      <description>Plays audio to an A2DP device</description>
+      <author>Marcel Holtmann &lt;marcel@holtmann.org&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int){ 16000, 32000, 44100, 48000 }, encoding-name=(string)SBC; application/x-rtp, media=(string)audio, payload=(int)14, clock-rate=(int)90000; application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int)90000, encoding-name=(string)MPA</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
+      <name>avdtpsrc</name>
+      <longname>Bluetooth AVDTP Source</longname>
+      <class>Source/Audio/Network/RTP</class>
+      <description>Receives audio from an A2DP device</description>
+      <author>Arun Raghavan &lt;arun.raghavan@collabora.co.uk&gt;</author>
+      <pads>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int){ 16000, 32000, 44100, 48000 }, encoding-name=(string)SBC; application/x-rtp, media=(string)audio, payload=(int)[ 96, 127 ], clock-rate=(int){ 8000, 11025, 12000, 16000, 22050, 2400, 32000, 44100, 48000, 64000, 88200, 96000 }, encoding-name=(string)MP4A-LATM</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-bz2.xml b/docs/plugins/inspect/plugin-bz2.xml
index 31ccde0..1e71df3 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.7.1</version>
+  <version>1.7.2</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 4fb7261..4f2caf2 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.7.1</version>
+  <version>1.7.2</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 8ddc3fb..0e50af5 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.7.1</version>
+  <version>1.7.2</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 8c617c1..7f812ee 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.7.1</version>
+  <version>1.7.2</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 1919763..7c69add 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.7.1</version>
+  <version>1.7.2</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 937a1e6..0dfe727 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.7.1</version>
+  <version>1.7.2</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 3b3fb4e..555e189 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.7.1</version>
+  <version>1.7.2</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 ef767d9..dfd541d 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.7.1</version>
+  <version>1.7.2</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 3ceb8e5..9ac730e 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.7.1</version>
+  <version>1.7.2</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 cc1c762..c882b7f 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.7.1</version>
+  <version>1.7.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins</package>
@@ -50,7 +50,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string)UYVY, width=(int)720, height=(int)486, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)10/11, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)720, height=(int)486, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)10/11, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)720, height=(int)576, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)12/11, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)720, height=(int)486, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)10/11, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)720, height=(int)576, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)12/11, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)720, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)720, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)720, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)2048, height=(int)1556, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)2048, height=(int)1556, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)2048, height=(int)1556, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2</details>
+          <details>video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB</details>
         </caps>
       </pads>
     </element>
@@ -65,7 +65,7 @@
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string)UYVY, width=(int)720, height=(int)486, framerate=(fraction)30000/1001, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)10/11, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)720, height=(int)486, framerate=(fraction)24000/1001, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)10/11, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)12/11, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)720, height=(int)486, framerate=(fraction)30000/1001, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)10/11, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)12/11, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)24000/1001, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)24/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)25/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)30000/1001, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)25/1, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)30000/1001, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, interlace-mode=(string)interleaved, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)50/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)60000/1001, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)60/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)720, framerate=(fraction)50/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)720, framerate=(fraction)60000/1001, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)720, framerate=(fraction)60/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)2048, height=(int)1556, framerate=(fraction)24000/1001, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)2048, height=(int)1556, framerate=(fraction)24/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)2048, height=(int)1556, framerate=(fraction)25/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)24000/1001, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)24/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)25/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)30000/1001, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)30/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)50/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)60000/1001, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, format=(string)UYVY, width=(int)3840, height=(int)2160, framerate=(fraction)60/1, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)bt2020, chroma-site=(string)mpeg2</details>
+          <details>video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt601, chroma-site=(string)mpeg2; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)interleaved, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt709, chroma-site=(string)mpeg2; video/x-raw, width=(int)2048, height=(int)1556, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)24/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)25/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)30/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)50/1, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60000/1001, format=(string)ARGB; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)UYVY, colorimetry=(string)bt2020, chroma-site=(string)mpeg2; video/x-raw, width=(int)3840, height=(int)2160, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)60/1, format=(string)ARGB</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-dfbvideosink.xml b/docs/plugins/inspect/plugin-dfbvideosink.xml
index 71d30b7..633205c 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.7.1</version>
+  <version>1.7.2</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 d6e61eb..b2ac908 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.7.1</version>
+  <version>1.7.2</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 2498439..72ee556 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.7.1</version>
+  <version>1.7.2</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 192620a..48f6fe5 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.7.1</version>
+  <version>1.7.2</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 60406d4..54ec8e9 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.7.1</version>
+  <version>1.7.2</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 24df678..1bd503b 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.7.1</version>
+  <version>1.7.2</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 87de695..71ef5bc 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.7.1</version>
+  <version>1.7.2</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 a2131a3..29219f8 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.7.1</version>
+  <version>1.7.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-festival.xml b/docs/plugins/inspect/plugin-festival.xml
index ab6617c..2f0a0e5 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.7.1</version>
+  <version>1.7.2</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 48ed3f4..8c5ac1b 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.7.1</version>
+  <version>1.7.2</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 b3d1cbb..174844c 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.7.1</version>
+  <version>1.7.2</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 5e8e0d0..cb95ae3 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.7.1</version>
+  <version>1.7.2</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 0adcede..f786769 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.7.1</version>
+  <version>1.7.2</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 e05fece..216f41e 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.7.1</version>
+  <version>1.7.2</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 5969f03..2e368be 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.7.1</version>
+  <version>1.7.2</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 1687c20..f00d466 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.7.1</version>
+  <version>1.7.2</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 2c4599f..beeae06 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.7.1</version>
+  <version>1.7.2</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 881ff6e..b5f58c4 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.7.1</version>
+  <version>1.7.2</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 e702d25..fa2241a 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.7.1</version>
+  <version>1.7.2</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 d920cd7..18b66f0 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.7.1</version>
+  <version>1.7.2</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 201e957..c3c6a39 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.7.1</version>
+  <version>1.7.2</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 b1f2475..c321bf8 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.7.1</version>
+  <version>1.7.2</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 3892dbf..a29621f 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.7.1</version>
+  <version>1.7.2</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 dba74e6..1032c55 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.7.1</version>
+  <version>1.7.2</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 0672d82..6985c5b 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.7.1</version>
+  <version>1.7.2</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 d0318a8..4fcef6b 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.7.1</version>
+  <version>1.7.2</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 6f7c51c..6dfb140 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.7.1</version>
+  <version>1.7.2</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 747864a..4efc2ed 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.7.1</version>
+  <version>1.7.2</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 7d6092c..2a04754 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.7.1</version>
+  <version>1.7.2</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 581c1fe..8fd44c9 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.7.1</version>
+  <version>1.7.2</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 5334d1f..3988364 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.7.1</version>
+  <version>1.7.2</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 d0d1904..9ea36b8 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.7.1</version>
+  <version>1.7.2</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 eb1c653..6c0950f 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.7.1</version>
+  <version>1.7.2</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 429f3ea..db8a0ca 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.7.1</version>
+  <version>1.7.2</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 7e5bba2..2bab92a 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.7.1</version>
+  <version>1.7.2</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 b1ad224..05cfa0c 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.7.1</version>
+  <version>1.7.2</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 00c040f..0983766 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.7.1</version>
+  <version>1.7.2</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 dc5323c..4d71d4e 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.7.1</version>
+  <version>1.7.2</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 9ac3419..c3de7e4 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.7.1</version>
+  <version>1.7.2</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 582c551..7ca646c 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.7.1</version>
+  <version>1.7.2</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 29385f8..b57a589 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.7.1</version>
+  <version>1.7.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -20,7 +20,7 @@
           <name>sink_%d</name>
           <direction>sink</direction>
           <presence>request</presence>
-          <details>video/mpeg, parsed=(boolean)true, mpegversion=(int){ 1, 2, 4 }, systemstream=(boolean)false; video/x-dirac; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ au, nal }; audio/mpeg, parsed=(boolean)true, mpegversion=(int){ 1, 2 }; audio/mpeg, framed=(boolean)true, mpegversion=(int)4, stream-format=(string)adts; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw; audio/x-lpcm, width=(int){ 16, 20, 24 }, rate=(int){ 48000, 96000 }, channels=(int)[ 1, 8 ], dynamic_range=(int)[ 0, 255 ], emphasis=(boolean){ false, true }, mute=(boolean){ false, true }; audio/x-ac3, framed=(boolean)true; audio/x-dts, framed=(boolean)true; audio/x-opus, channels=(int)[ 1, 8 ], channel-mapping-family=(int){ 0, 1 }; subpicture/x-dvb; application/x-teletext; meta/x-klv, parsed=(boolean)true</details>
+          <details>video/mpeg, parsed=(boolean)true, mpegversion=(int){ 1, 2, 4 }, systemstream=(boolean)false; video/x-dirac; video/x-h264, stream-format=(string)byte-stream, alignment=(string){ au, nal }; video/x-h265, stream-format=(string)byte-stream, alignment=(string){ au, nal }; audio/mpeg, parsed=(boolean)true, mpegversion=(int){ 1, 2 }; audio/mpeg, framed=(boolean)true, mpegversion=(int)4, stream-format=(string)adts; audio/mpeg, mpegversion=(int)4, stream-format=(string)raw; audio/x-lpcm, width=(int){ 16, 20, 24 }, rate=(int){ 48000, 96000 }, channels=(int)[ 1, 8 ], dynamic_range=(int)[ 0, 255 ], emphasis=(boolean){ false, true }, mute=(boolean){ false, true }; audio/x-ac3, framed=(boolean)true; audio/x-dts, framed=(boolean)true; audio/x-opus, channels=(int)[ 1, 8 ], channel-mapping-family=(int){ 0, 1 }; subpicture/x-dvb; application/x-teletext; meta/x-klv, parsed=(boolean)true</details>
         </caps>
         <caps>
           <name>src</name>
diff --git a/docs/plugins/inspect/plugin-mpg123.xml b/docs/plugins/inspect/plugin-mpg123.xml
deleted file mode 100644
index 3d0005b..0000000
--- a/docs/plugins/inspect/plugin-mpg123.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<plugin>
-  <name>mpg123</name>
-  <description>mp3 decoding based on the mpg123 library</description>
-  <filename>../../ext/mpg123/.libs/libgstmpg123.so</filename>
-  <basename>libgstmpg123.so</basename>
-  <version>1.7.1</version>
-  <license>LGPL</license>
-  <source>gst-plugins-bad</source>
-  <package>GStreamer Bad Plug-ins source release</package>
-  <origin>Unknown package origin</origin>
-  <elements>
-    <element>
-      <name>mpg123audiodec</name>
-      <longname>mpg123 mp3 decoder</longname>
-      <class>Codec/Decoder/Audio</class>
-      <description>Decodes mp3 streams using the mpg123 library</description>
-      <author>Carlos Rafael Giani &lt;dv@pseudoterminal.org&gt;</author>
-      <pads>
-        <caps>
-          <name>sink</name>
-          <direction>sink</direction>
-          <presence>always</presence>
-          <details>audio/mpeg, mpegversion=(int)1, layer=(int)[ 1, 3 ], rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ], parsed=(boolean)true</details>
-        </caps>
-        <caps>
-          <name>src</name>
-          <direction>source</direction>
-          <presence>always</presence>
-          <details>audio/x-raw, format=(string){ S16LE, U16LE, S32LE, U32LE, S24LE, U24LE, F32LE }, rate=(int){ 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, channels=(int)[ 1, 2 ], layout=(string)interleaved</details>
-        </caps>
-      </pads>
-    </element>
-  </elements>
-</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-mplex.xml b/docs/plugins/inspect/plugin-mplex.xml
index e8be8ee..4d6587f 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.7.1</version>
+  <version>1.7.2</version>
   <license>GPL</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 6eb16a2..38e7769 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.7.1</version>
+  <version>1.7.2</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
new file mode 100644
index 0000000..86943c5
--- /dev/null
+++ b/docs/plugins/inspect/plugin-netsim.xml
@@ -0,0 +1,34 @@
+<plugin>
+  <name>netsim</name>
+  <description>Network Simulator</description>
+  <filename>../../gst/netsim/.libs/libgstnetsim.so</filename>
+  <basename>libgstnetsim.so</basename>
+  <version>1.7.2</version>
+  <license>LGPL</license>
+  <source>gst-plugins-bad</source>
+  <package>GStreamer Bad Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>netsim</name>
+      <longname>Network Simulator</longname>
+      <class>Filter/Network</class>
+      <description>An element that simulates network jitter, packet loss and packet duplication</description>
+      <author>Philippe Kalaf &lt;philippe.kalaf@collabora.co.uk&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>ANY</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>ANY</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-ofa.xml b/docs/plugins/inspect/plugin-ofa.xml
index 2a176dd..809bd05 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.7.1</version>
+  <version>1.7.2</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 fd8e61b..893cbe0 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.7.1</version>
+  <version>1.7.2</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 2af2837..9bf44e4 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.7.1</version>
+  <version>1.7.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -83,13 +83,13 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string)GRAY8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string)GRAY16_LE, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
@@ -125,13 +125,13 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string)GRAY8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
         <caps>
           <name>src</name>
           <direction>source</direction>
           <presence>always</presence>
-          <details>video/x-raw, format=(string)GRAY16_LE, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-openexr.xml b/docs/plugins/inspect/plugin-openexr.xml
index f26c022..6ed052f 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.7.1</version>
+  <version>1.7.2</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 b109778..fb952fc 100644
--- a/docs/plugins/inspect/plugin-opengl.xml
+++ b/docs/plugins/inspect/plugin-opengl.xml
@@ -3,13 +3,34 @@
   <description>OpenGL plugin</description>
   <filename>../../ext/gl/.libs/libgstopengl.so</filename>
   <basename>libgstopengl.so</basename>
-  <version>1.7.1</version>
+  <version>1.7.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
   <origin>Unknown package origin</origin>
   <elements>
     <element>
+      <name>glcolorbalance</name>
+      <longname>Video balance</longname>
+      <class>Filter/Effect/Video</class>
+      <description>Adjusts brightness, contrast, hue, saturation on a video stream</description>
+      <author>Matthew Waters &lt;matthew@centricular.com&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</details>
+        </caps>
+      </pads>
+    </element>
+    <element>
       <name>glcolorconvert</name>
       <longname>OpenGL color converter</longname>
       <class>Filter/Converter/Video</class>
@@ -105,7 +126,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw(memory:GLMemory)</details>
+          <details>video/x-raw(memory:GLMemory); video/x-raw</details>
         </caps>
         <caps>
           <name>src</name>
diff --git a/docs/plugins/inspect/plugin-openh264.xml b/docs/plugins/inspect/plugin-openh264.xml
index 832e398..2c0bb5e 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.7.1</version>
+  <version>1.5.0.1</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 a343126..c381495 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.7.1</version>
+  <version>1.7.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-opus.xml b/docs/plugins/inspect/plugin-opus.xml
index 3f050db..36542b4 100644
--- a/docs/plugins/inspect/plugin-opus.xml
+++ b/docs/plugins/inspect/plugin-opus.xml
@@ -3,7 +3,7 @@
   <description>OPUS plugin library</description>
   <filename>../../ext/opus/.libs/libgstopus.so</filename>
   <basename>libgstopus.so</basename>
-  <version>1.7.1</version>
+  <version>1.7.2</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 53791b2..8bfbb79 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.7.1</version>
+  <version>1.7.2</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 89eff8d..2d2fc51 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.7.1</version>
+  <version>1.7.2</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 b44e97e..04e8117 100644
--- a/docs/plugins/inspect/plugin-qt.xml
+++ b/docs/plugins/inspect/plugin-qt.xml
@@ -3,7 +3,7 @@
   <description>Qt sink</description>
   <filename>../../ext/qt/.libs/libgstqtsink.so</filename>
   <basename>libgstqtsink.so</basename>
-  <version>1.7.1</version>
+  <version>1.7.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -20,7 +20,7 @@
           <name>sink</name>
           <direction>sink</direction>
           <presence>always</presence>
-          <details>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+          <details>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], texture-target=(string)2D</details>
         </caps>
       </pads>
     </element>
diff --git a/docs/plugins/inspect/plugin-rawparse.xml b/docs/plugins/inspect/plugin-rawparse.xml
index 77e9ec3..ee5ac27 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.7.1</version>
+  <version>1.7.2</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 6d9fcde..a9f9842 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.7.1</version>
+  <version>1.7.2</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 b7ed305..b8358aa 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.7.1</version>
+  <version>1.7.2</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 e4243cb..2e3f14a 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.7.1</version>
+  <version>1.7.2</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 79d20c3..2206ab4 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.7.1</version>
+  <version>1.7.2</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 547f3c4..b7f2c43 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.7.1</version>
+  <version>1.7.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtpbad.xml b/docs/plugins/inspect/plugin-rtpbad.xml
index 00b65f7..b4a1b7f 100644
--- a/docs/plugins/inspect/plugin-rtpbad.xml
+++ b/docs/plugins/inspect/plugin-rtpbad.xml
@@ -3,7 +3,7 @@
   <description>Real-time protocol plugins</description>
   <filename>../../gst/rtp/.libs/libgstrtpbad.so</filename>
   <basename>libgstrtpbad.so</basename>
-  <version>1.7.1</version>
+  <version>1.6.0</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 3423e87..f4ceb73 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.7.1</version>
+  <version>1.7.2</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 6e0ae60..41aa41f 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.7.1</version>
+  <version>1.7.2</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 edbb068..3bc0eb0 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.7.1</version>
+  <version>1.7.2</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 7f7ebf8..0e9259b 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.7.1</version>
+  <version>1.7.2</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 b0e7d6a..bb561b1 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.7.1</version>
+  <version>1.7.2</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 25b367b..73da5c1 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.7.1</version>
+  <version>1.7.2</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 e25a3f3..da43470 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.7.1</version>
+  <version>1.7.2</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 f1c4497..4a5356c 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.7.1</version>
+  <version>1.7.2</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
new file mode 100644
index 0000000..272d2ed
--- /dev/null
+++ b/docs/plugins/inspect/plugin-sndfile.xml
@@ -0,0 +1,34 @@
+<plugin>
+  <name>sndfile</name>
+  <description>use libsndfile to read and write various audio formats</description>
+  <filename>../../ext/sndfile/.libs/libgstsndfile.so</filename>
+  <basename>libgstsndfile.so</basename>
+  <version>1.5.2</version>
+  <license>LGPL</license>
+  <source>gst-plugins-bad</source>
+  <package>GStreamer Bad Plug-ins source release</package>
+  <origin>Unknown package origin</origin>
+  <elements>
+    <element>
+      <name>sfdec</name>
+      <longname>Sndfile decoder</longname>
+      <class>Decoder/Audio</class>
+      <description>Read audio streams using libsndfile</description>
+      <author>Stefan Sauer &lt;ensonic@user.sf.net&gt;</author>
+      <pads>
+        <caps>
+          <name>sink</name>
+          <direction>sink</direction>
+          <presence>always</presence>
+          <details>audio/x-ircam; audio/x-nist; audio/x-paris; audio/x-rf64; audio/x-sds; audio/x-svx; audio/x-voc; audio/x-w64; audio/x-xi</details>
+        </caps>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw, format=(string){ F32LE, S32LE, S16LE }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</details>
+        </caps>
+      </pads>
+    </element>
+  </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-soundtouch.xml b/docs/plugins/inspect/plugin-soundtouch.xml
index 1fae792..bef47b3 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.7.1</version>
+  <version>1.7.2</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 4a6e005..e25fe70 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.7.1</version>
+  <version>1.7.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
@@ -51,5 +51,20 @@
         </caps>
       </pads>
     </element>
+    <element>
+      <name>tonegeneratesrc</name>
+      <longname>Telephony Tone  Generator source</longname>
+      <class>Source/Audio</class>
+      <description>Creates telephony signals of given frequency, volume, cadence</description>
+      <author>Iskratel &lt;www.iskratel.com&gt;</author>
+      <pads>
+        <caps>
+          <name>src</name>
+          <direction>source</direction>
+          <presence>always</presence>
+          <details>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)8000, channels=(int)1</details>
+        </caps>
+      </pads>
+    </element>
   </elements>
 </plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-speed.xml b/docs/plugins/inspect/plugin-speed.xml
index d5c05d4..414906f 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.7.1</version>
+  <version>1.7.2</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 9b1f527..40d6e26 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.7.1</version>
+  <version>1.7.2</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 d4d1af5..f9cc125 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.7.1</version>
+  <version>1.7.2</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 2c6d48e..b746995 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.7.1</version>
+  <version>1.7.2</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 448a909..1aaced2 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.7.1</version>
+  <version>1.7.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-uvch264.xml b/docs/plugins/inspect/plugin-uvch264.xml
index f985d85..4423fdf 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.7.1</version>
+  <version>1.7.2</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 024cfcd..7c5e5de 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.7.1</version>
+  <version>1.7.2</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 9a5b669..9d45eb4 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.7.1</version>
+  <version>1.7.2</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 fd29f63..35ea768 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.7.1</version>
+  <version>1.7.2</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 1e791be..fc030bc 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.7.1</version>
+  <version>1.7.2</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 fa81559..c2ab57b 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.7.1</version>
+  <version>1.7.2</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 a402cf2..81190e7 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.7.1</version>
+  <version>1.7.2</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 5f9421d..d7f95aa 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.7.1</version>
+  <version>1.7.2</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 986d584..eb6b112 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.7.1</version>
+  <version>1.7.2</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 806a65c..7eac0c1 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.7.1</version>
+  <version>1.7.2</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 40560b9..7d36c5e 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.7.1</version>
+  <version>1.7.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
   <package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-wildmidi.xml b/docs/plugins/inspect/plugin-wildmidi.xml
index 7e7e3fc..637e3bb 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.7.1</version>
+  <version>1.7.2</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 55bff54..403e3ca 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.7.1</version>
+  <version>1.7.2</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 327e501..12f393f 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.7.1</version>
+  <version>1.7.2</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 a3dcb01..f344793 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.7.1</version>
+  <version>1.7.2</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 1935311..6aad5df 100644
--- a/docs/plugins/inspect/plugin-zbar.xml
+++ b/docs/plugins/inspect/plugin-zbar.xml
@@ -3,10 +3,10 @@
   <description>zbar barcode scanner</description>
   <filename>../../ext/zbar/.libs/libgstzbar.so</filename>
   <basename>libgstzbar.so</basename>
-  <version>1.7.0.1</version>
+  <version>1.7.2</version>
   <license>LGPL</license>
   <source>gst-plugins-bad</source>
-  <package>GStreamer Bad Plug-ins git</package>
+  <package>GStreamer Bad Plug-ins source release</package>
   <origin>Unknown package origin</origin>
   <elements>
     <element>
diff --git a/ext/Makefile.am b/ext/Makefile.am
index 33ddba7..f97ef44 100644
--- a/ext/Makefile.am
+++ b/ext/Makefile.am
@@ -16,12 +16,6 @@
 APEXSINK_DIR =
 endif
 
-# if USE_AUDIOFILE
-# AUDIOFILE_DIR=audiofile
-# else
-AUDIOFILE_DIR=
-# endif
-
 if USE_BS2B
 BS2B_DIR=bs2b
 else
@@ -166,12 +160,6 @@
 LIBDE265_DIR =
 endif
 
-# if USE_LIBFAME
-# LIBFAME_DIR=libfame
-# else
-LIBFAME_DIR=
-# endif
-
 if USE_LIBMMS
 LIBMMS_DIR=libmms
 else
@@ -196,12 +184,6 @@
 MPEG2ENC_DIR=
 endif
 
-if USE_MPG123
-MPG123_DIR=mpg123
-else
-MPG123_DIR=
-endif
-
 if USE_MIMIC
 MIMIC_DIR=mimic
 else
@@ -382,12 +364,6 @@
 TELETEXTDEC_DIR=
 endif
 
-if USE_GSETTINGS
-GSETTINGS_DIR=gsettings
-else
-GSETTINGS_DIR=
-endif
-
 if USE_XVID
 XVID_DIR=xvid
 else
@@ -430,6 +406,12 @@
 DTLS_DIR=
 endif
 
+if USE_VULKAN
+VULKAN_DIR=vulkan
+else
+VULKAN_DIR=
+endif
+
 SUBDIRS=\
 	$(VOAACENC_DIR) \
 	$(ASSRENDER_DIR) \
@@ -454,19 +436,16 @@
 	$(FAAD_DIR) \
 	$(FLITE_DIR) \
 	$(FLUIDSYNTH_DIR) \
-	$(GSETTINGS_DIR) \
 	$(GSM_DIR) \
 	$(G729_DIR) \
 	$(KATE_DIR) \
 	$(LADSPA_DIR) \
 	$(LV2_DIR) \
 	$(LIBDE265_DIR) \
-	$(LIBFAME_DIR) \
 	$(LIBMMS_DIR) \
 	$(LIBVISUAL_DIR) \
 	$(MODPLUG_DIR) \
 	$(MPEG2ENC_DIR) \
-	$(MPG123_DIR) \
 	$(MIMIC_DIR) \
 	$(MPLEX_DIR) \
 	$(MUSEPACK_DIR) \
@@ -501,7 +480,8 @@
 	$(HLS_DIR) \
 	$(WEBP_DIR) \
 	$(X265_DIR) \
-	$(DTLS_DIR)
+	$(DTLS_DIR) \
+	$(VULKAN_DIR)
 
 DIST_SUBDIRS = \
 	assrender \
@@ -518,7 +498,6 @@
 	faad \
 	flite \
 	fluidsynth \
-	gsettings \
 	gsm \
 	hls \
 	ladspa \
@@ -535,7 +514,6 @@
 	modplug \
 	mimic \
 	mpeg2enc \
-	mpg123 \
 	mplex \
 	musepack \
 	nas \
@@ -570,6 +548,7 @@
 	rtmp \
 	webp \
 	x265 \
-	dtls
+	dtls \
+	vulkan
 
 include $(top_srcdir)/common/parallel-subdirs.mak
diff --git a/ext/Makefile.in b/ext/Makefile.in
index 867d289..82b6d6d 100644
--- a/ext/Makefile.in
+++ b/ext/Makefile.in
@@ -119,16 +119,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -302,7 +301,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -324,7 +322,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -346,9 +343,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -510,6 +504,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -523,8 +518,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -611,8 +604,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -664,6 +655,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -684,6 +676,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -721,7 +715,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -767,13 +760,7 @@
 @USE_VOAMRWBENC_TRUE@VOAMRWBENC_DIR = voamrwbenc
 @USE_APEXSINK_FALSE@APEXSINK_DIR = 
 @USE_APEXSINK_TRUE@APEXSINK_DIR = apexsink
-
-# if USE_AUDIOFILE
-# AUDIOFILE_DIR=audiofile
-# else
-AUDIOFILE_DIR = 
 @USE_BS2B_FALSE@BS2B_DIR = 
-# endif
 @USE_BS2B_TRUE@BS2B_DIR = bs2b
 @USE_BZ2_FALSE@BZ2_DIR = 
 @USE_BZ2_TRUE@BZ2_DIR = bz2
@@ -825,13 +812,7 @@
 @USE_LV2_TRUE@LV2_DIR = lv2
 @USE_LIBDE265_FALSE@LIBDE265_DIR = 
 @USE_LIBDE265_TRUE@LIBDE265_DIR = libde265
-
-# if USE_LIBFAME
-# LIBFAME_DIR=libfame
-# else
-LIBFAME_DIR = 
 @USE_LIBMMS_FALSE@LIBMMS_DIR = 
-# endif
 @USE_LIBMMS_TRUE@LIBMMS_DIR = libmms
 @USE_LIBVISUAL_FALSE@LIBVISUAL_DIR = 
 @USE_LIBVISUAL_TRUE@LIBVISUAL_DIR = libvisual
@@ -839,8 +820,6 @@
 @USE_MODPLUG_TRUE@MODPLUG_DIR = modplug
 @USE_MPEG2ENC_FALSE@MPEG2ENC_DIR = 
 @USE_MPEG2ENC_TRUE@MPEG2ENC_DIR = mpeg2enc
-@USE_MPG123_FALSE@MPG123_DIR = 
-@USE_MPG123_TRUE@MPG123_DIR = mpg123
 @USE_MIMIC_FALSE@MIMIC_DIR = 
 @USE_MIMIC_TRUE@MIMIC_DIR = mimic
 @USE_MPLEX_FALSE@MPLEX_DIR = 
@@ -903,8 +882,6 @@
 @USE_GME_TRUE@GME_DIR = gme
 @USE_TELETEXTDEC_FALSE@TELETEXTDEC_DIR = 
 @USE_TELETEXTDEC_TRUE@TELETEXTDEC_DIR = teletextdec
-@USE_GSETTINGS_FALSE@GSETTINGS_DIR = 
-@USE_GSETTINGS_TRUE@GSETTINGS_DIR = gsettings
 @USE_XVID_FALSE@XVID_DIR = 
 @USE_XVID_TRUE@XVID_DIR = xvid
 @USE_ZBAR_FALSE@ZBAR_DIR = 
@@ -919,6 +896,8 @@
 @USE_X265_TRUE@X265_DIR = x265
 @USE_DTLS_FALSE@DTLS_DIR = 
 @USE_DTLS_TRUE@DTLS_DIR = dtls
+@USE_VULKAN_FALSE@VULKAN_DIR = 
+@USE_VULKAN_TRUE@VULKAN_DIR = vulkan
 SUBDIRS = \
 	$(VOAACENC_DIR) \
 	$(ASSRENDER_DIR) \
@@ -943,19 +922,16 @@
 	$(FAAD_DIR) \
 	$(FLITE_DIR) \
 	$(FLUIDSYNTH_DIR) \
-	$(GSETTINGS_DIR) \
 	$(GSM_DIR) \
 	$(G729_DIR) \
 	$(KATE_DIR) \
 	$(LADSPA_DIR) \
 	$(LV2_DIR) \
 	$(LIBDE265_DIR) \
-	$(LIBFAME_DIR) \
 	$(LIBMMS_DIR) \
 	$(LIBVISUAL_DIR) \
 	$(MODPLUG_DIR) \
 	$(MPEG2ENC_DIR) \
-	$(MPG123_DIR) \
 	$(MIMIC_DIR) \
 	$(MPLEX_DIR) \
 	$(MUSEPACK_DIR) \
@@ -990,7 +966,8 @@
 	$(HLS_DIR) \
 	$(WEBP_DIR) \
 	$(X265_DIR) \
-	$(DTLS_DIR)
+	$(DTLS_DIR) \
+	$(VULKAN_DIR)
 
 DIST_SUBDIRS = \
 	assrender \
@@ -1007,7 +984,6 @@
 	faad \
 	flite \
 	fluidsynth \
-	gsettings \
 	gsm \
 	hls \
 	ladspa \
@@ -1024,7 +1000,6 @@
 	modplug \
 	mimic \
 	mpeg2enc \
-	mpg123 \
 	mplex \
 	musepack \
 	nas \
@@ -1059,7 +1034,8 @@
 	rtmp \
 	webp \
 	x265 \
-	dtls
+	dtls \
+	vulkan
 
 all: all-recursive
 
diff --git a/ext/apexsink/Makefile.in b/ext/apexsink/Makefile.in
index 7e8b913..c73888b 100644
--- a/ext/apexsink/Makefile.in
+++ b/ext/apexsink/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -326,7 +325,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -348,7 +346,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -370,9 +367,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -534,6 +528,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -547,8 +542,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -635,8 +628,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -688,6 +679,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -708,6 +700,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -745,7 +739,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/assrender/Makefile.in b/ext/assrender/Makefile.in
index 30e633d..be23ec2 100644
--- a/ext/assrender/Makefile.in
+++ b/ext/assrender/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/bs2b/Makefile.in b/ext/bs2b/Makefile.in
index 9bb49e4..ff99928 100644
--- a/ext/bs2b/Makefile.in
+++ b/ext/bs2b/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/bz2/Makefile.in b/ext/bz2/Makefile.in
index 87f6f6e..4567748 100644
--- a/ext/bz2/Makefile.in
+++ b/ext/bz2/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/chromaprint/Makefile.in b/ext/chromaprint/Makefile.in
index ff35fb1..cb7d272 100644
--- a/ext/chromaprint/Makefile.in
+++ b/ext/chromaprint/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/curl/Makefile.in b/ext/curl/Makefile.in
index 5f319de..71e2f56 100644
--- a/ext/curl/Makefile.in
+++ b/ext/curl/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -337,7 +336,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -359,7 +357,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -381,9 +378,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -545,6 +539,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -558,8 +553,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -646,8 +639,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -699,6 +690,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -719,6 +711,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -756,7 +750,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/curl/gstcurlbasesink.c b/ext/curl/gstcurlbasesink.c
index 58397a1..725f1ac 100644
--- a/ext/curl/gstcurlbasesink.c
+++ b/ext/curl/gstcurlbasesink.c
@@ -349,12 +349,17 @@
 
   sink = GST_CURL_BASE_SINK (bsink);
 
-  GST_OBJECT_LOCK (sink);
-
   gst_buffer_map (buf, &map, GST_MAP_READ);
   data = map.data;
   size = map.size;
 
+  if (size == 0) {
+    gst_buffer_unmap (buf, &map);
+    return GST_FLOW_OK;
+  }
+
+  GST_OBJECT_LOCK (sink);
+
   /* check if the transfer thread has encountered problems while the
    * pipeline thread was working elsewhere */
   if (sink->flow_ret != GST_FLOW_OK) {
diff --git a/ext/daala/Makefile.in b/ext/daala/Makefile.in
index 9fb4b04..e92fc4d 100644
--- a/ext/daala/Makefile.in
+++ b/ext/daala/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/dash/Makefile.in b/ext/dash/Makefile.in
index 35e0af3..ef65ab0 100644
--- a/ext/dash/Makefile.in
+++ b/ext/dash/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -328,7 +327,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -350,7 +348,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -372,9 +369,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -536,6 +530,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -549,8 +544,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -637,8 +630,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -690,6 +681,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -710,6 +702,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -747,7 +741,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/dash/gstdashdemux.c b/ext/dash/gstdashdemux.c
index 35ae2e3..9bbc5ae 100644
--- a/ext/dash/gstdashdemux.c
+++ b/ext/dash/gstdashdemux.c
@@ -233,19 +233,20 @@
 static GstFlowReturn
 gst_dash_demux_stream_update_fragment_info (GstAdaptiveDemuxStream * stream);
 static GstFlowReturn gst_dash_demux_stream_seek (GstAdaptiveDemuxStream *
-    stream, GstClockTime ts);
-static gboolean
-gst_dash_demux_stream_has_next_fragment (GstAdaptiveDemuxStream * stream);
+    stream, gboolean forward, GstSeekFlags flags, GstClockTime ts,
+    GstClockTime * final_ts);
+static gboolean gst_dash_demux_stream_has_next_fragment (GstAdaptiveDemuxStream
+    * stream);
 static GstFlowReturn
 gst_dash_demux_stream_advance_fragment (GstAdaptiveDemuxStream * stream);
 static gboolean
 gst_dash_demux_stream_advance_subfragment (GstAdaptiveDemuxStream * stream);
 static gboolean gst_dash_demux_stream_select_bitrate (GstAdaptiveDemuxStream *
     stream, guint64 bitrate);
-static gint64
-gst_dash_demux_get_manifest_update_interval (GstAdaptiveDemux * demux);
-static GstFlowReturn
-gst_dash_demux_update_manifest_data (GstAdaptiveDemux * demux, GstBuffer * buf);
+static gint64 gst_dash_demux_get_manifest_update_interval (GstAdaptiveDemux *
+    demux);
+static GstFlowReturn gst_dash_demux_update_manifest_data (GstAdaptiveDemux *
+    demux, GstBuffer * buf);
 static gint64
 gst_dash_demux_stream_get_fragment_waiting_time (GstAdaptiveDemuxStream *
     stream);
@@ -309,18 +310,33 @@
     gint64 * stop)
 {
   GstDashDemux *self = GST_DASH_DEMUX (demux);
-  GDateTime *now = gst_dash_demux_get_server_now_utc (self);
-  GDateTime *mstart =
-      gst_date_time_to_g_date_time (self->client->mpd_node->
-      availabilityStartTime);
+  GDateTime *now;
+  GDateTime *mstart;
   GTimeSpan stream_now;
 
+  if (self->client->mpd_node->availabilityStartTime == NULL)
+    return FALSE;
+
+  now = gst_dash_demux_get_server_now_utc (self);
+  mstart =
+      gst_date_time_to_g_date_time (self->client->
+      mpd_node->availabilityStartTime);
   stream_now = g_date_time_difference (now, mstart);
   g_date_time_unref (now);
   g_date_time_unref (mstart);
-  *stop = stream_now * GST_USECOND;
 
-  *start = *stop - (self->client->mpd_node->timeShiftBufferDepth * GST_MSECOND);
+  if (stream_now <= 0)
+    return FALSE;
+
+  *stop = stream_now * GST_USECOND;
+  if (self->client->mpd_node->timeShiftBufferDepth == GST_MPD_DURATION_NONE) {
+    *start = 0;
+  } else {
+    *start =
+        *stop - (self->client->mpd_node->timeShiftBufferDepth * GST_MSECOND);
+    if (*start < 0)
+      *start = 0;
+  }
   return TRUE;
 }
 
@@ -684,6 +700,11 @@
   period_idx = 0;
   if (gst_mpd_client_is_live (dashdemux->client)) {
     GDateTime *g_now;
+    if (dashdemux->client->mpd_node->availabilityStartTime == NULL) {
+      ret = FALSE;
+      GST_ERROR_OBJECT (demux, "MPD does not have availabilityStartTime");
+      goto done;
+    }
     if (dashdemux->clock_drift == NULL) {
       gchar **urls;
       urls =
@@ -827,7 +848,7 @@
   }
 
   /* Create and activate new pads */
-  pad = gst_ghost_pad_new_no_target_from_template (name, tmpl);
+  pad = gst_pad_new_from_template (tmpl, name);
   g_free (name);
   gst_object_unref (tmpl);
 
@@ -1061,7 +1082,8 @@
 
 static void
 gst_dash_demux_stream_sidx_seek (GstDashDemuxStream * dashstream,
-    GstClockTime ts)
+    gboolean forward, GstSeekFlags flags, GstClockTime ts,
+    GstClockTime * final_ts)
 {
   GstSidxBox *sidx = SIDX (dashstream);
   GstSidxBoxEntry *entry;
@@ -1071,36 +1093,68 @@
   if (sidx->entries[idx - 1].pts + sidx->entries[idx - 1].duration < ts) {
     dashstream->sidx_current_remaining = 0;
   } else {
+    GstSearchMode mode = GST_SEARCH_MODE_BEFORE;
+
+    if ((flags & GST_SEEK_FLAG_SNAP_NEAREST) == GST_SEEK_FLAG_SNAP_NEAREST) {
+      mode = GST_SEARCH_MODE_BEFORE;
+    } else if ((forward && (flags & GST_SEEK_FLAG_SNAP_AFTER)) ||
+        (!forward && (flags & GST_SEEK_FLAG_SNAP_BEFORE))) {
+      mode = GST_SEARCH_MODE_AFTER;
+    } else {
+      mode = GST_SEARCH_MODE_BEFORE;
+    }
+
     entry =
         gst_util_array_binary_search (sidx->entries, sidx->entries_count,
         sizeof (GstSidxBoxEntry),
-        (GCompareDataFunc) gst_dash_demux_index_entry_search,
-        GST_SEARCH_MODE_BEFORE, &ts, NULL);
+        (GCompareDataFunc) gst_dash_demux_index_entry_search, mode, &ts, NULL);
 
     idx = entry - sidx->entries;
+
+    /* FIXME in reverse mode, if we are exactly at a fragment start it makes more
+     * sense to start from the end of the previous fragment */
+    /* FIXME we should have a GST_SEARCH_MODE_NEAREST */
+    if ((flags & GST_SEEK_FLAG_SNAP_NEAREST) == GST_SEEK_FLAG_SNAP_NEAREST &&
+        idx + 1 < sidx->entries_count) {
+      if (ABS (sidx->entries[idx + 1].pts - ts) <
+          ABS (sidx->entries[idx].pts - ts))
+        idx += 1;
+    }
+
     dashstream->sidx_current_remaining = sidx->entries[idx].size;
   }
 
   sidx->entry_index = idx;
   dashstream->sidx_index = idx;
+
+  if (final_ts) {
+    if (idx == sidx->entries_count)
+      *final_ts = sidx->entries[idx].pts + sidx->entries[idx].duration;
+    else
+      *final_ts = sidx->entries[idx].pts;
+  }
 }
 
 static GstFlowReturn
-gst_dash_demux_stream_seek (GstAdaptiveDemuxStream * stream, GstClockTime ts)
+gst_dash_demux_stream_seek (GstAdaptiveDemuxStream * stream, gboolean forward,
+    GstSeekFlags flags, GstClockTime ts, GstClockTime * final_ts)
 {
   GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream;
   GstDashDemux *dashdemux = GST_DASH_DEMUX_CAST (stream->demux);
 
   if (gst_mpd_client_has_isoff_ondemand_profile (dashdemux->client)) {
     if (dashstream->sidx_parser.status == GST_ISOFF_SIDX_PARSER_FINISHED) {
-      gst_dash_demux_stream_sidx_seek (dashstream, ts);
+      gst_dash_demux_stream_sidx_seek (dashstream, forward, flags, ts,
+          final_ts);
     } else {
       /* no index yet, seek when we have it */
+      /* FIXME - the final_ts won't be correct here */
       dashstream->pending_seek_ts = ts;
     }
   }
 
-  gst_mpd_client_stream_seek (dashdemux->client, dashstream->active_stream, ts);
+  gst_mpd_client_stream_seek (dashdemux->client, dashstream->active_stream,
+      forward, flags, ts, final_ts);
   return GST_FLOW_OK;
 }
 
@@ -1254,6 +1308,10 @@
   return ret;
 }
 
+#define SEEK_UPDATES_PLAY_POSITION(r, start_type, stop_type) \
+  ((r >= 0 && start_type != GST_SEEK_TYPE_NONE) || \
+   (r < 0 && stop_type != GST_SEEK_TYPE_NONE))
+
 static gboolean
 gst_dash_demux_seek (GstAdaptiveDemux * demux, GstEvent * seek)
 {
@@ -1273,11 +1331,16 @@
   gst_event_parse_seek (seek, &rate, &format, &flags, &start_type, &start,
       &stop_type, &stop);
 
-  /* TODO check if start-type/stop-type is SET */
-  if (demux->segment.rate > 0.0)
-    target_pos = (GstClockTime) demux->segment.start;
-  else
-    target_pos = (GstClockTime) demux->segment.stop;
+  if (!SEEK_UPDATES_PLAY_POSITION (rate, start_type, stop_type)) {
+    /* nothing to do if we don't have to update the current position */
+    return TRUE;
+  }
+
+  if (demux->segment.rate > 0.0) {
+    target_pos = (GstClockTime) start;
+  } else {
+    target_pos = (GstClockTime) stop;
+  }
 
   /* select the requested Period in the Media Presentation */
   if (!gst_mpd_client_setup_media_presentation (dashdemux->client, target_pos,
@@ -1326,7 +1389,7 @@
       gst_isoff_sidx_parser_clear (&dashstream->sidx_parser);
       gst_isoff_sidx_parser_init (&dashstream->sidx_parser);
     }
-    gst_dash_demux_stream_seek (iter->data, target_pos);
+    gst_dash_demux_stream_seek (iter->data, rate >= 0, 0, target_pos, NULL);
   }
   return TRUE;
 }
@@ -1379,17 +1442,23 @@
     if (period_id) {
       if (!gst_mpd_client_set_period_id (new_client, period_id)) {
         GST_DEBUG_OBJECT (demux, "Error setting up the updated manifest file");
+        gst_mpd_client_free (new_client);
+        gst_buffer_unmap (buffer, &mapinfo);
         return GST_FLOW_EOS;
       }
     } else {
       if (!gst_mpd_client_set_period_index (new_client, period_idx)) {
         GST_DEBUG_OBJECT (demux, "Error setting up the updated manifest file");
+        gst_mpd_client_free (new_client);
+        gst_buffer_unmap (buffer, &mapinfo);
         return GST_FLOW_EOS;
       }
     }
 
     if (!gst_dash_demux_setup_mpdparser_streams (dashdemux, new_client)) {
       GST_ERROR_OBJECT (demux, "Failed to setup streams on manifest " "update");
+      gst_mpd_client_free (new_client);
+      gst_buffer_unmap (buffer, &mapinfo);
       return GST_FLOW_ERROR;
     }
 
@@ -1405,6 +1474,8 @@
         GST_DEBUG_OBJECT (demux,
             "Stream of index %d is missing from manifest update",
             demux_stream->index);
+        gst_mpd_client_free (new_client);
+        gst_buffer_unmap (buffer, &mapinfo);
         return GST_FLOW_EOS;
       }
 
@@ -1424,7 +1495,8 @@
             GST_TIME_FORMAT, GST_TIME_ARGS (ts),
             GST_TIME_ARGS (ts + (10 * GST_USECOND)));
         ts += 10 * GST_USECOND;
-        gst_mpd_client_stream_seek (new_client, new_stream, ts);
+        gst_mpd_client_stream_seek (new_client, new_stream,
+            demux->segment.rate >= 0, 0, ts, NULL);
       }
 
       demux_stream->active_stream = new_stream;
@@ -1442,6 +1514,7 @@
      * source element and we have received the 404 HTML response instead of
      * the manifest */
     GST_WARNING_OBJECT (demux, "Error parsing the manifest.");
+    gst_mpd_client_free (new_client);
     gst_buffer_unmap (buffer, &mapinfo);
     return GST_FLOW_ERROR;
   }
@@ -1457,20 +1530,21 @@
 {
   GstDashDemux *dashdemux = GST_DASH_DEMUX_CAST (stream->demux);
   GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream;
-  GstDateTime *seg_end_time;
+  GstDateTime *segmentAvailability;
   GstActiveStream *active_stream = dashstream->active_stream;
 
-  seg_end_time =
-      gst_mpd_client_get_next_segment_availability_end_time (dashdemux->client,
-      active_stream);
+  segmentAvailability =
+      gst_mpd_client_get_next_segment_availability_start_time
+      (dashdemux->client, active_stream);
 
-  if (seg_end_time) {
+  if (segmentAvailability) {
     gint64 diff;
     GstDateTime *cur_time;
 
     cur_time = gst_date_time_new_now_utc ();
-    diff = gst_mpd_client_calculate_time_difference (cur_time, seg_end_time);
-    gst_date_time_unref (seg_end_time);
+    diff = gst_mpd_client_calculate_time_difference (cur_time,
+        segmentAvailability);
+    gst_date_time_unref (segmentAvailability);
     gst_date_time_unref (cur_time);
     /* subtract the server's clock drift, so that if the server's
        time is behind our idea of UTC, we need to sleep for longer
@@ -1584,8 +1658,10 @@
         /* when finished, prepare for real data streaming */
         if (dash_stream->sidx_parser.status == GST_ISOFF_SIDX_PARSER_FINISHED) {
           if (GST_CLOCK_TIME_IS_VALID (dash_stream->pending_seek_ts)) {
+            /* FIXME, preserve seek flags */
             gst_dash_demux_stream_sidx_seek (dash_stream,
-                dash_stream->pending_seek_ts);
+                demux->segment.rate >= 0, 0, dash_stream->pending_seek_ts,
+                NULL);
             dash_stream->pending_seek_ts = GST_CLOCK_TIME_NONE;
           } else {
             SIDX (dash_stream)->entry_index = dash_stream->sidx_index;
@@ -1748,16 +1824,16 @@
   return gst_date_time_new_from_g_date_time (dt2);
 }
 
-struct Rfc822TimeZone
+struct Rfc5322TimeZone
 {
   const gchar *name;
   gfloat tzoffset;
 };
 
 /*
- Parse an RFC822 (section 5) date-time from the Date: field in the
+ Parse an RFC5322 (section 3.3) date-time from the Date: field in the
  HTTP response. 
- See https://tools.ietf.org/html/rfc822#section-5
+ See https://tools.ietf.org/html/rfc5322#section-3.3
 */
 static GstDateTime *
 gst_dash_demux_parse_http_head (GstDashDemuxClockDrift * clock_drift,
@@ -1767,7 +1843,7 @@
     "May", "Jun", "Jul", "Aug",
     "Sep", "Oct", "Nov", "Dec", NULL
   };
-  static const struct Rfc822TimeZone timezones[] = {
+  static const struct Rfc5322TimeZone timezones[] = {
     {"Z", 0},
     {"UT", 0},
     {"GMT", 0},
@@ -1824,9 +1900,6 @@
         break;
       }
     }
-    while (*z == ' ') {
-      ++z;
-    }
     for (int i = 0; timezones[i].name && !parsed_tz; ++i) {
       if (g_ascii_strncasecmp (timezones[i].name, z,
               strlen (timezones[i].name)) == 0) {
@@ -1855,6 +1928,9 @@
         }
       }
     }
+    /* Accept year in both 2 digit or 4 digit format */
+    if (year < 100)
+      year += 2000;
   }
   if (month > 0 && parsed_tz) {
     value = gst_date_time_new (tzoffset,
diff --git a/ext/dash/gstmpdparser.c b/ext/dash/gstmpdparser.c
index 8510999..df96c57 100644
--- a/ext/dash/gstmpdparser.c
+++ b/ext/dash/gstmpdparser.c
@@ -4652,7 +4652,8 @@
 
 gboolean
 gst_mpd_client_stream_seek (GstMpdClient * client, GstActiveStream * stream,
-    GstClockTime ts)
+    gboolean forward, GstSeekFlags flags, GstClockTime ts,
+    GstClockTime * final_ts)
 {
   gint index = 0;
   gint repeat_index = 0;
@@ -4669,18 +4670,48 @@
           stream->segments->len);
       in_segment = FALSE;
       if (segment->start <= ts) {
+        GstClockTime end_time;
+
         if (segment->repeat >= 0) {
-          in_segment =
-              ts < segment->start + (segment->repeat + 1) * segment->duration;
+          end_time = segment->start + (segment->repeat + 1) * segment->duration;
         } else {
-          GstClockTime end =
+          end_time =
               gst_mpdparser_get_segment_end_time (client, stream->segments,
               segment, index);
-          in_segment = ts < end;
         }
+
+        /* avoid downloading another fragment just for 1ns in reverse mode */
+        if (forward)
+          in_segment = ts < end_time;
+        else
+          in_segment = ts <= end_time;
+
         if (in_segment) {
           selectedChunk = segment;
           repeat_index = (ts - segment->start) / segment->duration;
+
+          /* At the end of a segment in reverse mode, start from the previous fragment */
+          if (!forward && repeat_index > 0
+              && ((ts - segment->start) % segment->duration == 0))
+            repeat_index--;
+
+          if ((flags & GST_SEEK_FLAG_SNAP_NEAREST) ==
+              GST_SEEK_FLAG_SNAP_NEAREST) {
+            /* FIXME implement this */
+          } else if ((forward && flags & GST_SEEK_FLAG_SNAP_AFTER) ||
+              (!forward && flags & GST_SEEK_FLAG_SNAP_BEFORE)) {
+
+            if (repeat_index + 1 < segment->repeat) {
+              repeat_index++;
+            } else {
+              repeat_index = 0;
+              if (index + 1 >= stream->segments->len) {
+                selectedChunk = NULL;
+              } else {
+                selectedChunk = g_ptr_array_index (stream->segments, index + 1);
+              }
+            }
+          }
           break;
         }
       }
@@ -4692,6 +4723,9 @@
       GST_DEBUG ("Seek to after last segment");
       return FALSE;
     }
+
+    if (final_ts)
+      *final_ts = selectedChunk->start + selectedChunk->duration * repeat_index;
   } else {
     GstClockTime duration =
         gst_mpd_client_get_segment_duration (client, stream, NULL);
@@ -4710,12 +4744,22 @@
       ts = 0;
 
     index = ts / duration;
+
+    if ((flags & GST_SEEK_FLAG_SNAP_NEAREST) == GST_SEEK_FLAG_SNAP_NEAREST) {
+      /* FIXME implement this */
+    } else if ((forward && flags & GST_SEEK_FLAG_SNAP_AFTER) ||
+        (!forward && flags & GST_SEEK_FLAG_SNAP_BEFORE)) {
+      index++;
+    }
+
     if (segments_count > 0 && index >= segments_count) {
       stream->segment_index = segments_count;
       stream->segment_repeat_index = 0;
       GST_DEBUG ("Seek to after last segment");
       return FALSE;
     }
+    if (final_ts)
+      *final_ts = index * duration;
   }
 
   stream->segment_repeat_index = repeat_index;
@@ -5284,7 +5328,7 @@
   if (stream->cur_segment_base && stream->cur_segment_base->indexRange) {
     *uri =
         g_strdup (gst_mpdparser_get_initializationURL (stream,
-            stream->cur_segment_base->Initialization));
+            stream->cur_segment_base->RepresentationIndex));
     *range_start = stream->cur_segment_base->indexRange->first_byte_pos;
     *range_end = stream->cur_segment_base->indexRange->last_byte_pos;
   } else if (stream->cur_seg_template && stream->cur_seg_template->index) {
@@ -5750,14 +5794,14 @@
 
 
 GstDateTime *
-gst_mpd_client_get_next_segment_availability_end_time (GstMpdClient * client,
+gst_mpd_client_get_next_segment_availability_start_time (GstMpdClient * client,
     GstActiveStream * stream)
 {
   GstDateTime *availability_start_time, *rv;
   gint seg_idx;
-  GstClockTime seg_duration;
-  gint64 offset;
   GstStreamPeriod *stream_period;
+  GstMediaSegment *segment;
+  GstClockTime segmentEndTime;
 
   g_return_val_if_fail (client != NULL, NULL);
   g_return_val_if_fail (stream != NULL, NULL);
@@ -5765,17 +5809,40 @@
   stream_period = gst_mpdparser_get_stream_period (client);
 
   seg_idx = stream->segment_index;
-  seg_duration = gst_mpd_client_get_segment_duration (client, stream, NULL);
-  if (seg_duration == 0)
-    return NULL;
+
+  if (stream->segments) {
+    segment = g_ptr_array_index (stream->segments, seg_idx);
+
+    if (segment->repeat >= 0) {
+      segmentEndTime = segment->start + (stream->segment_repeat_index + 1) *
+          segment->duration;
+    } else if (seg_idx < stream->segments->len - 1) {
+      const GstMediaSegment *next_segment =
+          g_ptr_array_index (stream->segments, seg_idx + 1);
+      segmentEndTime = next_segment->start;
+    } else {
+      const GstStreamPeriod *stream_period;
+      stream_period = gst_mpdparser_get_stream_period (client);
+      segmentEndTime = stream_period->start + stream_period->duration;
+    }
+  } else {
+    GstClockTime seg_duration;
+    seg_duration = gst_mpd_client_get_segment_duration (client, stream, NULL);
+    if (seg_duration == 0)
+      return NULL;
+    segmentEndTime = (1 + seg_idx) * seg_duration;
+  }
+
   availability_start_time = gst_mpd_client_get_availability_start_time (client);
-  if (availability_start_time == NULL)
-    return (GstDateTime *) NULL;
+  if (availability_start_time == NULL) {
+    GST_WARNING_OBJECT (client, "Failed to get availability_start_time");
+    return NULL;
+  }
 
   if (stream_period && stream_period->period) {
     GstDateTime *t =
         gst_mpd_client_add_time_difference (availability_start_time,
-        stream_period->start / 1000);
+        stream_period->start / GST_USECOND);
     gst_date_time_unref (availability_start_time);
     availability_start_time = t;
 
@@ -5785,24 +5852,31 @@
     }
   }
 
-  offset = (1 + seg_idx) * seg_duration;
   rv = gst_mpd_client_add_time_difference (availability_start_time,
-      offset / GST_USECOND);
+      segmentEndTime / GST_USECOND);
   gst_date_time_unref (availability_start_time);
+  if (rv == NULL) {
+    GST_WARNING_OBJECT (client, "Failed to offset availability_start_time");
+    return NULL;
+  }
+
   return rv;
 }
 
 gboolean
 gst_mpd_client_seek_to_time (GstMpdClient * client, GDateTime * time)
 {
-  GDateTime *start =
-      gst_date_time_to_g_date_time (client->mpd_node->availabilityStartTime);
+  GDateTime *start;
   GTimeSpan ts_microseconds;
   GstClockTime ts;
   gboolean ret = TRUE;
   GList *stream;
 
-  g_return_val_if_fail (gst_mpd_client_is_live (client), 0);
+  g_return_val_if_fail (gst_mpd_client_is_live (client), FALSE);
+  g_return_val_if_fail (client->mpd_node->availabilityStartTime != NULL, FALSE);
+
+  start =
+      gst_date_time_to_g_date_time (client->mpd_node->availabilityStartTime);
 
   ts_microseconds = g_date_time_difference (time, start);
   g_date_time_unref (start);
@@ -5813,7 +5887,9 @@
 
   ts = ts_microseconds * GST_USECOND;
   for (stream = client->active_streams; stream; stream = g_list_next (stream)) {
-    ret = ret & gst_mpd_client_stream_seek (client, stream->data, ts);
+    ret =
+        ret & gst_mpd_client_stream_seek (client, stream->data, TRUE, 0, ts,
+        NULL);
   }
   return ret;
 }
diff --git a/ext/dash/gstmpdparser.h b/ext/dash/gstmpdparser.h
index fcd3b69..1b303aa 100644
--- a/ext/dash/gstmpdparser.h
+++ b/ext/dash/gstmpdparser.h
@@ -544,7 +544,7 @@
 gboolean gst_mpd_client_get_next_header (GstMpdClient *client, gchar **uri, guint stream_idx, gint64 * range_start, gint64 * range_end);
 gboolean gst_mpd_client_get_next_header_index (GstMpdClient *client, gchar **uri, guint stream_idx, gint64 * range_start, gint64 * range_end);
 gboolean gst_mpd_client_is_live (GstMpdClient * client);
-gboolean gst_mpd_client_stream_seek (GstMpdClient * client, GstActiveStream * stream, GstClockTime ts);
+gboolean gst_mpd_client_stream_seek (GstMpdClient * client, GstActiveStream * stream, gboolean forward, GstSeekFlags flags, GstClockTime ts, GstClockTime * final_ts);
 gboolean gst_mpd_client_seek_to_time (GstMpdClient * client, GDateTime * time);
 GstClockTime gst_mpd_parser_get_stream_presentation_offset (GstMpdClient *client, guint stream_idx);
 gchar** gst_mpd_client_get_utc_timing_sources (GstMpdClient *client, guint methods, GstMPDUTCTimingType *selected_method);
@@ -579,7 +579,7 @@
 gboolean gst_mpd_client_has_next_segment (GstMpdClient * client, GstActiveStream * stream, gboolean forward);
 GstFlowReturn gst_mpd_client_advance_segment (GstMpdClient * client, GstActiveStream * stream, gboolean forward);
 void gst_mpd_client_seek_to_first_segment (GstMpdClient * client);
-GstDateTime *gst_mpd_client_get_next_segment_availability_end_time (GstMpdClient * client, GstActiveStream * stream);
+GstDateTime *gst_mpd_client_get_next_segment_availability_start_time (GstMpdClient * client, GstActiveStream * stream);
 
 /* Get audio/video stream parameters (caps, width, height, rate, number of channels) */
 GstCaps * gst_mpd_client_get_stream_caps (GstActiveStream * stream);
diff --git a/ext/dc1394/Makefile.in b/ext/dc1394/Makefile.in
index b8e7948..7a2173b 100644
--- a/ext/dc1394/Makefile.in
+++ b/ext/dc1394/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/directfb/Makefile.in b/ext/directfb/Makefile.in
index 82c33ee..7aa2e3b 100644
--- a/ext/directfb/Makefile.in
+++ b/ext/directfb/Makefile.in
@@ -118,16 +118,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -333,7 +332,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -355,7 +353,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -377,9 +374,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -541,6 +535,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -554,8 +549,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -642,8 +635,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -695,6 +686,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -715,6 +707,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -752,7 +746,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/dtls/Makefile.in b/ext/dtls/Makefile.in
index 6a5eb8b..24a0ef6 100644
--- a/ext/dtls/Makefile.in
+++ b/ext/dtls/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -330,7 +329,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -352,7 +350,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -374,9 +371,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -538,6 +532,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -551,8 +546,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -639,8 +632,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -692,6 +683,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -712,6 +704,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -749,7 +743,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/dts/Makefile.in b/ext/dts/Makefile.in
index d06ba46..68e789c 100644
--- a/ext/dts/Makefile.in
+++ b/ext/dts/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/faac/Makefile.in b/ext/faac/Makefile.in
index 55e737e..7e3d70b 100644
--- a/ext/faac/Makefile.in
+++ b/ext/faac/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/faad/Makefile.am b/ext/faad/Makefile.am
index 2aef183..56ad30f 100644
--- a/ext/faad/Makefile.am
+++ b/ext/faad/Makefile.am
@@ -1,11 +1,11 @@
 plugin_LTLIBRARIES = libgstfaad.la
 
 libgstfaad_la_SOURCES = gstfaad.c
-libgstfaad_la_CFLAGS = -DGST_USE_UNSTABLE_API \
+libgstfaad_la_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(FAAD_CFLAGS)
 libgstfaad_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_API_VERSION@ \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(FAAD_LIBS)
+	$(GST_BASE_LIBS) $(GST_LIBS) $(FAAD_LIBS) $(LIBM)
 libgstfaad_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstfaad_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 
diff --git a/ext/faad/Makefile.in b/ext/faad/Makefile.in
index 5a1e47f..b49d862 100644
--- a/ext/faad/Makefile.in
+++ b/ext/faad/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -166,7 +165,7 @@
 am__DEPENDENCIES_1 =
 libgstfaad_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 am_libgstfaad_la_OBJECTS = libgstfaad_la-gstfaad.lo
 libgstfaad_la_OBJECTS = $(am_libgstfaad_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -785,12 +778,12 @@
 wayland_scanner = @wayland_scanner@
 plugin_LTLIBRARIES = libgstfaad.la
 libgstfaad_la_SOURCES = gstfaad.c
-libgstfaad_la_CFLAGS = -DGST_USE_UNSTABLE_API \
+libgstfaad_la_CFLAGS = \
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(FAAD_CFLAGS)
 
 libgstfaad_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_API_VERSION@ \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(FAAD_LIBS)
+	$(GST_BASE_LIBS) $(GST_LIBS) $(FAAD_LIBS) $(LIBM)
 
 libgstfaad_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstfaad_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
diff --git a/ext/faad/gstfaad.c b/ext/faad/gstfaad.c
index 8197ca5..b72b42d 100644
--- a/ext/faad/gstfaad.c
+++ b/ext/faad/gstfaad.c
@@ -42,49 +42,8 @@
 #include <string.h>
 #include <gst/audio/audio.h>
 
-/* These are the correct types for these functions, as defined in the source,
- * with types changed to match glib types, since those are defined for us.
- * However, upstream FAAD is distributed with a broken header file that defined
- * these wrongly (in a way which was broken on 64 bit systems).
- *
- * Upstream CVS still has the bug, but has also renamed all the public symbols
- * for Better Corporate Branding (or whatever), so we need to take that
- * (FAAD_IS_NEAAC) into account as well.
- *
- * We must call them using these definitions. Most distributions now have the
- * corrected header file (they distribute a patch along with the source), 
- * but not all, hence this Truly Evil Hack.
- *
- * Note: The prototypes don't need to be defined conditionaly, as the cpp will
- * do that for us.
- */
-#if FAAD2_MINOR_VERSION < 7
-#ifdef FAAD_IS_NEAAC
-#define NeAACDecInit NeAACDecInit_no_definition
-#define NeAACDecInit2 NeAACDecInit2_no_definition
-#else
-#define faacDecInit faacDecInit_no_definition
-#define faacDecInit2 faacDecInit2_no_definition
-#endif
-#endif /* FAAD2_MINOR_VERSION < 7 */
-
 #include "gstfaad.h"
 
-#if FAAD2_MINOR_VERSION < 7
-#ifdef FAAD_IS_NEAAC
-#undef NeAACDecInit
-#undef NeAACDecInit2
-#else
-#undef faacDecInit
-#undef faacDecInit2
-#endif
-
-extern long faacDecInit (faacDecHandle, guint8 *, guint32, guint32 *, guint8 *);
-extern gint8 faacDecInit2 (faacDecHandle, guint8 *, guint32,
-    guint32 *, guint8 *);
-
-#endif /* FAAD2_MINOR_VERSION < 7 */
-
 GST_DEBUG_CATEGORY_STATIC (faad_debug);
 #define GST_CAT_DEFAULT faad_debug
 
@@ -277,11 +236,7 @@
   faad->packetised = FALSE;
 
   if ((value = gst_structure_get_value (str, "codec_data"))) {
-#if FAAD2_MINOR_VERSION >= 7
     unsigned long samplerate;
-#else
-    guint32 samplerate;
-#endif
     guint8 channels;
 
     /* We have codec data, means packetised stream */
@@ -691,11 +646,7 @@
 init:
   /* init if not already done during capsnego */
   if (!faad->init) {
-#if FAAD2_MINOR_VERSION >= 7
     unsigned long rate;
-#else
-    guint32 rate;
-#endif
     guint8 ch;
 
     GST_DEBUG_OBJECT (faad, "initialising ...");
diff --git a/ext/faad/gstfaad.h b/ext/faad/gstfaad.h
index 1e34797..03bd6ab 100644
--- a/ext/faad/gstfaad.h
+++ b/ext/faad/gstfaad.h
@@ -23,11 +23,7 @@
 #include <gst/gst.h>
 #include <gst/audio/gstaudiodecoder.h>
 
-#ifdef FAAD_IS_NEAAC
 #include <neaacdec.h>
-#else
-#include <faad.h>
-#endif
 
 G_BEGIN_DECLS
 
diff --git a/ext/flite/Makefile.in b/ext/flite/Makefile.in
index 822b579..4145c8d 100644
--- a/ext/flite/Makefile.in
+++ b/ext/flite/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -322,7 +321,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -344,7 +342,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -366,9 +363,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -530,6 +524,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -543,8 +538,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -631,8 +624,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -684,6 +675,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -704,6 +696,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -741,7 +735,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/fluidsynth/Makefile.in b/ext/fluidsynth/Makefile.in
index c039273..f707070 100644
--- a/ext/fluidsynth/Makefile.in
+++ b/ext/fluidsynth/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -331,7 +330,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -353,7 +351,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -375,9 +372,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -539,6 +533,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -552,8 +547,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -640,8 +633,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -693,6 +684,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -713,6 +705,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -750,7 +744,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/gl/Makefile.am b/ext/gl/Makefile.am
index e1b1447..5d55f54 100644
--- a/ext/gl/Makefile.am
+++ b/ext/gl/Makefile.am
@@ -13,6 +13,7 @@
 	gstglimagesink.c \
 	gstglfiltercube.c \
 	gstgleffects.c \
+	effects/gstgleffectscurves.c \
 	effects/gstgleffectssources.c \
 	effects/gstgleffectidentity.c \
 	effects/gstgleffectmirror.c \
@@ -32,6 +33,7 @@
 	effects/gstgleffectsobel.c \
 	effects/gstgleffectlaplacian.c \
 	gstglcolorscale.c \
+	gstglcolorbalance.c \
 	gstglmixer.c \
 	gstglvideomixer.c \
 	gstglfiltershader.c \
@@ -54,6 +56,7 @@
 	gstgleffects.h \
 	effects/gstgleffectssources.h \
 	gstglcolorscale.h \
+	gstglcolorbalance.h \
 	gstglmixer.h \
 	gstglvideomixer.h \
 	gstglfiltershader.h \
@@ -92,7 +95,11 @@
 if HAVE_GRAPHENE
 libgstopengl_la_SOURCES += \
 	gstgltransformation.c \
-	gstgltransformation.h
+	gstglvideoflip.c
+
+noinst_HEADERS += \
+	gstgltransformation.h \
+	gstglvideoflip.h
 endif
 
 if HAVE_JPEG
diff --git a/ext/gl/Makefile.in b/ext/gl/Makefile.in
index 64242a8..9c35e8f 100644
--- a/ext/gl/Makefile.in
+++ b/ext/gl/Makefile.in
@@ -116,18 +116,22 @@
 
 @HAVE_GRAPHENE_TRUE@am__append_5 = \
 @HAVE_GRAPHENE_TRUE@	gstgltransformation.c \
-@HAVE_GRAPHENE_TRUE@	gstgltransformation.h
+@HAVE_GRAPHENE_TRUE@	gstglvideoflip.c
 
-@HAVE_JPEG_TRUE@@HAVE_PNG_TRUE@am__append_6 = \
-@HAVE_JPEG_TRUE@@HAVE_PNG_TRUE@	gstgloverlay.c
+@HAVE_GRAPHENE_TRUE@am__append_6 = \
+@HAVE_GRAPHENE_TRUE@	gstgltransformation.h \
+@HAVE_GRAPHENE_TRUE@	gstglvideoflip.h
 
 @HAVE_JPEG_TRUE@@HAVE_PNG_TRUE@am__append_7 = \
+@HAVE_JPEG_TRUE@@HAVE_PNG_TRUE@	gstgloverlay.c
+
+@HAVE_JPEG_TRUE@@HAVE_PNG_TRUE@am__append_8 = \
 @HAVE_JPEG_TRUE@@HAVE_PNG_TRUE@	gstgloverlay.h
 
-@HAVE_WINDOW_COCOA_TRUE@am__append_8 = \
+@HAVE_WINDOW_COCOA_TRUE@am__append_9 = \
 @HAVE_WINDOW_COCOA_TRUE@	caopengllayersink.m
 
-@HAVE_WINDOW_COCOA_TRUE@am__append_9 = \
+@HAVE_WINDOW_COCOA_TRUE@am__append_10 = \
 @HAVE_WINDOW_COCOA_TRUE@	caopengllayersink.h
 
 subdir = ext/gl
@@ -156,16 +160,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__noinst_HEADERS_DIST) \
@@ -215,22 +218,23 @@
 	gstgluploadelement.c gstgldownloadelement.c \
 	gstglcolorconvertelement.c gstglfilterbin.c gstglmixerbin.c \
 	gstglsinkbin.c gstglsrcbin.c gstglimagesink.c \
-	gstglfiltercube.c gstgleffects.c effects/gstgleffectssources.c \
-	effects/gstgleffectidentity.c effects/gstgleffectmirror.c \
-	effects/gstgleffectsqueeze.c effects/gstgleffectstretch.c \
-	effects/gstgleffectfisheye.c effects/gstgleffecttwirl.c \
-	effects/gstgleffectbulge.c effects/gstgleffecttunnel.c \
-	effects/gstgleffectsquare.c effects/gstgleffectlumatocurve.c \
+	gstglfiltercube.c gstgleffects.c effects/gstgleffectscurves.c \
+	effects/gstgleffectssources.c effects/gstgleffectidentity.c \
+	effects/gstgleffectmirror.c effects/gstgleffectsqueeze.c \
+	effects/gstgleffectstretch.c effects/gstgleffectfisheye.c \
+	effects/gstgleffecttwirl.c effects/gstgleffectbulge.c \
+	effects/gstgleffecttunnel.c effects/gstgleffectsquare.c \
+	effects/gstgleffectlumatocurve.c \
 	effects/gstgleffectrgbtocurve.c effects/gstgleffectsin.c \
 	effects/gstgleffectxray.c effects/gstgleffectglow.c \
 	effects/gstgleffectblur.c effects/gstgleffectsobel.c \
-	effects/gstgleffectlaplacian.c gstglcolorscale.c gstglmixer.c \
-	gstglvideomixer.c gstglfiltershader.c gstglfilterapp.c \
-	gstglviewconvert.c gstglstereosplit.c gstglstereomix.c \
-	gstglfilterglass.c gstgldeinterlace.c gltestsrc.c \
-	gstgltestsrc.c gstglmosaic.c gstgldifferencematte.c \
-	gstgltransformation.c gstgltransformation.h gstgloverlay.c \
-	caopengllayersink.m
+	effects/gstgleffectlaplacian.c gstglcolorscale.c \
+	gstglcolorbalance.c gstglmixer.c gstglvideomixer.c \
+	gstglfiltershader.c gstglfilterapp.c gstglviewconvert.c \
+	gstglstereosplit.c gstglstereomix.c gstglfilterglass.c \
+	gstgldeinterlace.c gltestsrc.c gstgltestsrc.c gstglmosaic.c \
+	gstgldifferencematte.c gstgltransformation.c gstglvideoflip.c \
+	gstgloverlay.c caopengllayersink.m
 am__dirstamp = $(am__leading_dot)dirstamp
 @USE_OPENGL_TRUE@am__objects_1 = libgstopengl_la-gstglfilterglass.lo \
 @USE_OPENGL_TRUE@	libgstopengl_la-gstgldeinterlace.lo \
@@ -239,7 +243,8 @@
 @USE_OPENGL_TRUE@	libgstopengl_la-gstglmosaic.lo
 @HAVE_PNG_TRUE@@USE_OPENGL_TRUE@am__objects_2 = libgstopengl_la-gstgldifferencematte.lo
 @HAVE_GRAPHENE_TRUE@am__objects_3 =  \
-@HAVE_GRAPHENE_TRUE@	libgstopengl_la-gstgltransformation.lo
+@HAVE_GRAPHENE_TRUE@	libgstopengl_la-gstgltransformation.lo \
+@HAVE_GRAPHENE_TRUE@	libgstopengl_la-gstglvideoflip.lo
 @HAVE_JPEG_TRUE@@HAVE_PNG_TRUE@am__objects_4 = libgstopengl_la-gstgloverlay.lo
 @HAVE_WINDOW_COCOA_TRUE@am__objects_5 =  \
 @HAVE_WINDOW_COCOA_TRUE@	libgstopengl_la-caopengllayersink.lo
@@ -254,6 +259,7 @@
 	libgstopengl_la-gstglimagesink.lo \
 	libgstopengl_la-gstglfiltercube.lo \
 	libgstopengl_la-gstgleffects.lo \
+	effects/libgstopengl_la-gstgleffectscurves.lo \
 	effects/libgstopengl_la-gstgleffectssources.lo \
 	effects/libgstopengl_la-gstgleffectidentity.lo \
 	effects/libgstopengl_la-gstgleffectmirror.lo \
@@ -273,6 +279,7 @@
 	effects/libgstopengl_la-gstgleffectsobel.lo \
 	effects/libgstopengl_la-gstgleffectlaplacian.lo \
 	libgstopengl_la-gstglcolorscale.lo \
+	libgstopengl_la-gstglcolorbalance.lo \
 	libgstopengl_la-gstglmixer.lo \
 	libgstopengl_la-gstglvideomixer.lo \
 	libgstopengl_la-gstglfiltershader.lo \
@@ -354,12 +361,13 @@
 	gstgldownloadelement.h gstglcolorconvertelement.h \
 	gstglfilterbin.h gstglmixerbin.h gstglsinkbin.h gstglsrcbin.h \
 	gstglimagesink.h gstglfiltercube.h gstgleffects.h \
-	effects/gstgleffectssources.h gstglcolorscale.h gstglmixer.h \
-	gstglvideomixer.h gstglfiltershader.h gstglfilterapp.h \
-	gstglstereosplit.h gstglstereomix.h gstglviewconvert.h \
-	gstglfilterglass.h gstgldeinterlace.h gltestsrc.h \
-	gstgltestsrc.h gstglmosaic.h effects/gstgleffectscurves.h \
-	effects/gstgleffectlumatocurve.h gstgldifferencematte.h \
+	effects/gstgleffectssources.h gstglcolorscale.h \
+	gstglcolorbalance.h gstglmixer.h gstglvideomixer.h \
+	gstglfiltershader.h gstglfilterapp.h gstglstereosplit.h \
+	gstglstereomix.h gstglviewconvert.h gstglfilterglass.h \
+	gstgldeinterlace.h gltestsrc.h gstgltestsrc.h gstglmosaic.h \
+	effects/gstgleffectscurves.h effects/gstgleffectlumatocurve.h \
+	gstgldifferencematte.h gstgltransformation.h gstglvideoflip.h \
 	gstgloverlay.h caopengllayersink.h
 HEADERS = $(noinst_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
@@ -467,7 +475,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -489,7 +496,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -511,9 +517,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -675,6 +678,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -688,8 +692,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -776,8 +778,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -829,6 +829,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -849,6 +850,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -886,7 +889,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -931,29 +933,32 @@
 	gstgluploadelement.c gstgldownloadelement.c \
 	gstglcolorconvertelement.c gstglfilterbin.c gstglmixerbin.c \
 	gstglsinkbin.c gstglsrcbin.c gstglimagesink.c \
-	gstglfiltercube.c gstgleffects.c effects/gstgleffectssources.c \
-	effects/gstgleffectidentity.c effects/gstgleffectmirror.c \
-	effects/gstgleffectsqueeze.c effects/gstgleffectstretch.c \
-	effects/gstgleffectfisheye.c effects/gstgleffecttwirl.c \
-	effects/gstgleffectbulge.c effects/gstgleffecttunnel.c \
-	effects/gstgleffectsquare.c effects/gstgleffectlumatocurve.c \
+	gstglfiltercube.c gstgleffects.c effects/gstgleffectscurves.c \
+	effects/gstgleffectssources.c effects/gstgleffectidentity.c \
+	effects/gstgleffectmirror.c effects/gstgleffectsqueeze.c \
+	effects/gstgleffectstretch.c effects/gstgleffectfisheye.c \
+	effects/gstgleffecttwirl.c effects/gstgleffectbulge.c \
+	effects/gstgleffecttunnel.c effects/gstgleffectsquare.c \
+	effects/gstgleffectlumatocurve.c \
 	effects/gstgleffectrgbtocurve.c effects/gstgleffectsin.c \
 	effects/gstgleffectxray.c effects/gstgleffectglow.c \
 	effects/gstgleffectblur.c effects/gstgleffectsobel.c \
-	effects/gstgleffectlaplacian.c gstglcolorscale.c gstglmixer.c \
-	gstglvideomixer.c gstglfiltershader.c gstglfilterapp.c \
-	gstglviewconvert.c gstglstereosplit.c gstglstereomix.c \
-	$(am__append_1) $(am__append_3) $(am__append_5) \
-	$(am__append_6) $(am__append_8)
+	effects/gstgleffectlaplacian.c gstglcolorscale.c \
+	gstglcolorbalance.c gstglmixer.c gstglvideomixer.c \
+	gstglfiltershader.c gstglfilterapp.c gstglviewconvert.c \
+	gstglstereosplit.c gstglstereomix.c $(am__append_1) \
+	$(am__append_3) $(am__append_5) $(am__append_7) \
+	$(am__append_9)
 noinst_HEADERS = gstglbasemixer.h gstgluploadelement.h \
 	gstgldownloadelement.h gstglcolorconvertelement.h \
 	gstglfilterbin.h gstglmixerbin.h gstglsinkbin.h gstglsrcbin.h \
 	gstglimagesink.h gstglfiltercube.h gstgleffects.h \
-	effects/gstgleffectssources.h gstglcolorscale.h gstglmixer.h \
-	gstglvideomixer.h gstglfiltershader.h gstglfilterapp.h \
-	gstglstereosplit.h gstglstereomix.h gstglviewconvert.h \
-	$(am__append_2) $(am__append_4) $(am__append_7) \
-	$(am__append_9)
+	effects/gstgleffectssources.h gstglcolorscale.h \
+	gstglcolorbalance.h gstglmixer.h gstglvideomixer.h \
+	gstglfiltershader.h gstglfilterapp.h gstglstereosplit.h \
+	gstglstereomix.h gstglviewconvert.h $(am__append_2) \
+	$(am__append_4) $(am__append_6) $(am__append_8) \
+	$(am__append_10)
 libgstopengl_la_OBJCFLAGS = \
 	-I$(top_srcdir)/gst-libs \
 	-I$(top_builddir)/gst-libs \
@@ -1064,6 +1069,8 @@
 effects/$(DEPDIR)/$(am__dirstamp):
 	@$(MKDIR_P) effects/$(DEPDIR)
 	@: > effects/$(DEPDIR)/$(am__dirstamp)
+effects/libgstopengl_la-gstgleffectscurves.lo:  \
+	effects/$(am__dirstamp) effects/$(DEPDIR)/$(am__dirstamp)
 effects/libgstopengl_la-gstgleffectssources.lo:  \
 	effects/$(am__dirstamp) effects/$(DEPDIR)/$(am__dirstamp)
 effects/libgstopengl_la-gstgleffectidentity.lo:  \
@@ -1115,6 +1122,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-caopengllayersink.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-gltestsrc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-gstglbasemixer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-gstglcolorbalance.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-gstglcolorconvertelement.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-gstglcolorscale.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-gstgldeinterlace.Plo@am__quote@
@@ -1138,6 +1146,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-gstgltestsrc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-gstgltransformation.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-gstgluploadelement.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-gstglvideoflip.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-gstglvideomixer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-gstglviewconvert.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopengl_la-gstopengl.Plo@am__quote@
@@ -1150,6 +1159,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@effects/$(DEPDIR)/libgstopengl_la-gstgleffectlumatocurve.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@effects/$(DEPDIR)/libgstopengl_la-gstgleffectmirror.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@effects/$(DEPDIR)/libgstopengl_la-gstgleffectrgbtocurve.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@effects/$(DEPDIR)/libgstopengl_la-gstgleffectscurves.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@effects/$(DEPDIR)/libgstopengl_la-gstgleffectsin.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@effects/$(DEPDIR)/libgstopengl_la-gstgleffectsobel.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@effects/$(DEPDIR)/libgstopengl_la-gstgleffectsquare.Plo@am__quote@
@@ -1268,6 +1278,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstgleffects.lo `test -f 'gstgleffects.c' || echo '$(srcdir)/'`gstgleffects.c
 
+effects/libgstopengl_la-gstgleffectscurves.lo: effects/gstgleffectscurves.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT effects/libgstopengl_la-gstgleffectscurves.lo -MD -MP -MF effects/$(DEPDIR)/libgstopengl_la-gstgleffectscurves.Tpo -c -o effects/libgstopengl_la-gstgleffectscurves.lo `test -f 'effects/gstgleffectscurves.c' || echo '$(srcdir)/'`effects/gstgleffectscurves.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) effects/$(DEPDIR)/libgstopengl_la-gstgleffectscurves.Tpo effects/$(DEPDIR)/libgstopengl_la-gstgleffectscurves.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='effects/gstgleffectscurves.c' object='effects/libgstopengl_la-gstgleffectscurves.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o effects/libgstopengl_la-gstgleffectscurves.lo `test -f 'effects/gstgleffectscurves.c' || echo '$(srcdir)/'`effects/gstgleffectscurves.c
+
 effects/libgstopengl_la-gstgleffectssources.lo: effects/gstgleffectssources.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT effects/libgstopengl_la-gstgleffectssources.lo -MD -MP -MF effects/$(DEPDIR)/libgstopengl_la-gstgleffectssources.Tpo -c -o effects/libgstopengl_la-gstgleffectssources.lo `test -f 'effects/gstgleffectssources.c' || echo '$(srcdir)/'`effects/gstgleffectssources.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) effects/$(DEPDIR)/libgstopengl_la-gstgleffectssources.Tpo effects/$(DEPDIR)/libgstopengl_la-gstgleffectssources.Plo
@@ -1401,6 +1418,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstglcolorscale.lo `test -f 'gstglcolorscale.c' || echo '$(srcdir)/'`gstglcolorscale.c
 
+libgstopengl_la-gstglcolorbalance.lo: gstglcolorbalance.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstglcolorbalance.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstglcolorbalance.Tpo -c -o libgstopengl_la-gstglcolorbalance.lo `test -f 'gstglcolorbalance.c' || echo '$(srcdir)/'`gstglcolorbalance.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstglcolorbalance.Tpo $(DEPDIR)/libgstopengl_la-gstglcolorbalance.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstglcolorbalance.c' object='libgstopengl_la-gstglcolorbalance.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstglcolorbalance.lo `test -f 'gstglcolorbalance.c' || echo '$(srcdir)/'`gstglcolorbalance.c
+
 libgstopengl_la-gstglmixer.lo: gstglmixer.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstglmixer.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstglmixer.Tpo -c -o libgstopengl_la-gstglmixer.lo `test -f 'gstglmixer.c' || echo '$(srcdir)/'`gstglmixer.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstglmixer.Tpo $(DEPDIR)/libgstopengl_la-gstglmixer.Plo
@@ -1499,6 +1523,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstgltransformation.lo `test -f 'gstgltransformation.c' || echo '$(srcdir)/'`gstgltransformation.c
 
+libgstopengl_la-gstglvideoflip.lo: gstglvideoflip.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstglvideoflip.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstglvideoflip.Tpo -c -o libgstopengl_la-gstglvideoflip.lo `test -f 'gstglvideoflip.c' || echo '$(srcdir)/'`gstglvideoflip.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstglvideoflip.Tpo $(DEPDIR)/libgstopengl_la-gstglvideoflip.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstglvideoflip.c' object='libgstopengl_la-gstglvideoflip.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstglvideoflip.lo `test -f 'gstglvideoflip.c' || echo '$(srcdir)/'`gstglvideoflip.c
+
 libgstopengl_la-gstgloverlay.lo: gstgloverlay.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstgloverlay.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstgloverlay.Tpo -c -o libgstopengl_la-gstgloverlay.lo `test -f 'gstgloverlay.c' || echo '$(srcdir)/'`gstgloverlay.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstgloverlay.Tpo $(DEPDIR)/libgstopengl_la-gstgloverlay.Plo
diff --git a/ext/gl/effects/gstgleffectidentity.c b/ext/gl/effects/gstgleffectidentity.c
index ce29f60..5687d64 100644
--- a/ext/gl/effects/gstgleffectidentity.c
+++ b/ext/gl/effects/gstgleffectidentity.c
@@ -54,6 +54,8 @@
         gst_gl_shader_get_attribute_location (shader, "a_position");
     filter->draw_attr_texture_loc =
         gst_gl_shader_get_attribute_location (shader, "a_texcoord");
+
+    g_hash_table_insert (effects->shaderstable, (gchar *) "identity0", shader);
   }
   gst_gl_shader_use (shader);
 
diff --git a/ext/gl/effects/gstgleffectscurves.c b/ext/gl/effects/gstgleffectscurves.c
new file mode 100644
index 0000000..d16361b
--- /dev/null
+++ b/ext/gl/effects/gstgleffectscurves.c
@@ -0,0 +1,210 @@
+/* 
+ * GStreamer
+ * Copyright (C) 2008 Filippo Argiolas <filippo.argiolas@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstgleffectscurves.h"
+
+/* CURVE for the heat signature effect */
+const GstGLEffectsCurve xpro_curve = {
+  256, 1, 3,
+  "\0\0\37\0\0\37\0\1\40\0\2!\0\2\"\0\3\"\1\4%\1\4%\1\5%\1\5'\1\7'\1\7(\1\7"
+      "(\1\10*\1\11+\1\11,\1\12,\1\13/\1\14/\1\14" "1\2\15" "1\2\15" "1\2\16"
+      "4\2\17" "" "4\3\17" "5\3\22" "7\3\22" "7\3\23" "8\3\24"
+      "9\3\25;\3\26;\3\27<\3\27=\4\31"
+      "=\4\33?\4\34@\5\34B\5\35C\5\36D\5\40D\5\40G\5!G\6\"H\6$H\7&J\7&K\7*M\7*M"
+      "\10+N\10-P\11-P\11/R\11" "3R\11" "3T\12" "4U\12" "5U\13" "7W\14" "8Y\14"
+      "9Y\14"
+      "<Y\16=[\16@^\16@^\17C^\17D`\20F`\20Jb\22Jb\22Kc\23Me\24Nf\25Qg\26Rg\27Ti"
+      "\27Wj\30Xl\31Yl\33\\m\34^p\35`p\40bp\40fq!fr$gt$lt%lu'mv(px*qy-ty/uz/x|0"
+      "y}3|}4}~5\177\2018\203\2019\203\201;\204\202=\207\203?\210\204@\214\204C"
+      "\214\206D\216\207G\217\210H\223\211K\223\211M\225\212P\226\214Q\231\215T"
+      "\232\215U\234\216X\235\217Y\240\220\\\241\220^\243\221`\244\223b\246\224"
+      "e\250\224f\252\225i\253\226l\255\227m\256\231p\261\231q\262\232t\264\233"
+      "v\265\234x\267\234z\270\235|\271\236~\274\240\201\275\240\202\277\241\204"
+      "\300\242\207\302\243\210\303\243\212\305\244\214\306\245\216\307\246\220"
+      "\311\250\221\313\250\224\315\251\226\316\252\227\317\253\232\321\253\234"
+      "\322\254\235\323\255\240\325\256\242\326\256\242\330\256\245\331\261\250"
+      "\331\262\251\332\262\253\334\263\255\335\264\256\336\265\261\340\266\263"
+      "\341\266\264\342\267\266\343\270\270\344\271\271\344\271\271\346\273\276"
+      "\347\274\277\350\275\277\351\275\302\352\276\304\353\277\306\353\300\307"
+      "\355\300\311\356\301\314\356\302\315\357\303\317\360\304\320\360\304\322"
+      "\361\305\323\362\306\325\362\307\327\363\307\330\363\310\330\364\311\333"
+      "\364\313\334\365\313\336\365\314\340\365\314\342\366\316\342\366\316\346"
+      "\367\317\347\367\320\351\367\320\353\370\322\354\370\322\356\370\323\356"
+      "\370\324\360\371\325\360\371\325\363\371\326\363\371\327\363\372\330\365"
+      "\372\330\366\372\331\366\372\331\370\372\332\371\373\332\371\373\333\372"
+      "\373\334\373\373\335\373\373\336\374\373\336\374\374\337\374\374\340\375"
+      "\374\341\375\374\341\376\374\342\376\374\343\376\374\344\376\374\344\377"
+      "\374\345\377\374\346\377\375\346\377\375\346\377\375\347\377\375\350\377"
+      "\375\351\377\375\352\377\375\352\377\375\352\377\375\353\377\375\353\377"
+      "\376\354\377\376\354\377\376\356\377\376\356\377\376\356\377\376\357\377"
+      "\376\360\377\376\360\377\376\360\377\376\360\377\376\362\377\376\362\377"
+      "\376\363\377\376\363\377\376\363\377\376\363\377\376\364\377\376\364\377"
+      "\376\365\377\377\365\377\377\366\377\377\366\377\377\366\377\377\367\377"
+      "\377\367\377\377\367\377\377\370",
+};
+
+const GstGLEffectsCurve luma_xpro_curve = {
+  256, 1, 3,
+  "\0\0\1\0\1\1\0\1\2\0\1\2\0\1\2\0\1\2\0\1\3\0\2\3\0\2\4\0\2\4\0\2\5\0\2\6"
+      "\0\3\6\0\3\6\0\3\7\0\3\10\0\4\10\0\4\11\0\4\12\0\4\12\1\4\13\1\5\14\1\5\15"
+      "\1\5\15\1\5\16\1\5\17\1\6\17\1\6\20\1\7\21\1\7\23\2\10\23\2\10\24\2\10\24"
+      "\2\11\26\2\11\27\2\11\30\3\11\31\3\12\31\3\13\32\3\13\33\4\13\34\4\14\35"
+      "\4\14\36\4\15\37\5\15\40\5\15\"\6\16#\6\17#\6\20$\7\20%\7\20%\10\21&\10\22"
+      "'\10\22)\11\24*\11\24*\12\24+\12\26.\13\26.\14\27.\14\30/\15\31"
+      "1\15\31" "" "2\16\32" "3\16\33" "3\20\33" "5\20\35" "6\20\36" "7\22\37"
+      "7\23\"9\23#9\24$" ":\25$<\27&<\27'=\31'?\31)?\32*@\35+B\35-C\36.C\37"
+      "1E\"2F#3H$5H&6I'7I)7K"
+      "+:M-<N-<N1@N1BQ2BQ6CQ6EU7HU<IU=IV@NX@NXBQZCS[FU[HU]IV_MZ_N[_Q]`S_bU`dXbe"
+      "Zbe]gg]ig`ji`jjdljenlgpljqnpwppwpqxqszqw|sx}u|\201u}\203w\177\204x\177\206"
+      "x\204\210x\204\212z\212\213|\212\217}\217\221}\221\222}\222\224\177\226\224"
+      "\201\226\226\203\230\233\203\235\235\204\236\235\204\236\236\210\244\242"
+      "\210\244\242\210\245\244\212\251\245\213\252\251\213\254\252\215\257\254"
+      "\215\261\256\217\261\257\221\266\261\221\267\261\222\273\264\224\273\267"
+      "\224\274\267\224\276\273\230\301\273\230\302\274\231\304\276\231\307\302"
+      "\233\312\302\235\312\304\235\314\306\236\316\307\240\320\311\240\321\314"
+      "\242\324\315\242\325\316\244\327\320\245\332\321\245\333\321\245\334\323"
+      "\251\335\325\251\335\330\252\341\332\254\341\332\256\344\334\256\346\334"
+      "\256\347\337\257\347\340\261\350\340\263\351\342\263\352\344\264\354\345"
+      "\266\355\346\266\356\347\267\357\350\271\360\351\273\361\352\273\362\352"
+      "\274\362\355\276\364\356\277\364\357\277\365\360\277\365\360\302\366\361"
+      "\302\367\361\304\370\363\304\370\363\307\370\364\307\371\364\311\371\366"
+      "\312\372\367\312\372\367\314\372\367\316\373\370\316\373\370\320\373\371"
+      "\320\374\371\321\374\372\323\374\372\324\375\372\325\375\372\325\375\373"
+      "\327\375\373\330\375\374\332\375\374\333\375\375\334\376\375\334\376\375"
+      "\335\376\375\337\376\375\337\376\375\340\376\376\342\376\376\344\376\376"
+      "\344\376\376\345\376\376\346\376\376\347\376\376\350\377\376\351\377\377"
+      "\353\377\377\354\377\377\356\377\377\357\377\377\361\377\377\361\377\377"
+      "\361\377\377\364\377\377\365\377\377\366\377\377\367\377\377\367\377\377"
+      "\371\377\377\371\377\377\372\377\377\373\377\377\373\377\377\374\377\377"
+      "\375\377\377\375\377\377\375\377\377\376",
+};
+
+/* CURVE for the heat signature effect */
+const GstGLEffectsCurve heat_curve = {
+  256, 1, 3,
+  "\0\0\0\0\0\0\0\1\0\0\1\0\0\1\1\0\2\1\0\2\1\1\2\1\1\2\2\1\2\2\1\3\2\1\3\3"
+      "\1\3\3\1\4\3\1\4\4\1\5\4\1\5\5\2\5\6\2\6\6\2\6\7\2\6\7\2\7\7\2\7\11\2\10"
+      "\11\2\10\12\3\11\13\3\11\13\3\11\14\3\12\15\3\12\17\3\13\17\3\14\20\3\14"
+      "\22\4\15\23\4\16\24\4\16\26\4\16\27\4\17\31\4\20\34\4\21\34\5\21\40\5\22"
+      "\40\5\22$\5\23$\5\25&\6\25(\6\26-\6\26-\6\27" "0\6\31" "2\7\31"
+      "5\7\32;\7\34"
+      ";\7\34?\10\35C\10\36G\10\37L\10\40V\11!V\11\"[\11$a\11&l\12&l\12'r\12(~\13"
+      "*~\13,\204\14,\213\14.\221\14/\227\14" "1\236\15" "2\244\15" "4\252\15"
+      "5\260" "\16" "7\267\16"
+      "8\275\17:\302\17;\310\17=\323\20?\323\21@\330\21D\335\21D"
+      "\342\22E\346\22I\353\23I\356\23K\362\24M\365\24N\370\25P\372\26R\374\26T"
+      "\376\26V\377\27X\377\27Z\377\30\\\376\31`\376\31`\375\32b\373\32d\371\33"
+      "f\366\34j\363\34j\360\35l\354\36n\350\36r\344\37r\337\40t\333\40w\326!y\321"
+      "\"|\314#~\307$\201\301$\204\267%\207\267&\212\261'\214\254(\217\247(\222"
+      "\241)\226\234*\231\227+\234\222,\237\216-\242\211.\245\205/\251\2010\254"
+      "}1\257z2\262w3\266t4\271p5\274m6\277j7\302f8\305c9\310`:\314\\;\317Y<\321"
+      "V>\324S?\327P@\332LA\335IB\337FC\342CE\344@F\347=G\351;I\3538I\3558M\357"
+      "3P\3610S\363.V\365+Y\366)\\\370'`\371%d\372#g\373\"l\374\40p\374\37t\374"
+      "\35t\375\34}\376\33\202\376\32\202\375\31\213\375\30\220\375\27\225\375\27"
+      "\232\373\26\237\372\25\244\371\24\251\370\23\256\367\23\262\367\22\267\364"
+      "\21\274\362\20\300\361\20\305\357\17\311\355\16\311\353\16\322\351\15\326"
+      "\346\15\332\346\14\336\344\14\341\337\13\341\335\13\350\332\12\353\330\11"
+      "\356\330\11\360\322\10\362\320\10\364\320\10\364\312\7\366\307\7\366\304"
+      "\7\367\302\6\367\277\6\370\274\5\367\271\5\367\271\5\367\263\4\365\260\4"
+      "\364\255\4\363\253\3\362\250\3\361\245\3\360\242\3\357\240\3\357\235\2\355"
+      "\232\2\355\227\2\354\225\2\353\221\1\353\216\1\353\216\1\353\213\1\353\204"
+      "\1\353\201\1\354}\1\354y\0\354v\0\355r\0\355n\0\355j\0\356f\0\356b\0\357"
+      "_\0\357[\0\357W\0\357S\0\360O\0\360O\0\361K\0\361C\0\362@\0\363<\0\3638\0"
+      "\3648\0\3641\0\365.\0\366+\0\366'\0\367'\0\370!\0\370\36\0\370\33\0\371\30"
+      "\0\371\26\0\373\26\0\373\23\0\374\15\0\374\13\0\375\10\0\375\5\0\376\3\0",
+};
+
+const GstGLEffectsCurve sepia_curve = {
+  256, 1, 3,
+  "\0\0\0\0\0\0\0\0\0\0\1\0\1\1\0\1\1\0\1\1\1\2\1\1\2\2\1\3\2\1\3\2\1\3\2\1"
+      "\4\3\2\4\3\2\4\3\2\6\4\2\6\4\2\6\4\2\7\5\2\7\5\3\11\6\3\11\6\3\12\7\3\13"
+      "\10\3\15\10\4\16\11\4\17\11\4\21\12\4\22\13\4\22\13\5\23\14\5\24\15\5\26"
+      "\16\6\31\20\6\31\21\6\32\22\7\34\22\7\35\23\7\40\24\10\40\26\10!\26\11#\30"
+      "\11&\31\12&\32\12'\34\13)\34\13*\37\13,\37\13-\40\14.\"\15" "0\"\15"
+      "2#\17" "" "3&\17" "4&\17" "5'\20" "8(\21"
+      "9)\21:*\23<,\23=-\23A.\24A0\25B0\25C2\26D3"
+      "\30H4\30H7\31K7\32K8\32L9\33M:\34P<\34Q=\35S>\37T?\37UA\40VB!XC!ZD#\\F#^"
+      "G#^J$`J&bK'bM'eM(fO)gP)iQ*kS,mT-mU-nV.oX/rY0sZ2u]2v]3w^3x`4za5{c7|c8~e8\177"
+      "f9\200i:\203i<\204j<\206k=\207m>\210n?\211o?\213qA\214rC\215sC\217uD\220"
+      "vD\221wF\223xG\224zH\225{J\227|K\230~K\231\177L\232\200M\234\202O\235\203"
+      "P\236\204Q\240\206Q\241\207S\242\210T\243\211U\245\213V\246\214X\247\215"
+      "Y\250\217Y\252\220Z\253\221\\\254\223]\254\224^\255\225`\257\227a\260\230"
+      "b\261\231c\262\232e\264\234e\265\235f\266\236g\267\240i\267\241i\272\242"
+      "k\273\243m\274\245n\274\246o\276\247q\277\250r\300\252s\301\253u\302\254"
+      "v\304\255w\305\257x\306\257z\306\261{\307\262|\310\264~\310\265\177\313\266"
+      "\200\314\267\202\315\267\203\316\272\204\317\273\206\317\274\207\320\276"
+      "\210\322\277\211\323\277\213\324\301\214\325\302\215\326\304\217\326\305"
+      "\220\327\306\221\327\307\223\331\310\224\333\311\225\334\311\227\334\313"
+      "\227\335\315\231\335\316\231\337\317\234\340\320\235\341\320\235\341\323"
+      "\240\342\324\241\343\324\242\343\326\243\345\327\245\345\330\245\346\331"
+      "\250\346\333\252\347\334\253\351\335\254\351\335\255\351\337\257\352\340"
+      "\260\353\341\260\354\342\262\355\343\264\355\344\265\355\345\266\356\346"
+      "\266\356\347\272\357\350\273\360\351\274\360\351\276\361\352\277\361\353"
+      "\300\362\353\301\362\354\302\362\355\304\362\356\305\364\357\305\364\357"
+      "\310\364\360\311\365\361\313\365\361\314\366\362\315\366\362\316\366\363"
+      "\316\367\364\320\367\364\320\367\365\324\367\365\324\370\366\326\370\366"
+      "\327\371\366\330\371\367\331\371\367\333\371\370\333\372\370\336\372\370"
+      "\336\372\371\340\373\371\341\373\372\342\373\372\343\374\372\344\374\373"
+      "\344\374\373\347\374\374\350\375\374\351\375\374\351\375\374\352\375\375"
+      "\352\376\375\353\376\376\355\376\376\356\376\376\357\377\377\357",
+};
+
+const GstGLEffectsCurve xray_curve = {
+  256, 1, 3,
+  "\377\377\377\377\377\377\376\376\376\375\375\376\374\375\375\373\374\375"
+      "\372\374\374\371\374\374\370\373\373\366\373\372\366\372\372\365\372\371"
+      "\363\371\371\363\371\370\362\370\370\360\370\367\360\367\366\357\367\365"
+      "\356\366\365\355\366\364\353\365\363\353\365\363\352\364\362\351\363\362"
+      "\347\363\361\346\362\361\345\362\361\344\362\360\343\361\357\343\361\356"
+      "\342\360\356\341\360\356\340\357\355\336\356\354\336\356\354\335\355\353"
+      "\334\355\353\333\355\352\331\354\351\331\353\351\330\353\350\327\353\350"
+      "\325\352\347\325\351\347\324\350\346\323\350\345\322\347\344\321\347\344"
+      "\320\347\344\317\346\343\316\346\342\315\345\341\314\344\341\313\344\340"
+      "\312\344\340\311\343\337\310\342\337\307\342\335\306\341\335\305\341\335"
+      "\303\340\334\303\337\333\302\337\333\301\337\332\300\336\331\276\335\331"
+      "\276\334\330\274\334\330\274\334\327\273\333\327\272\333\326\271\332\325"
+      "\270\332\325\267\331\324\266\330\323\265\330\323\264\327\322\263\327\321"
+      "\262\326\320\261\325\320\257\325\317\257\324\317\256\324\316\254\323\315"
+      "\254\322\315\253\322\314\252\321\313\251\321\313\250\320\312\246\317\311"
+      "\245\317\311\245\316\310\244\316\307\243\315\307\242\314\306\241\314\305"
+      "\240\312\305\237\312\304\236\312\303\235\311\303\234\311\302\233\307\301"
+      "\232\307\300\231\307\300\230\306\277\227\305\276\226\305\276\225\304\275"
+      "\224\303\274\223\303\273\222\302\273\221\301\272\220\301\271\217\300\270"
+      "\216\277\270\215\277\267\214\276\266\213\275\265\212\275\265\211\274\264"
+      "\210\273\263\207\273\262\206\272\262\205\271\261\204\270\260\203\270\257"
+      "\202\267\257\201\266\256\200\266\255\177\265\254~\264\253}\263\253|\263\252"
+      "{\262\251z\261\250y\260\247x\260\247w\257\246v\256\245u\255\244t\255\243"
+      "s\254\243r\253\242q\252\241p\252\240o\251\237n\250\236m\247\235l\246\235"
+      "l\246\235j\245\233i\244\232h\243\231g\242\230f\242\227e\241\226d\240\226"
+      "c\237\225b\236\224a\235\223`\234\222_\234\221_\233\220]\232\217\\\231\216"
+      "\\\230\215Z\227\214Y\226\214X\226\213W\225\212V\224\211U\223\210T\222\207"
+      "S\221\206R\221\205Q\217\204P\216\203O\215\202N\215\201M\214\200M\213\177"
+      "K\212~J\211}I\211|H\210|G\206zG\205zE\204xD\203vC\203vB\201tA\200s@\200q"
+      "@~p>}o>|o<{l<yk;xi9wh8wg8te6sd5qd4pa3n_2m]1k\\0j\\0hY.fW-dU,cT+aR*_P)_O("
+      "]M'YK'XI%VI$TF$RD\"OB!M@\40K?\37I=\37G=\35E9\34C9\34A5\33>5\31<2\31<0\27"
+      ":.\27" "5,\26" "3*\24"
+      "1*\23.&\22.&\22*\"\21'\40\17%\36\16\"\34\15\"\32\14"
+      "\36\32\13\33\26\13\31\24\11\26\22\11\24\20\7\24\16\6\21\16\5\14\14\4\12\10"
+      "\3\7\6\3\5\4\1\2\2",
+};
diff --git a/ext/gl/effects/gstgleffectscurves.h b/ext/gl/effects/gstgleffectscurves.h
index e0e98a5..9b566a5 100644
--- a/ext/gl/effects/gstgleffectscurves.h
+++ b/ext/gl/effects/gstgleffectscurves.h
@@ -21,6 +21,7 @@
 #ifndef __GST_GL_EFFECTS_TEXTURES_H__
 #define __GST_GL_EFFECTS_TEXTURES_H__
 
+#include <glib.h>
 
 struct _GstGLEffectsCurve {
   guint 	 width;
@@ -32,181 +33,15 @@
 typedef struct _GstGLEffectsCurve GstGLEffectsCurve;
 
 /* CURVE for the heat signature effect */
-static const GstGLEffectsCurve xpro_curve = {
-  256, 1, 3,
-  "\0\0\37\0\0\37\0\1\40\0\2!\0\2\"\0\3\"\1\4%\1\4%\1\5%\1\5'\1\7'\1\7(\1\7"
-  "(\1\10*\1\11+\1\11,\1\12,\1\13/\1\14/\1\14""1\2\15""1\2\15""1\2\16""4\2\17"
-  """4\3\17""5\3\22""7\3\22""7\3\23""8\3\24""9\3\25;\3\26;\3\27<\3\27=\4\31"
-  "=\4\33?\4\34@\5\34B\5\35C\5\36D\5\40D\5\40G\5!G\6\"H\6$H\7&J\7&K\7*M\7*M"
-  "\10+N\10-P\11-P\11/R\11""3R\11""3T\12""4U\12""5U\13""7W\14""8Y\14""9Y\14"
-  "<Y\16=[\16@^\16@^\17C^\17D`\20F`\20Jb\22Jb\22Kc\23Me\24Nf\25Qg\26Rg\27Ti"
-  "\27Wj\30Xl\31Yl\33\\m\34^p\35`p\40bp\40fq!fr$gt$lt%lu'mv(px*qy-ty/uz/x|0"
-  "y}3|}4}~5\177\2018\203\2019\203\201;\204\202=\207\203?\210\204@\214\204C"
-  "\214\206D\216\207G\217\210H\223\211K\223\211M\225\212P\226\214Q\231\215T"
-  "\232\215U\234\216X\235\217Y\240\220\\\241\220^\243\221`\244\223b\246\224"
-  "e\250\224f\252\225i\253\226l\255\227m\256\231p\261\231q\262\232t\264\233"
-  "v\265\234x\267\234z\270\235|\271\236~\274\240\201\275\240\202\277\241\204"
-  "\300\242\207\302\243\210\303\243\212\305\244\214\306\245\216\307\246\220"
-  "\311\250\221\313\250\224\315\251\226\316\252\227\317\253\232\321\253\234"
-  "\322\254\235\323\255\240\325\256\242\326\256\242\330\256\245\331\261\250"
-  "\331\262\251\332\262\253\334\263\255\335\264\256\336\265\261\340\266\263"
-  "\341\266\264\342\267\266\343\270\270\344\271\271\344\271\271\346\273\276"
-  "\347\274\277\350\275\277\351\275\302\352\276\304\353\277\306\353\300\307"
-  "\355\300\311\356\301\314\356\302\315\357\303\317\360\304\320\360\304\322"
-  "\361\305\323\362\306\325\362\307\327\363\307\330\363\310\330\364\311\333"
-  "\364\313\334\365\313\336\365\314\340\365\314\342\366\316\342\366\316\346"
-  "\367\317\347\367\320\351\367\320\353\370\322\354\370\322\356\370\323\356"
-  "\370\324\360\371\325\360\371\325\363\371\326\363\371\327\363\372\330\365"
-  "\372\330\366\372\331\366\372\331\370\372\332\371\373\332\371\373\333\372"
-  "\373\334\373\373\335\373\373\336\374\373\336\374\374\337\374\374\340\375"
-  "\374\341\375\374\341\376\374\342\376\374\343\376\374\344\376\374\344\377"
-  "\374\345\377\374\346\377\375\346\377\375\346\377\375\347\377\375\350\377"
-  "\375\351\377\375\352\377\375\352\377\375\352\377\375\353\377\375\353\377"
-  "\376\354\377\376\354\377\376\356\377\376\356\377\376\356\377\376\357\377"
-  "\376\360\377\376\360\377\376\360\377\376\360\377\376\362\377\376\362\377"
-  "\376\363\377\376\363\377\376\363\377\376\363\377\376\364\377\376\364\377"
-  "\376\365\377\377\365\377\377\366\377\377\366\377\377\366\377\377\367\377"
-  "\377\367\377\377\367\377\377\370",
-};
+extern const GstGLEffectsCurve xpro_curve;
 
-static const GstGLEffectsCurve luma_xpro_curve = {
-  256, 1, 3,
-  "\0\0\1\0\1\1\0\1\2\0\1\2\0\1\2\0\1\2\0\1\3\0\2\3\0\2\4\0\2\4\0\2\5\0\2\6"
-  "\0\3\6\0\3\6\0\3\7\0\3\10\0\4\10\0\4\11\0\4\12\0\4\12\1\4\13\1\5\14\1\5\15"
-  "\1\5\15\1\5\16\1\5\17\1\6\17\1\6\20\1\7\21\1\7\23\2\10\23\2\10\24\2\10\24"
-  "\2\11\26\2\11\27\2\11\30\3\11\31\3\12\31\3\13\32\3\13\33\4\13\34\4\14\35"
-  "\4\14\36\4\15\37\5\15\40\5\15\"\6\16#\6\17#\6\20$\7\20%\7\20%\10\21&\10\22"
-  "'\10\22)\11\24*\11\24*\12\24+\12\26.\13\26.\14\27.\14\30/\15\31""1\15\31"
-  """2\16\32""3\16\33""3\20\33""5\20\35""6\20\36""7\22\37""7\23\"9\23#9\24$"
-  ":\25$<\27&<\27'=\31'?\31)?\32*@\35+B\35-C\36.C\37""1E\"2F#3H$5H&6I'7I)7K"
-  "+:M-<N-<N1@N1BQ2BQ6CQ6EU7HU<IU=IV@NX@NXBQZCS[FU[HU]IV_MZ_N[_Q]`S_bU`dXbe"
-  "Zbe]gg]ig`ji`jjdljenlgpljqnpwppwpqxqszqw|sx}u|\201u}\203w\177\204x\177\206"
-  "x\204\210x\204\212z\212\213|\212\217}\217\221}\221\222}\222\224\177\226\224"
-  "\201\226\226\203\230\233\203\235\235\204\236\235\204\236\236\210\244\242"
-  "\210\244\242\210\245\244\212\251\245\213\252\251\213\254\252\215\257\254"
-  "\215\261\256\217\261\257\221\266\261\221\267\261\222\273\264\224\273\267"
-  "\224\274\267\224\276\273\230\301\273\230\302\274\231\304\276\231\307\302"
-  "\233\312\302\235\312\304\235\314\306\236\316\307\240\320\311\240\321\314"
-  "\242\324\315\242\325\316\244\327\320\245\332\321\245\333\321\245\334\323"
-  "\251\335\325\251\335\330\252\341\332\254\341\332\256\344\334\256\346\334"
-  "\256\347\337\257\347\340\261\350\340\263\351\342\263\352\344\264\354\345"
-  "\266\355\346\266\356\347\267\357\350\271\360\351\273\361\352\273\362\352"
-  "\274\362\355\276\364\356\277\364\357\277\365\360\277\365\360\302\366\361"
-  "\302\367\361\304\370\363\304\370\363\307\370\364\307\371\364\311\371\366"
-  "\312\372\367\312\372\367\314\372\367\316\373\370\316\373\370\320\373\371"
-  "\320\374\371\321\374\372\323\374\372\324\375\372\325\375\372\325\375\373"
-  "\327\375\373\330\375\374\332\375\374\333\375\375\334\376\375\334\376\375"
-  "\335\376\375\337\376\375\337\376\375\340\376\376\342\376\376\344\376\376"
-  "\344\376\376\345\376\376\346\376\376\347\376\376\350\377\376\351\377\377"
-  "\353\377\377\354\377\377\356\377\377\357\377\377\361\377\377\361\377\377"
-  "\361\377\377\364\377\377\365\377\377\366\377\377\367\377\377\367\377\377"
-  "\371\377\377\371\377\377\372\377\377\373\377\377\373\377\377\374\377\377"
-  "\375\377\377\375\377\377\375\377\377\376",
-};
+extern const GstGLEffectsCurve luma_xpro_curve;
 
 /* CURVE for the heat signature effect */
-static const GstGLEffectsCurve heat_curve = {
-  256, 1, 3,
-  "\0\0\0\0\0\0\0\1\0\0\1\0\0\1\1\0\2\1\0\2\1\1\2\1\1\2\2\1\2\2\1\3\2\1\3\3"
-  "\1\3\3\1\4\3\1\4\4\1\5\4\1\5\5\2\5\6\2\6\6\2\6\7\2\6\7\2\7\7\2\7\11\2\10"
-  "\11\2\10\12\3\11\13\3\11\13\3\11\14\3\12\15\3\12\17\3\13\17\3\14\20\3\14"
-  "\22\4\15\23\4\16\24\4\16\26\4\16\27\4\17\31\4\20\34\4\21\34\5\21\40\5\22"
-  "\40\5\22$\5\23$\5\25&\6\25(\6\26-\6\26-\6\27""0\6\31""2\7\31""5\7\32;\7\34"
-  ";\7\34?\10\35C\10\36G\10\37L\10\40V\11!V\11\"[\11$a\11&l\12&l\12'r\12(~\13"
-  "*~\13,\204\14,\213\14.\221\14/\227\14""1\236\15""2\244\15""4\252\15""5\260"
-  "\16""7\267\16""8\275\17:\302\17;\310\17=\323\20?\323\21@\330\21D\335\21D"
-  "\342\22E\346\22I\353\23I\356\23K\362\24M\365\24N\370\25P\372\26R\374\26T"
-  "\376\26V\377\27X\377\27Z\377\30\\\376\31`\376\31`\375\32b\373\32d\371\33"
-  "f\366\34j\363\34j\360\35l\354\36n\350\36r\344\37r\337\40t\333\40w\326!y\321"
-  "\"|\314#~\307$\201\301$\204\267%\207\267&\212\261'\214\254(\217\247(\222"
-  "\241)\226\234*\231\227+\234\222,\237\216-\242\211.\245\205/\251\2010\254"
-  "}1\257z2\262w3\266t4\271p5\274m6\277j7\302f8\305c9\310`:\314\\;\317Y<\321"
-  "V>\324S?\327P@\332LA\335IB\337FC\342CE\344@F\347=G\351;I\3538I\3558M\357"
-  "3P\3610S\363.V\365+Y\366)\\\370'`\371%d\372#g\373\"l\374\40p\374\37t\374"
-  "\35t\375\34}\376\33\202\376\32\202\375\31\213\375\30\220\375\27\225\375\27"
-  "\232\373\26\237\372\25\244\371\24\251\370\23\256\367\23\262\367\22\267\364"
-  "\21\274\362\20\300\361\20\305\357\17\311\355\16\311\353\16\322\351\15\326"
-  "\346\15\332\346\14\336\344\14\341\337\13\341\335\13\350\332\12\353\330\11"
-  "\356\330\11\360\322\10\362\320\10\364\320\10\364\312\7\366\307\7\366\304"
-  "\7\367\302\6\367\277\6\370\274\5\367\271\5\367\271\5\367\263\4\365\260\4"
-  "\364\255\4\363\253\3\362\250\3\361\245\3\360\242\3\357\240\3\357\235\2\355"
-  "\232\2\355\227\2\354\225\2\353\221\1\353\216\1\353\216\1\353\213\1\353\204"
-  "\1\353\201\1\354}\1\354y\0\354v\0\355r\0\355n\0\355j\0\356f\0\356b\0\357"
-  "_\0\357[\0\357W\0\357S\0\360O\0\360O\0\361K\0\361C\0\362@\0\363<\0\3638\0"
-  "\3648\0\3641\0\365.\0\366+\0\366'\0\367'\0\370!\0\370\36\0\370\33\0\371\30"
-  "\0\371\26\0\373\26\0\373\23\0\374\15\0\374\13\0\375\10\0\375\5\0\376\3\0",
-};
+extern const GstGLEffectsCurve heat_curve;
 
-static const GstGLEffectsCurve sepia_curve = {
-  256, 1, 3,
-  "\0\0\0\0\0\0\0\0\0\0\1\0\1\1\0\1\1\0\1\1\1\2\1\1\2\2\1\3\2\1\3\2\1\3\2\1"
-  "\4\3\2\4\3\2\4\3\2\6\4\2\6\4\2\6\4\2\7\5\2\7\5\3\11\6\3\11\6\3\12\7\3\13"
-  "\10\3\15\10\4\16\11\4\17\11\4\21\12\4\22\13\4\22\13\5\23\14\5\24\15\5\26"
-  "\16\6\31\20\6\31\21\6\32\22\7\34\22\7\35\23\7\40\24\10\40\26\10!\26\11#\30"
-  "\11&\31\12&\32\12'\34\13)\34\13*\37\13,\37\13-\40\14.\"\15""0\"\15""2#\17"
-  """3&\17""4&\17""5'\20""8(\21""9)\21:*\23<,\23=-\23A.\24A0\25B0\25C2\26D3"
-  "\30H4\30H7\31K7\32K8\32L9\33M:\34P<\34Q=\35S>\37T?\37UA\40VB!XC!ZD#\\F#^"
-  "G#^J$`J&bK'bM'eM(fO)gP)iQ*kS,mT-mU-nV.oX/rY0sZ2u]2v]3w^3x`4za5{c7|c8~e8\177"
-  "f9\200i:\203i<\204j<\206k=\207m>\210n?\211o?\213qA\214rC\215sC\217uD\220"
-  "vD\221wF\223xG\224zH\225{J\227|K\230~K\231\177L\232\200M\234\202O\235\203"
-  "P\236\204Q\240\206Q\241\207S\242\210T\243\211U\245\213V\246\214X\247\215"
-  "Y\250\217Y\252\220Z\253\221\\\254\223]\254\224^\255\225`\257\227a\260\230"
-  "b\261\231c\262\232e\264\234e\265\235f\266\236g\267\240i\267\241i\272\242"
-  "k\273\243m\274\245n\274\246o\276\247q\277\250r\300\252s\301\253u\302\254"
-  "v\304\255w\305\257x\306\257z\306\261{\307\262|\310\264~\310\265\177\313\266"
-  "\200\314\267\202\315\267\203\316\272\204\317\273\206\317\274\207\320\276"
-  "\210\322\277\211\323\277\213\324\301\214\325\302\215\326\304\217\326\305"
-  "\220\327\306\221\327\307\223\331\310\224\333\311\225\334\311\227\334\313"
-  "\227\335\315\231\335\316\231\337\317\234\340\320\235\341\320\235\341\323"
-  "\240\342\324\241\343\324\242\343\326\243\345\327\245\345\330\245\346\331"
-  "\250\346\333\252\347\334\253\351\335\254\351\335\255\351\337\257\352\340"
-  "\260\353\341\260\354\342\262\355\343\264\355\344\265\355\345\266\356\346"
-  "\266\356\347\272\357\350\273\360\351\274\360\351\276\361\352\277\361\353"
-  "\300\362\353\301\362\354\302\362\355\304\362\356\305\364\357\305\364\357"
-  "\310\364\360\311\365\361\313\365\361\314\366\362\315\366\362\316\366\363"
-  "\316\367\364\320\367\364\320\367\365\324\367\365\324\370\366\326\370\366"
-  "\327\371\366\330\371\367\331\371\367\333\371\370\333\372\370\336\372\370"
-  "\336\372\371\340\373\371\341\373\372\342\373\372\343\374\372\344\374\373"
-  "\344\374\373\347\374\374\350\375\374\351\375\374\351\375\374\352\375\375"
-  "\352\376\375\353\376\376\355\376\376\356\376\376\357\377\377\357",
-};
+extern const GstGLEffectsCurve sepia_curve;
 
-static const GstGLEffectsCurve xray_curve = {
-  256, 1, 3,
-  "\377\377\377\377\377\377\376\376\376\375\375\376\374\375\375\373\374\375"
-  "\372\374\374\371\374\374\370\373\373\366\373\372\366\372\372\365\372\371"
-  "\363\371\371\363\371\370\362\370\370\360\370\367\360\367\366\357\367\365"
-  "\356\366\365\355\366\364\353\365\363\353\365\363\352\364\362\351\363\362"
-  "\347\363\361\346\362\361\345\362\361\344\362\360\343\361\357\343\361\356"
-  "\342\360\356\341\360\356\340\357\355\336\356\354\336\356\354\335\355\353"
-  "\334\355\353\333\355\352\331\354\351\331\353\351\330\353\350\327\353\350"
-  "\325\352\347\325\351\347\324\350\346\323\350\345\322\347\344\321\347\344"
-  "\320\347\344\317\346\343\316\346\342\315\345\341\314\344\341\313\344\340"
-  "\312\344\340\311\343\337\310\342\337\307\342\335\306\341\335\305\341\335"
-  "\303\340\334\303\337\333\302\337\333\301\337\332\300\336\331\276\335\331"
-  "\276\334\330\274\334\330\274\334\327\273\333\327\272\333\326\271\332\325"
-  "\270\332\325\267\331\324\266\330\323\265\330\323\264\327\322\263\327\321"
-  "\262\326\320\261\325\320\257\325\317\257\324\317\256\324\316\254\323\315"
-  "\254\322\315\253\322\314\252\321\313\251\321\313\250\320\312\246\317\311"
-  "\245\317\311\245\316\310\244\316\307\243\315\307\242\314\306\241\314\305"
-  "\240\312\305\237\312\304\236\312\303\235\311\303\234\311\302\233\307\301"
-  "\232\307\300\231\307\300\230\306\277\227\305\276\226\305\276\225\304\275"
-  "\224\303\274\223\303\273\222\302\273\221\301\272\220\301\271\217\300\270"
-  "\216\277\270\215\277\267\214\276\266\213\275\265\212\275\265\211\274\264"
-  "\210\273\263\207\273\262\206\272\262\205\271\261\204\270\260\203\270\257"
-  "\202\267\257\201\266\256\200\266\255\177\265\254~\264\253}\263\253|\263\252"
-  "{\262\251z\261\250y\260\247x\260\247w\257\246v\256\245u\255\244t\255\243"
-  "s\254\243r\253\242q\252\241p\252\240o\251\237n\250\236m\247\235l\246\235"
-  "l\246\235j\245\233i\244\232h\243\231g\242\230f\242\227e\241\226d\240\226"
-  "c\237\225b\236\224a\235\223`\234\222_\234\221_\233\220]\232\217\\\231\216"
-  "\\\230\215Z\227\214Y\226\214X\226\213W\225\212V\224\211U\223\210T\222\207"
-  "S\221\206R\221\205Q\217\204P\216\203O\215\202N\215\201M\214\200M\213\177"
-  "K\212~J\211}I\211|H\210|G\206zG\205zE\204xD\203vC\203vB\201tA\200s@\200q"
-  "@~p>}o>|o<{l<yk;xi9wh8wg8te6sd5qd4pa3n_2m]1k\\0j\\0hY.fW-dU,cT+aR*_P)_O("
-  "]M'YK'XI%VI$TF$RD\"OB!M@\40K?\37I=\37G=\35E9\34C9\34A5\33>5\31<2\31<0\27"
-  ":.\27""5,\26""3*\24""1*\23.&\22.&\22*\"\21'\40\17%\36\16\"\34\15\"\32\14"
-  "\36\32\13\33\26\13\31\24\11\26\22\11\24\20\7\24\16\6\21\16\5\14\14\4\12\10"
-  "\3\7\6\3\5\4\1\2\2",
-};
+extern const GstGLEffectsCurve xray_curve;
 
 #endif
diff --git a/ext/gl/effects/gstgleffectssources.c b/ext/gl/effects/gstgleffectssources.c
index 3da856c..6bdc155 100644
--- a/ext/gl/effects/gstgleffectssources.c
+++ b/ext/gl/effects/gstgleffectssources.c
@@ -152,7 +152,7 @@
   "  vec2 normcoord;"
   "  normcoord = texturecoord - 0.5;"
   "  float r = length (normcoord);"
-  "  normcoord *= r * sqrt(2);"
+  "  normcoord *= r * 1.41421;" /* sqrt (2) */
   "  texturecoord = normcoord + 0.5;"
   "  gl_FragColor = texture2D (tex, texturecoord);"
   "}";
diff --git a/ext/gl/gstglcolorbalance.c b/ext/gl/gstglcolorbalance.c
new file mode 100644
index 0000000..27dcb00
--- /dev/null
+++ b/ext/gl/gstglcolorbalance.c
@@ -0,0 +1,557 @@
+/* GStreamer
+ * Copyright (C) <2016> Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+/*
+ * This file was modified from videobalance and converted to OpenGL
+ */
+
+/**
+ * SECTION:element-glcolorbalance
+ *
+ * Adjusts brightness, contrast, hue, saturation on a video stream.
+ *
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch-1.0 videotestsrc ! glupload ! glcolorbalance saturation=0.0 ! glcolorconvert ! gldownload ! ximagesink
+ * ]| This pipeline converts the image to black and white by setting the
+ * saturation to 0.0.
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/math-compat.h>
+
+#include "gstglcolorbalance.h"
+#include <string.h>
+
+#include <gst/video/colorbalance.h>
+
+GST_DEBUG_CATEGORY_STATIC (glcolorbalance_debug);
+#define GST_CAT_DEFAULT glcolorbalance_debug
+
+/* GstGLColorBalance properties */
+#define DEFAULT_PROP_CONTRAST       1.0
+#define DEFAULT_PROP_BRIGHTNESS	    0.0
+#define DEFAULT_PROP_HUE            0.0
+#define DEFAULT_PROP_SATURATION	    1.0
+
+/* *INDENT-OFF* */
+static const gchar *color_balance_frag =
+  "#ifdef GL_ES\n"
+  "precision mediump float;\n"
+  "#endif\n"
+  "uniform float brightness;\n"
+  "uniform float contrast;\n"
+  "uniform float saturation;\n"
+  "uniform float hue;\n"
+  "varying vec2 v_texcoord;\n"
+  "uniform sampler2D tex;\n"
+  "#define from_yuv_bt601_offset vec3(-0.0625, -0.5, -0.5)\n"
+  "#define from_yuv_bt601_rcoeff vec3(1.164, 0.000, 1.596)\n"
+  "#define from_yuv_bt601_gcoeff vec3(1.164,-0.391,-0.813)\n"
+  "#define from_yuv_bt601_bcoeff vec3(1.164, 2.018, 0.000)\n"
+  "#define from_rgb_bt601_offset vec3(0.0625, 0.5, 0.5)\n"
+  "#define from_rgb_bt601_ycoeff vec3(0.256816, 0.504154, 0.0979137)\n"
+  "#define from_rgb_bt601_ucoeff vec3(-0.148246, -0.29102, 0.439266)\n"
+  "#define from_rgb_bt601_vcoeff vec3(0.439271, -0.367833, -0.071438)\n"
+  "#define PI 3.14159265\n"
+  "\n"
+  "vec3 yuv_to_rgb (vec3 val) {\n"
+  "  vec3 rgb;\n"
+  "  val += from_yuv_bt601_offset;\n"
+  "  rgb.r = dot(val, from_yuv_bt601_rcoeff);\n"
+  "  rgb.g = dot(val, from_yuv_bt601_gcoeff);\n"
+  "  rgb.b = dot(val, from_yuv_bt601_bcoeff);\n"
+  "  return rgb;\n"
+  "}\n"
+  "vec3 rgb_to_yuv (vec3 val) {\n"
+  "  vec3 yuv;\n"
+  "  yuv.r = dot(val.rgb, from_rgb_bt601_ycoeff);\n"
+  "  yuv.g = dot(val.rgb, from_rgb_bt601_ucoeff);\n"
+  "  yuv.b = dot(val.rgb, from_rgb_bt601_vcoeff);\n"
+  "  yuv += from_rgb_bt601_offset;\n"
+  "  return yuv;\n"
+  "}\n"
+  /* 224 = 256 - (256 - 240) - 16*/
+  "float luma_to_narrow (float luma) {\n"
+  "  return (luma + 16.0 / 256.0) * 219.0 / 256.0;"
+  "}\n"
+  "float luma_to_full (float luma) {\n"
+  "  return (luma * 256.0 / 219.0) - 16.0 / 256.0;"
+  "}\n"
+  "void main () {\n"
+  "  vec3 yuv;\n"
+  /* operations translated from videobalanceand tested with glvideomixer
+   * with one pad's paremeters blend-equation-rgb={subtract,reverse-subtract},
+   * blend-function-src-rgb=src-color and blend-function-dst-rgb=dst-color */
+  "  float hue_cos = cos (PI * hue);\n"
+  "  float hue_sin = sin (PI * hue);\n"
+  "  vec4 rgba = texture2D (tex, v_texcoord);\n"
+  "  yuv = rgb_to_yuv (rgba.rgb);\n"
+  "  yuv.x = clamp (luma_to_narrow (luma_to_full(yuv.x) * contrast) + brightness, 0.0, 1.0);\n"
+  "  vec2 uv = yuv.yz;\n"
+  "  yuv.y = clamp (0.5 + (((uv.x - 0.5) * hue_cos + (uv.y - 0.5) * hue_sin) * saturation), 0.0, 1.0);\n"
+  "  yuv.z = clamp (0.5 + (((0.5 - uv.x) * hue_sin + (uv.y - 0.5) * hue_cos) * saturation), 0.0, 1.0);\n"
+  "  rgba.rgb = yuv_to_rgb (yuv);\n"
+  "  gl_FragColor = rgba;\n"
+  "}\n";
+/* *INDENT-ON* */
+
+enum
+{
+  PROP_0,
+  PROP_CONTRAST,
+  PROP_BRIGHTNESS,
+  PROP_HUE,
+  PROP_SATURATION
+};
+
+static void gst_gl_color_balance_colorbalance_init (GstColorBalanceInterface *
+    iface);
+
+static void gst_gl_color_balance_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_gl_color_balance_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+
+#define gst_gl_color_balance_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstGLColorBalance, gst_gl_color_balance,
+    GST_TYPE_GL_FILTER,
+    G_IMPLEMENT_INTERFACE (GST_TYPE_COLOR_BALANCE,
+        gst_gl_color_balance_colorbalance_init));
+
+static gboolean
+gst_gl_color_balance_is_passthrough (GstGLColorBalance * glcolorbalance)
+{
+  return glcolorbalance->contrast == 1.0 &&
+      glcolorbalance->brightness == 0.0 &&
+      glcolorbalance->hue == 0.0 && glcolorbalance->saturation == 1.0;
+}
+
+static void
+gst_gl_color_balance_update_properties (GstGLColorBalance * glcolorbalance)
+{
+  gboolean passthrough;
+  GstBaseTransform *base = GST_BASE_TRANSFORM (glcolorbalance);
+
+  GST_OBJECT_LOCK (glcolorbalance);
+  passthrough = gst_gl_color_balance_is_passthrough (glcolorbalance);
+  GST_OBJECT_UNLOCK (glcolorbalance);
+
+  gst_base_transform_set_passthrough (base, passthrough);
+}
+
+static gboolean
+_create_shader (GstGLColorBalance * balance)
+{
+  GstGLBaseFilter *base_filter = GST_GL_BASE_FILTER (balance);
+  GstGLFilter *filter = GST_GL_FILTER (balance);
+  GError *error = NULL;
+
+  if (balance->shader)
+    gst_object_unref (balance->shader);
+
+  if (!(balance->shader =
+          gst_gl_shader_new_link_with_stages (base_filter->context, &error,
+              gst_glsl_stage_new_default_vertex (base_filter->context),
+              gst_glsl_stage_new_with_string (base_filter->context,
+                  GL_FRAGMENT_SHADER, GST_GLSL_VERSION_NONE,
+                  GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+                  color_balance_frag), NULL))) {
+    GST_ELEMENT_ERROR (balance, RESOURCE, NOT_FOUND, ("%s",
+            "Failed to initialize colorbalance shader"), ("%s",
+            error ? error->message : "Unknown error"));
+    return FALSE;
+  }
+
+  filter->draw_attr_position_loc =
+      gst_gl_shader_get_attribute_location (balance->shader, "a_position");
+  filter->draw_attr_texture_loc =
+      gst_gl_shader_get_attribute_location (balance->shader, "a_texcoord");
+
+  return TRUE;
+}
+
+static gboolean
+gst_gl_color_balance_gl_start (GstGLBaseFilter * base_filter)
+{
+  GstGLColorBalance *balance = GST_GL_COLOR_BALANCE (base_filter);
+
+  if (!_create_shader (balance))
+    return FALSE;
+
+  return GST_GL_BASE_FILTER_CLASS (parent_class)->gl_start (base_filter);
+}
+
+static void
+gst_gl_color_balance_gl_stop (GstGLBaseFilter * base_filter)
+{
+  GstGLColorBalance *balance = GST_GL_COLOR_BALANCE (base_filter);
+
+  if (balance->shader)
+    gst_object_unref (balance->shader);
+  balance->shader = NULL;
+
+  GST_GL_BASE_FILTER_CLASS (parent_class)->gl_stop (base_filter);
+}
+
+static void
+gst_gl_color_balance_before_transform (GstBaseTransform * base, GstBuffer * buf)
+{
+  GstGLColorBalance *balance = GST_GL_COLOR_BALANCE (base);
+  GstClockTime timestamp, stream_time;
+
+  timestamp = GST_BUFFER_TIMESTAMP (buf);
+  stream_time =
+      gst_segment_to_stream_time (&base->segment, GST_FORMAT_TIME, timestamp);
+
+  GST_DEBUG_OBJECT (balance, "sync to %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (timestamp));
+
+  if (GST_CLOCK_TIME_IS_VALID (stream_time))
+    gst_object_sync_values (GST_OBJECT (balance), stream_time);
+}
+
+static void
+gst_gl_color_balance_callback (gint width, gint height, guint tex_id,
+    gpointer data)
+{
+  GstGLColorBalance *balance = GST_GL_COLOR_BALANCE (data);
+  GstGLFilter *filter = GST_GL_FILTER (data);
+  const GstGLFuncs *gl = GST_GL_BASE_FILTER (data)->context->gl_vtable;
+
+  if (!balance->shader)
+    _create_shader (balance);
+
+  gst_gl_shader_use (balance->shader);
+  GST_OBJECT_LOCK (balance);
+  gst_gl_shader_set_uniform_1f (balance->shader, "brightness",
+      balance->brightness);
+  gst_gl_shader_set_uniform_1f (balance->shader, "contrast", balance->contrast);
+  gst_gl_shader_set_uniform_1f (balance->shader, "saturation",
+      balance->saturation);
+  gst_gl_shader_set_uniform_1f (balance->shader, "hue", balance->hue);
+  GST_OBJECT_UNLOCK (balance);
+
+  gl->BindTexture (GL_TEXTURE_2D, tex_id);
+
+  gst_gl_filter_draw_texture (filter, tex_id, width, height);
+}
+
+static gboolean
+gst_gl_color_balance_filter_texture (GstGLFilter * filter, guint in_tex,
+    guint out_tex)
+{
+  gst_gl_filter_render_to_target (filter, TRUE, in_tex, out_tex,
+      (GLCB) gst_gl_color_balance_callback, filter);
+
+  return TRUE;
+}
+
+static void
+gst_gl_color_balance_finalize (GObject * object)
+{
+  GstGLColorBalance *balance = GST_GL_COLOR_BALANCE (object);
+  GList *channels = NULL;
+
+  channels = balance->channels;
+  while (channels) {
+    GstColorBalanceChannel *channel = channels->data;
+
+    g_object_unref (channel);
+    channels->data = NULL;
+    channels = g_list_next (channels);
+  }
+
+  if (balance->channels)
+    g_list_free (balance->channels);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_gl_color_balance_class_init (GstGLColorBalanceClass * klass)
+{
+  GObjectClass *gobject_class = (GObjectClass *) klass;
+  GstElementClass *gstelement_class = (GstElementClass *) klass;
+  GstBaseTransformClass *trans_class = (GstBaseTransformClass *) klass;
+  GstGLBaseFilterClass *base_filter_class = (GstGLBaseFilterClass *) klass;
+  GstGLFilterClass *filter_class = (GstGLFilterClass *) klass;
+
+  GST_DEBUG_CATEGORY_INIT (glcolorbalance_debug, "glcolorbalance", 0,
+      "glcolorbalance");
+
+  gobject_class->finalize = gst_gl_color_balance_finalize;
+  gobject_class->set_property = gst_gl_color_balance_set_property;
+  gobject_class->get_property = gst_gl_color_balance_get_property;
+
+  g_object_class_install_property (gobject_class, PROP_CONTRAST,
+      g_param_spec_double ("contrast", "Contrast", "contrast",
+          0.0, 2.0, DEFAULT_PROP_CONTRAST,
+          GST_PARAM_CONTROLLABLE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_BRIGHTNESS,
+      g_param_spec_double ("brightness", "Brightness", "brightness", -1.0, 1.0,
+          DEFAULT_PROP_BRIGHTNESS,
+          GST_PARAM_CONTROLLABLE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_HUE,
+      g_param_spec_double ("hue", "Hue", "hue", -1.0, 1.0, DEFAULT_PROP_HUE,
+          GST_PARAM_CONTROLLABLE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_SATURATION,
+      g_param_spec_double ("saturation", "Saturation", "saturation", 0.0, 2.0,
+          DEFAULT_PROP_SATURATION,
+          GST_PARAM_CONTROLLABLE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  gst_element_class_set_static_metadata (gstelement_class, "Video balance",
+      "Filter/Effect/Video",
+      "Adjusts brightness, contrast, hue, saturation on a video stream",
+      "Matthew Waters <matthew@centricular.com>");
+
+  trans_class->before_transform =
+      GST_DEBUG_FUNCPTR (gst_gl_color_balance_before_transform);
+  trans_class->transform_ip_on_passthrough = FALSE;
+
+  base_filter_class->gl_start =
+      GST_DEBUG_FUNCPTR (gst_gl_color_balance_gl_start);
+  base_filter_class->gl_stop = GST_DEBUG_FUNCPTR (gst_gl_color_balance_gl_stop);
+
+  filter_class->filter_texture =
+      GST_DEBUG_FUNCPTR (gst_gl_color_balance_filter_texture);
+}
+
+static void
+gst_gl_color_balance_init (GstGLColorBalance * glcolorbalance)
+{
+  const gchar *channels[4] = { "HUE", "SATURATION",
+    "BRIGHTNESS", "CONTRAST"
+  };
+  gint i;
+
+  /* Initialize propertiews */
+  glcolorbalance->contrast = DEFAULT_PROP_CONTRAST;
+  glcolorbalance->brightness = DEFAULT_PROP_BRIGHTNESS;
+  glcolorbalance->hue = DEFAULT_PROP_HUE;
+  glcolorbalance->saturation = DEFAULT_PROP_SATURATION;
+
+  gst_gl_color_balance_update_properties (glcolorbalance);
+
+  /* Generate the channels list */
+  for (i = 0; i < G_N_ELEMENTS (channels); i++) {
+    GstColorBalanceChannel *channel;
+
+    channel = g_object_new (GST_TYPE_COLOR_BALANCE_CHANNEL, NULL);
+    channel->label = g_strdup (channels[i]);
+    channel->min_value = -1000;
+    channel->max_value = 1000;
+
+    glcolorbalance->channels =
+        g_list_append (glcolorbalance->channels, channel);
+  }
+}
+
+static const GList *
+gst_gl_color_balance_colorbalance_list_channels (GstColorBalance * balance)
+{
+  GstGLColorBalance *glcolorbalance = GST_GL_COLOR_BALANCE (balance);
+
+  g_return_val_if_fail (glcolorbalance != NULL, NULL);
+  g_return_val_if_fail (GST_IS_GL_COLOR_BALANCE (glcolorbalance), NULL);
+
+  return glcolorbalance->channels;
+}
+
+static void
+gst_gl_color_balance_colorbalance_set_value (GstColorBalance * balance,
+    GstColorBalanceChannel * channel, gint value)
+{
+  GstGLColorBalance *vb = GST_GL_COLOR_BALANCE (balance);
+  gdouble new_val;
+  gboolean changed = FALSE;
+
+  g_return_if_fail (vb != NULL);
+  g_return_if_fail (GST_IS_GL_COLOR_BALANCE (vb));
+  g_return_if_fail (channel->label != NULL);
+
+  GST_OBJECT_LOCK (vb);
+  if (!g_ascii_strcasecmp (channel->label, "HUE")) {
+    new_val = (value + 1000.0) * 2.0 / 2000.0 - 1.0;
+    changed = new_val != vb->hue;
+    vb->hue = new_val;
+  } else if (!g_ascii_strcasecmp (channel->label, "SATURATION")) {
+    new_val = (value + 1000.0) * 2.0 / 2000.0;
+    changed = new_val != vb->saturation;
+    vb->saturation = new_val;
+  } else if (!g_ascii_strcasecmp (channel->label, "BRIGHTNESS")) {
+    new_val = (value + 1000.0) * 2.0 / 2000.0 - 1.0;
+    changed = new_val != vb->brightness;
+    vb->brightness = new_val;
+  } else if (!g_ascii_strcasecmp (channel->label, "CONTRAST")) {
+    new_val = (value + 1000.0) * 2.0 / 2000.0;
+    changed = new_val != vb->contrast;
+    vb->contrast = new_val;
+  }
+  GST_OBJECT_UNLOCK (vb);
+
+  if (changed)
+    gst_gl_color_balance_update_properties (vb);
+
+  if (changed) {
+    gst_color_balance_value_changed (balance, channel,
+        gst_color_balance_get_value (balance, channel));
+  }
+}
+
+static gint
+gst_gl_color_balance_colorbalance_get_value (GstColorBalance * balance,
+    GstColorBalanceChannel * channel)
+{
+  GstGLColorBalance *vb = GST_GL_COLOR_BALANCE (balance);
+  gint value = 0;
+
+  g_return_val_if_fail (vb != NULL, 0);
+  g_return_val_if_fail (GST_IS_GL_COLOR_BALANCE (vb), 0);
+  g_return_val_if_fail (channel->label != NULL, 0);
+
+  if (!g_ascii_strcasecmp (channel->label, "HUE")) {
+    value = (vb->hue + 1) * 2000.0 / 2.0 - 1000.0;
+  } else if (!g_ascii_strcasecmp (channel->label, "SATURATION")) {
+    value = vb->saturation * 2000.0 / 2.0 - 1000.0;
+  } else if (!g_ascii_strcasecmp (channel->label, "BRIGHTNESS")) {
+    value = (vb->brightness + 1) * 2000.0 / 2.0 - 1000.0;
+  } else if (!g_ascii_strcasecmp (channel->label, "CONTRAST")) {
+    value = vb->contrast * 2000.0 / 2.0 - 1000.0;
+  }
+
+  return value;
+}
+
+static GstColorBalanceType
+gst_gl_color_balance_colorbalance_get_balance_type (GstColorBalance * balance)
+{
+  return GST_COLOR_BALANCE_HARDWARE;
+}
+
+static void
+gst_gl_color_balance_colorbalance_init (GstColorBalanceInterface * iface)
+{
+  iface->list_channels = gst_gl_color_balance_colorbalance_list_channels;
+  iface->set_value = gst_gl_color_balance_colorbalance_set_value;
+  iface->get_value = gst_gl_color_balance_colorbalance_get_value;
+  iface->get_balance_type = gst_gl_color_balance_colorbalance_get_balance_type;
+}
+
+static GstColorBalanceChannel *
+gst_gl_color_balance_find_channel (GstGLColorBalance * balance,
+    const gchar * label)
+{
+  GList *l;
+
+  for (l = balance->channels; l; l = l->next) {
+    GstColorBalanceChannel *channel = l->data;
+
+    if (g_ascii_strcasecmp (channel->label, label) == 0)
+      return channel;
+  }
+  return NULL;
+}
+
+static void
+gst_gl_color_balance_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstGLColorBalance *balance = GST_GL_COLOR_BALANCE (object);
+  gdouble d;
+  const gchar *label = NULL;
+
+  GST_OBJECT_LOCK (balance);
+  switch (prop_id) {
+    case PROP_CONTRAST:
+      d = g_value_get_double (value);
+      GST_DEBUG_OBJECT (balance, "Changing contrast from %lf to %lf",
+          balance->contrast, d);
+      if (d != balance->contrast)
+        label = "CONTRAST";
+      balance->contrast = d;
+      break;
+    case PROP_BRIGHTNESS:
+      d = g_value_get_double (value);
+      GST_DEBUG_OBJECT (balance, "Changing brightness from %lf to %lf",
+          balance->brightness, d);
+      if (d != balance->brightness)
+        label = "BRIGHTNESS";
+      balance->brightness = d;
+      break;
+    case PROP_HUE:
+      d = g_value_get_double (value);
+      GST_DEBUG_OBJECT (balance, "Changing hue from %lf to %lf", balance->hue,
+          d);
+      if (d != balance->hue)
+        label = "HUE";
+      balance->hue = d;
+      break;
+    case PROP_SATURATION:
+      d = g_value_get_double (value);
+      GST_DEBUG_OBJECT (balance, "Changing saturation from %lf to %lf",
+          balance->saturation, d);
+      if (d != balance->saturation)
+        label = "SATURATION";
+      balance->saturation = d;
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+
+  GST_OBJECT_UNLOCK (balance);
+  gst_gl_color_balance_update_properties (balance);
+
+  if (label) {
+    GstColorBalanceChannel *channel =
+        gst_gl_color_balance_find_channel (balance, label);
+    gst_color_balance_value_changed (GST_COLOR_BALANCE (balance), channel,
+        gst_color_balance_get_value (GST_COLOR_BALANCE (balance), channel));
+  }
+}
+
+static void
+gst_gl_color_balance_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstGLColorBalance *balance = GST_GL_COLOR_BALANCE (object);
+
+  switch (prop_id) {
+    case PROP_CONTRAST:
+      g_value_set_double (value, balance->contrast);
+      break;
+    case PROP_BRIGHTNESS:
+      g_value_set_double (value, balance->brightness);
+      break;
+    case PROP_HUE:
+      g_value_set_double (value, balance->hue);
+      break;
+    case PROP_SATURATION:
+      g_value_set_double (value, balance->saturation);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
diff --git a/ext/gl/gstglcolorbalance.h b/ext/gl/gstglcolorbalance.h
new file mode 100644
index 0000000..cf0bcd7
--- /dev/null
+++ b/ext/gl/gstglcolorbalance.h
@@ -0,0 +1,73 @@
+/* GStreamer
+ * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef __GST_GL_COLOR_BALANCE_H__
+#define __GST_GL_COLOR_BALANCE_H__
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+#include <gst/gl/gl.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_GL_COLOR_BALANCE \
+  (gst_gl_color_balance_get_type())
+#define GST_GL_COLOR_BALANCE(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_COLOR_BALANCE,GstGLColorBalance))
+#define GST_GL_COLOR_BALANCE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_GL_COLOR_BALANCE,GstGLColorBalanceClass))
+#define GST_IS_GL_COLOR_BALANCE(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GL_COLOR_BALANCE))
+#define GST_IS_GL_COLOR_BALANCE_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_GL_COLOR_BALANCE))
+
+typedef struct _GstGLColorBalance GstGLColorBalance;
+typedef struct _GstGLColorBalanceClass GstGLColorBalanceClass;
+
+/**
+ * GstGLColorBalance:
+ *
+ * Opaque data structure.
+ */
+struct _GstGLColorBalance {
+  GstGLFilter videofilter;
+
+  /* < private > */
+  GstGLShader *shader;
+
+  /* channels for interface */
+  GList *channels;
+
+  /* properties */
+  gdouble contrast;
+  gdouble brightness;
+  gdouble hue;
+  gdouble saturation;
+};
+
+struct _GstGLColorBalanceClass {
+  GstGLFilterClass parent_class;
+};
+
+GType gst_gl_color_balance_get_type(void);
+
+G_END_DECLS
+
+#endif /* __GST_GL_COLOR_BALANCE_H__ */
diff --git a/ext/gl/gstglcolorconvertelement.c b/ext/gl/gstglcolorconvertelement.c
index 76a70f2..bd4fbeb 100644
--- a/ext/gl/gstglcolorconvertelement.c
+++ b/ext/gl/gstglcolorconvertelement.c
@@ -191,6 +191,9 @@
           convert->out_caps))
     return FALSE;
 
+  if (!gst_gl_color_convert_decide_allocation (convert->convert, query))
+    return FALSE;
+
   return TRUE;
 }
 
diff --git a/ext/gl/gstgldownloadelement.c b/ext/gl/gstgldownloadelement.c
index 917bdc7..ff931fa 100644
--- a/ext/gl/gstgldownloadelement.c
+++ b/ext/gl/gstgldownloadelement.c
@@ -53,10 +53,10 @@
     GST_STATIC_CAPS ("video/x-raw; video/x-raw(memory:GLMemory)"));
 
 static GstStaticPadTemplate gst_gl_download_element_sink_pad_template =
-GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
-    GST_STATIC_CAPS ("video/x-raw(memory:GLMemory)"));
+    GST_STATIC_CAPS ("video/x-raw(memory:GLMemory); video/x-raw"));
 
 static void
 gst_gl_download_element_class_init (GstGLDownloadElementClass * klass)
diff --git a/ext/gl/gstgleffects.c b/ext/gl/gstgleffects.c
index 5c906fc..b2b453f 100644
--- a/ext/gl/gstgleffects.c
+++ b/ext/gl/gstgleffects.c
@@ -550,7 +550,8 @@
     if (!(shader = gst_gl_shader_new_link_with_stages (context, &error,
                 gst_glsl_stage_new_default_vertex (context),
                 gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
-                    GST_GLSL_VERSION_NONE, GST_GLSL_PROFILE_ES,
+                    GST_GLSL_VERSION_NONE,
+                    GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
                     shader_source_gles2), NULL))) {
       GST_ELEMENT_ERROR (effects, RESOURCE, NOT_FOUND,
           ("Failed to initialize %s shader", shader_name), (NULL));
diff --git a/ext/gl/gstglfiltershader.c b/ext/gl/gstglfiltershader.c
index 12a8a9a..2117388 100644
--- a/ext/gl/gstglfiltershader.c
+++ b/ext/gl/gstglfiltershader.c
@@ -22,14 +22,14 @@
 /**
  * SECTION:element-glshader
  *
- * Filter loading OpenGL fragment shader from file
+ * OpenGL fragment shader filter
  *
  * <refsect2>
  * <title>Examples</title>
  * |[
- * gst-launch-1.0 videotestsrc ! glupload ! glshader location=myshader.fs ! glimagesink
+ * gst-launch-1.0 videotestsrc ! glupload ! glshader fragment="\"`cat myshader.frag`\"" ! glimagesink
  * ]|
- * FBO (Frame Buffer Object) and GLSL (OpenGL Shading Language) are required.
+ * FBO (Frame Buffer Object) and GLSL (OpenGL Shading Language) are required. A #version header is required
  * </refsect2>
  */
 #ifdef HAVE_CONFIG_H
diff --git a/ext/gl/gstglimagesink.c b/ext/gl/gstglimagesink.c
index dc25e66..9228801 100644
--- a/ext/gl/gstglimagesink.c
+++ b/ext/gl/gstglimagesink.c
@@ -409,8 +409,8 @@
     * structure)
 {
   GstGLImageSink *sink = GST_GLIMAGE_SINK (navigation);
+  gboolean handled = FALSE;
   GstEvent *event = NULL;
-  GstPad *pad = NULL;
   GstGLWindow *window;
   guint width, height;
   gdouble x, y;
@@ -427,9 +427,6 @@
   height = GST_VIDEO_SINK_HEIGHT (sink);
   gst_gl_window_get_surface_dimensions (window, &width, &height);
 
-  event = gst_event_new_navigation (structure);
-
-  pad = gst_pad_get_peer (GST_VIDEO_SINK_PAD (sink));
   /* Converting pointer coordinates to the non scaled geometry */
   if (width != 0 && gst_structure_get_double (structure, "pointer_x", &x)
       && height != 0 && gst_structure_get_double (structure, "pointer_y", &y)) {
@@ -441,10 +438,17 @@
         stream_x, "pointer_y", G_TYPE_DOUBLE, stream_y, NULL);
   }
 
-  if (GST_IS_PAD (pad) && GST_IS_EVENT (event))
-    gst_pad_send_event (pad, event);
+  event = gst_event_new_navigation (structure);
+  if (event) {
+    gst_event_ref (event);
+    handled = gst_pad_push_event (GST_VIDEO_SINK_PAD (sink), event);
 
-  gst_object_unref (pad);
+    if (!handled)
+      gst_element_post_message ((GstElement *) sink,
+          gst_navigation_message_new_event ((GstObject *) sink, event));
+
+    gst_event_unref (event);
+  }
   gst_object_unref (window);
 }
 
@@ -717,8 +721,7 @@
 gst_glimage_sink_key_event_cb (GstGLWindow * window, char *event_name, char
     *key_string, GstGLImageSink * gl_sink)
 {
-  GST_DEBUG_OBJECT (gl_sink, "glimagesink event %s key %s pressed", event_name,
-      key_string);
+  GST_DEBUG_OBJECT (gl_sink, "event %s key %s pressed", event_name, key_string);
   gst_navigation_send_key_event (GST_NAVIGATION (gl_sink),
       event_name, key_string);
 }
@@ -727,8 +730,7 @@
 gst_glimage_sink_mouse_event_cb (GstGLWindow * window, char *event_name,
     int button, double posx, double posy, GstGLImageSink * gl_sink)
 {
-  GST_DEBUG_OBJECT (gl_sink, "glimagesink event %s at %g, %g", event_name, posx,
-      posy);
+  GST_DEBUG_OBJECT (gl_sink, "event %s at %g, %g", event_name, posx, posy);
   gst_navigation_send_mouse_event (GST_NAVIGATION (gl_sink),
       event_name, button, posx, posy);
 }
@@ -1472,6 +1474,15 @@
     gst_gl_sync_meta_wait (sync_meta, glimage_sink->context);
 
   GST_GLIMAGE_SINK_LOCK (glimage_sink);
+  if (glimage_sink->window_resized) {
+    glimage_sink->window_resized = FALSE;
+    GST_GLIMAGE_SINK_UNLOCK (glimage_sink);
+    GST_DEBUG_OBJECT (glimage_sink, "Sending reconfigure event on sinkpad.");
+    gst_pad_push_event (GST_BASE_SINK (glimage_sink)->sinkpad,
+        gst_event_new_reconfigure ());
+    GST_GLIMAGE_SINK_LOCK (glimage_sink);
+  }
+
   target = &glimage_sink->input_buffer;
   if (GST_VIDEO_INFO_MULTIVIEW_MODE (&glimage_sink->in_info) ==
       GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME &&
@@ -1869,7 +1880,6 @@
    */
   const GstGLFuncs *gl;
   gboolean do_reshape;
-  gboolean reconfigure;
 
   GST_DEBUG_OBJECT (gl_sink, "GL Window resized to %ux%u", width, height);
 
@@ -1883,7 +1893,7 @@
   height = MAX (1, height);
 
   /* Check if we would suggest a different width/height now */
-  reconfigure = ((gl_sink->window_width != width)
+  gl_sink->window_resized = ((gl_sink->window_width != width)
       || (gl_sink->window_height != height))
       && (gl_sink->window_width != 0)
       && (gl_sink->window_height != 0);
@@ -1891,12 +1901,6 @@
   gl_sink->window_width = width;
   gl_sink->window_height = height;
 
-  if (reconfigure) {
-    GST_DEBUG ("Sending reconfigure event on sinkpad.");
-    gst_pad_push_event (GST_BASE_SINK (gl_sink)->sinkpad,
-        gst_event_new_reconfigure ());
-  }
-
   gst_gl_insert_debug_marker (gl_sink->context, "%s window resize to %ix%i",
       GST_OBJECT_NAME (gl_sink), width, height);
 
@@ -2117,6 +2121,15 @@
 
     /* Recreate the output texture if needed */
     GST_GLIMAGE_SINK_LOCK (gl_sink);
+    if (gl_sink->window_resized) {
+      gl_sink->window_resized = FALSE;
+      GST_GLIMAGE_SINK_UNLOCK (gl_sink);
+      GST_DEBUG_OBJECT (gl_sink, "Sending reconfigure event on sinkpad.");
+      gst_pad_push_event (GST_BASE_SINK (gl_sink)->sinkpad,
+          gst_event_new_reconfigure ());
+      GST_GLIMAGE_SINK_LOCK (gl_sink);
+    }
+
     if (gl_sink->output_mode_changed && gl_sink->input_buffer != NULL) {
       GST_DEBUG ("Recreating output after mode/size change");
       update_output_format (gl_sink);
diff --git a/ext/gl/gstglimagesink.h b/ext/gl/gstglimagesink.h
index 8f9b2e6..6e9b98e 100644
--- a/ext/gl/gstglimagesink.h
+++ b/ext/gl/gstglimagesink.h
@@ -102,7 +102,8 @@
     GstGLSyncMeta *stored_sync_meta;
     GLuint redisplay_texture;
 
-    gboolean caps_change;
+    /* protected with drawing_lock */
+    gboolean window_resized;
     guint window_width;
     guint window_height;
 
diff --git a/ext/gl/gstglmixer.c b/ext/gl/gstglmixer.c
index 401e4ed..5ca1316 100644
--- a/ext/gl/gstglmixer.c
+++ b/ext/gl/gstglmixer.c
@@ -221,9 +221,17 @@
 
 /* copies the given caps */
 static GstCaps *
-_update_caps (GstVideoAggregator * vagg, GstCaps * caps)
+_update_caps (GstVideoAggregator * vagg, GstCaps * caps, GstCaps * filter)
 {
-  return gst_gl_caps_replace_all_caps_features (caps,
+  GstCaps *tmp;
+
+  if (filter) {
+    tmp = gst_caps_intersect (caps, filter);
+  } else {
+    tmp = caps;
+  }
+
+  return gst_gl_caps_replace_all_caps_features (tmp,
       GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
 }
 
@@ -408,7 +416,6 @@
 gst_gl_mixer_init (GstGLMixer * mix)
 {
   mix->priv = GST_GL_MIXER_GET_PRIVATE (mix);
-  mix->array_buffers = 0;
   mix->fbo = 0;
   mix->depthbuffer = 0;
 
@@ -591,16 +598,47 @@
   }
 }
 
+static gboolean
+_upload_frames (GstAggregator * agg, GstAggregatorPad * agg_pad,
+    gpointer user_data)
+{
+  GstVideoAggregatorPad *vaggpad = GST_VIDEO_AGGREGATOR_PAD (agg_pad);
+  GstGLMixerPad *pad = GST_GL_MIXER_PAD (agg_pad);
+  GstGLMixer *mix = GST_GL_MIXER (agg);
+
+  if (vaggpad->buffer != NULL) {
+    GstVideoInfo gl_info;
+    GstVideoFrame gl_frame;
+    GstGLSyncMeta *sync_meta;
+
+    gst_video_info_set_format (&gl_info,
+        GST_VIDEO_FORMAT_RGBA,
+        GST_VIDEO_INFO_WIDTH (&vaggpad->info),
+        GST_VIDEO_INFO_HEIGHT (&vaggpad->info));
+
+    sync_meta = gst_buffer_get_gl_sync_meta (vaggpad->buffer);
+    if (sync_meta)
+      gst_gl_sync_meta_wait (sync_meta, GST_GL_BASE_MIXER (mix)->context);
+
+    if (!gst_video_frame_map (&gl_frame, &gl_info, vaggpad->buffer,
+            GST_MAP_READ | GST_MAP_GL)) {
+      GST_ERROR_OBJECT (agg_pad, "Failed to map input frame");
+      return FALSE;
+    }
+
+    pad->current_texture = *(guint *) gl_frame.data[0];
+    gst_video_frame_unmap (&gl_frame);
+  }
+
+  return TRUE;
+}
+
 gboolean
 gst_gl_mixer_process_textures (GstGLMixer * mix, GstBuffer * outbuf)
 {
-  guint i;
-  GList *walk;
   guint out_tex;
   gboolean res = TRUE;
-  guint array_index = 0;
   GstVideoFrame out_frame;
-  GstElement *element = GST_ELEMENT (mix);
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (mix);
   GstGLMixerClass *mix_class = GST_GL_MIXER_GET_CLASS (mix);
   GstGLMixerPrivate *priv = mix->priv;
@@ -614,47 +652,9 @@
 
   out_tex = *(guint *) out_frame.data[0];
 
-  GST_OBJECT_LOCK (mix);
-  walk = element->sinkpads;
-
-  i = mix->frames->len;
-  g_ptr_array_set_size (mix->frames, element->numsinkpads);
-  for (; i < element->numsinkpads; i++)
-    mix->frames->pdata[i] = g_slice_new0 (GstGLMixerFrameData);
-  while (walk) {
-    GstGLMixerPad *pad = GST_GL_MIXER_PAD (walk->data);
-    GstVideoAggregatorPad *vaggpad = walk->data;
-    GstGLMixerFrameData *frame;
-
-    frame = g_ptr_array_index (mix->frames, array_index);
-    frame->pad = pad;
-    frame->texture = 0;
-
-    walk = g_list_next (walk);
-
-    if (vaggpad->buffer != NULL) {
-      GstVideoInfo gl_info;
-      GstVideoFrame gl_frame;
-      GstGLSyncMeta *sync_meta;
-
-      gst_video_info_set_format (&gl_info,
-          GST_VIDEO_FORMAT_RGBA,
-          GST_VIDEO_INFO_WIDTH (&vaggpad->info),
-          GST_VIDEO_INFO_HEIGHT (&vaggpad->info));
-
-      sync_meta = gst_buffer_get_gl_sync_meta (vaggpad->buffer);
-      if (sync_meta)
-        gst_gl_sync_meta_wait (sync_meta, GST_GL_BASE_MIXER (mix)->context);
-
-      if (gst_video_frame_map (&gl_frame, &gl_info, vaggpad->buffer,
-              GST_MAP_READ | GST_MAP_GL)) {
-        frame->texture = *(guint *) gl_frame.data[0];
-        gst_video_frame_unmap (&gl_frame);
-      }
-    }
-
-    ++array_index;
-  }
+  if (!gst_aggregator_iterate_sinkpads (GST_AGGREGATOR (mix),
+          (GstAggregatorPadForeachFunc) _upload_frames, NULL))
+    return FALSE;
 
   g_mutex_lock (&priv->gl_resource_lock);
   if (!priv->gl_resource_ready)
@@ -668,13 +668,11 @@
     goto out;
   }
 
-  mix_class->process_textures (mix, mix->frames, out_tex);
+  mix_class->process_textures (mix, out_tex);
 
   g_mutex_unlock (&priv->gl_resource_lock);
 
 out:
-  GST_OBJECT_UNLOCK (mix);
-
   gst_video_frame_unmap (&out_frame);
 
   return res;
@@ -683,31 +681,9 @@
 static gboolean
 gst_gl_mixer_process_buffers (GstGLMixer * mix, GstBuffer * outbuf)
 {
-  GList *walk;
-  guint i, array_index = 0;
-  GstElement *element = GST_ELEMENT (mix);
   GstGLMixerClass *mix_class = GST_GL_MIXER_GET_CLASS (mix);
 
-  GST_OBJECT_LOCK (mix);
-  walk = GST_ELEMENT (mix)->sinkpads;
-  i = mix->frames->len;
-  g_ptr_array_set_size (mix->frames, element->numsinkpads);
-  for (; i < element->numsinkpads; i++)
-    mix->frames->pdata[i] = g_slice_new0 (GstGLMixerFrameData);
-  while (walk) {                /* We walk with this list because it's ordered */
-    GstVideoAggregatorPad *vaggpad = walk->data;
-
-    walk = g_list_next (walk);
-
-    if (vaggpad->buffer != NULL) {
-      /* put buffer into array */
-      mix->array_buffers->pdata[array_index] = vaggpad->buffer;
-    }
-    ++array_index;
-  }
-  GST_OBJECT_UNLOCK (mix);
-
-  return mix_class->process_buffers (mix, mix->array_buffers, outbuf);
+  return mix_class->process_buffers (mix, outbuf);
 }
 
 static GstFlowReturn
@@ -753,32 +729,9 @@
   }
 }
 
-static void
-_free_glmixer_frame_data (GstGLMixerFrameData * frame)
-{
-  g_slice_free1 (sizeof (GstGLMixerFrameData), frame);
-}
-
 static gboolean
 gst_gl_mixer_start (GstAggregator * agg)
 {
-  guint i;
-  GstGLMixer *mix = GST_GL_MIXER (agg);
-  GstElement *element = GST_ELEMENT (agg);
-
-  GST_OBJECT_LOCK (mix);
-  mix->array_buffers = g_ptr_array_new_full (element->numsinkpads, NULL);
-  mix->frames = g_ptr_array_new_full (element->numsinkpads,
-      (GDestroyNotify) _free_glmixer_frame_data);
-
-  g_ptr_array_set_size (mix->array_buffers, element->numsinkpads);
-  g_ptr_array_set_size (mix->frames, element->numsinkpads);
-
-  for (i = 0; i < element->numsinkpads; i++)
-    mix->frames->pdata[i] = g_slice_new0 (GstGLMixerFrameData);
-
-  GST_OBJECT_UNLOCK (mix);
-
   return GST_AGGREGATOR_CLASS (parent_class)->start (agg);
 }
 
@@ -789,13 +742,6 @@
   GstGLMixerClass *mixer_class = GST_GL_MIXER_GET_CLASS (mix);
   GstGLContext *context = GST_GL_BASE_MIXER (mix)->context;
 
-  GST_OBJECT_LOCK (agg);
-  g_ptr_array_free (mix->frames, TRUE);
-  mix->frames = NULL;
-  g_ptr_array_free (mix->array_buffers, TRUE);
-  mix->array_buffers = NULL;
-  GST_OBJECT_UNLOCK (agg);
-
   if (mixer_class->reset)
     mixer_class->reset (mix);
   if (mix->fbo) {
diff --git a/ext/gl/gstglmixer.h b/ext/gl/gstglmixer.h
index 01eed34..81976a7 100644
--- a/ext/gl/gstglmixer.h
+++ b/ext/gl/gstglmixer.h
@@ -31,7 +31,6 @@
 typedef struct _GstGLMixer GstGLMixer;
 typedef struct _GstGLMixerClass GstGLMixerClass;
 typedef struct _GstGLMixerPrivate GstGLMixerPrivate;
-typedef struct _GstGLMixerFrameData GstGLMixerFrameData;
 
 #define GST_TYPE_GL_MIXER_PAD (gst_gl_mixer_pad_get_type())
 #define GST_GL_MIXER_PAD(obj) \
@@ -52,6 +51,8 @@
 struct _GstGLMixerPad
 {
   GstGLBaseMixerPad parent;
+
+  guint current_texture;
 };
 
 struct _GstGLMixerPadClass
@@ -76,18 +77,13 @@
 typedef gboolean (*GstGLMixerSetCaps) (GstGLMixer* mixer,
   GstCaps* outcaps);
 typedef void (*GstGLMixerReset) (GstGLMixer *mixer);
-typedef gboolean (*GstGLMixerProcessFunc) (GstGLMixer *mix,
-  GPtrArray *buffers, GstBuffer *outbuf);
-typedef gboolean (*GstGLMixerProcessTextures) (GstGLMixer *mix,
-  GPtrArray *frames, guint out_tex);
+typedef gboolean (*GstGLMixerProcessFunc) (GstGLMixer *mix, GstBuffer *outbuf);
+typedef gboolean (*GstGLMixerProcessTextures) (GstGLMixer *mix, guint out_tex);
 
 struct _GstGLMixer
 {
   GstGLBaseMixer vaggregator;
 
-  GPtrArray *array_buffers;
-  GPtrArray *frames;
-
   GLuint fbo;
   GLuint depthbuffer;
 
@@ -106,12 +102,6 @@
   GstGLMixerProcessTextures process_textures;
 };
 
-struct _GstGLMixerFrameData
-{
-  GstGLMixerPad *pad;
-  guint texture;
-};
-
 GType gst_gl_mixer_get_type(void);
 
 gboolean gst_gl_mixer_process_textures (GstGLMixer * mix, GstBuffer * outbuf);
diff --git a/ext/gl/gstglmosaic.c b/ext/gl/gstglmosaic.c
index 0a98341..83ac798 100644
--- a/ext/gl/gstglmosaic.c
+++ b/ext/gl/gstglmosaic.c
@@ -70,7 +70,7 @@
     GstCaps * outcaps);
 
 static gboolean gst_gl_mosaic_process_textures (GstGLMixer * mixer,
-    GPtrArray * frames, guint out_tex);
+    guint out_tex);
 static void gst_gl_mosaic_callback (gpointer stuff);
 
 //vertex source
@@ -142,7 +142,6 @@
 gst_gl_mosaic_init (GstGLMosaic * mosaic)
 {
   mosaic->shader = NULL;
-  mosaic->input_frames = NULL;
 }
 
 static void
@@ -176,8 +175,6 @@
 {
   GstGLMosaic *mosaic = GST_GL_MOSAIC (mixer);
 
-  mosaic->input_frames = NULL;
-
   //blocking call, wait the opengl thread has destroyed the shader
   if (mosaic->shader)
     gst_gl_context_del_shader (GST_GL_BASE_MIXER (mixer)->context,
@@ -196,13 +193,10 @@
 }
 
 static gboolean
-gst_gl_mosaic_process_textures (GstGLMixer * mix, GPtrArray * frames,
-    guint out_tex)
+gst_gl_mosaic_process_textures (GstGLMixer * mix, guint out_tex)
 {
   GstGLMosaic *mosaic = GST_GL_MOSAIC (mix);
 
-  mosaic->input_frames = frames;
-
   //blocking call, use a FBO
   gst_gl_context_use_fbo_v2 (GST_GL_BASE_MIXER (mix)->context,
       GST_VIDEO_INFO_WIDTH (&GST_VIDEO_AGGREGATOR (mix)->info),
@@ -219,6 +213,7 @@
   GstGLMosaic *mosaic = GST_GL_MOSAIC (stuff);
   GstGLMixer *mixer = GST_GL_MIXER (mosaic);
   GstGLFuncs *gl = GST_GL_BASE_MIXER (mixer)->context->gl_vtable;
+  GList *walk;
 
   static GLfloat xrot = 0;
   static GLfloat yrot = 0;
@@ -255,8 +250,10 @@
   attr_texture_loc =
       gst_gl_shader_get_attribute_location (mosaic->shader, "a_texCoord");
 
-  while (count < mosaic->input_frames->len && count < 6) {
-    GstGLMixerFrameData *frame;
+  GST_OBJECT_LOCK (mosaic);
+  walk = GST_ELEMENT (mosaic)->sinkpads;
+  while (walk) {
+    GstGLMixerPad *pad = walk->data;
     /* *INDENT-OFF* */
     gfloat v_vertices[] = {
       /* front face */
@@ -294,20 +291,13 @@
     guint in_tex;
     guint width, height;
 
-    frame = g_ptr_array_index (mosaic->input_frames, count);
-    if (!frame) {
-      GST_DEBUG ("skipping texture, null frame");
-      count++;
-      continue;
-    }
-    in_tex = frame->texture;
-    width = GST_VIDEO_INFO_WIDTH (&GST_VIDEO_AGGREGATOR_PAD (frame->pad)->info);
-    height =
-        GST_VIDEO_INFO_HEIGHT (&GST_VIDEO_AGGREGATOR_PAD (frame->pad)->info);
+    in_tex = pad->current_texture;
+    width = GST_VIDEO_INFO_WIDTH (&GST_VIDEO_AGGREGATOR_PAD (pad)->info);
+    height = GST_VIDEO_INFO_HEIGHT (&GST_VIDEO_AGGREGATOR_PAD (pad)->info);
 
     if (!in_tex || width <= 0 || height <= 0) {
-      GST_DEBUG ("skipping texture:%u frame:%p width:%u height %u",
-          in_tex, frame, width, height);
+      GST_DEBUG ("skipping texture:%u pad:%p width:%u height %u",
+          in_tex, pad, width, height);
       count++;
       continue;
     }
@@ -335,7 +325,10 @@
     gl->DrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, indices);
 
     ++count;
+
+    walk = g_list_next (walk);
   }
+  GST_OBJECT_UNLOCK (mosaic);
 
   gl->DisableVertexAttribArray (attr_position_loc);
   gl->DisableVertexAttribArray (attr_texture_loc);
diff --git a/ext/gl/gstglmosaic.h b/ext/gl/gstglmosaic.h
index 49c99e7..e0b340c 100644
--- a/ext/gl/gstglmosaic.h
+++ b/ext/gl/gstglmosaic.h
@@ -40,7 +40,6 @@
     GstGLMixer mixer;
 
     GstGLShader *shader;
-    GPtrArray *input_frames;
 };
 
 struct _GstGLMosaicClass
diff --git a/ext/gl/gstglsinkbin.c b/ext/gl/gstglsinkbin.c
index cab615f..c9c5a72 100644
--- a/ext/gl/gstglsinkbin.c
+++ b/ext/gl/gstglsinkbin.c
@@ -42,6 +42,8 @@
     gpointer g_iface_data);
 static void gst_gl_sink_bin_navigation_interface_init (gpointer g_iface,
     gpointer g_iface_data);
+static void gst_gl_sink_bin_color_balance_init (gpointer g_iface,
+    gpointer g_iface_data);
 
 #define DEFAULT_SYNC                TRUE
 #define DEFAULT_MAX_LATENESS        -1
@@ -54,6 +56,12 @@
 #define DEFAULT_THROTTLE_TIME       0
 #define DEFAULT_MAX_BITRATE         0
 
+/* GstGLColorBalance properties */
+#define DEFAULT_PROP_CONTRAST       1.0
+#define DEFAULT_PROP_BRIGHTNESS	    0.0
+#define DEFAULT_PROP_HUE            0.0
+#define DEFAULT_PROP_SATURATION	    1.0
+
 enum
 {
   PROP_0,
@@ -70,6 +78,10 @@
   PROP_RENDER_DELAY,
   PROP_THROTTLE_TIME,
   PROP_MAX_BITRATE,
+  PROP_CONTRAST,
+  PROP_BRIGHTNESS,
+  PROP_HUE,
+  PROP_SATURATION,
 };
 
 enum
@@ -87,6 +99,8 @@
         gst_gl_sink_bin_video_overlay_init);
     G_IMPLEMENT_INTERFACE (GST_TYPE_NAVIGATION,
         gst_gl_sink_bin_navigation_interface_init);
+    G_IMPLEMENT_INTERFACE (GST_TYPE_COLOR_BALANCE,
+        gst_gl_sink_bin_color_balance_init)
     GST_DEBUG_CATEGORY_INIT (gst_debug_gl_sink_bin, "glimagesink", 0,
         "OpenGL Video Sink Bin"));
 
@@ -166,6 +180,23 @@
           G_MAXUINT64, DEFAULT_MAX_BITRATE,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+  /* colorbalance */
+  g_object_class_install_property (gobject_class, PROP_CONTRAST,
+      g_param_spec_double ("contrast", "Contrast", "contrast",
+          0.0, 2.0, DEFAULT_PROP_CONTRAST,
+          GST_PARAM_CONTROLLABLE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_BRIGHTNESS,
+      g_param_spec_double ("brightness", "Brightness", "brightness", -1.0, 1.0,
+          DEFAULT_PROP_BRIGHTNESS,
+          GST_PARAM_CONTROLLABLE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_HUE,
+      g_param_spec_double ("hue", "Hue", "hue", -1.0, 1.0, DEFAULT_PROP_HUE,
+          GST_PARAM_CONTROLLABLE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_SATURATION,
+      g_param_spec_double ("saturation", "Saturation", "saturation", 0.0, 2.0,
+          DEFAULT_PROP_SATURATION,
+          GST_PARAM_CONTROLLABLE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
   /**
    * GstGLSinkBin::create-element:
    * @object: the #GstGLSinkBin
@@ -198,11 +229,14 @@
 
   self->upload = gst_element_factory_make ("glupload", NULL);
   self->convert = gst_element_factory_make ("glcolorconvert", NULL);
+  self->balance = gst_element_factory_make ("glcolorbalance", NULL);
 
   res &= gst_bin_add (GST_BIN (self), self->upload);
   res &= gst_bin_add (GST_BIN (self), self->convert);
+  res &= gst_bin_add (GST_BIN (self), self->balance);
 
   res &= gst_element_link_pads (self->upload, "src", self->convert, "sink");
+  res &= gst_element_link_pads (self->convert, "src", self->balance, "sink");
 
   pad = gst_element_get_static_pad (self->upload, "sink");
   if (!pad) {
@@ -214,6 +248,15 @@
     gst_object_unref (pad);
   }
 
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (self->balance),
+      GST_OBJECT (self), "contrast");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (self->balance),
+      GST_OBJECT (self), "brightness");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (self->balance),
+      GST_OBJECT (self), "hue");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (self->balance),
+      GST_OBJECT (self), "saturation");
+
   if (!res) {
     GST_WARNING_OBJECT (self, "Failed to add/connect the necessary machinery");
   }
@@ -227,7 +270,7 @@
   gst_object_set_name (GST_OBJECT (self->sink), "sink");
   res &= gst_bin_add (GST_BIN (self), self->sink);
 
-  res &= gst_element_link_pads (self->convert, "src", self->sink, "sink");
+  res &= gst_element_link_pads (self->balance, "src", self->sink, "sink");
 
   if (!res)
     GST_ERROR_OBJECT (self, "Failed to link sink element into the pipeline");
@@ -281,6 +324,13 @@
       }
       break;
     }
+    case PROP_CONTRAST:
+    case PROP_BRIGHTNESS:
+    case PROP_HUE:
+    case PROP_SATURATION:
+      if (self->balance)
+        g_object_set_property (G_OBJECT (self->balance), pspec->name, value);
+      break;
     default:
       if (self->sink)
         g_object_set_property (G_OBJECT (self->sink), pspec->name, value);
@@ -298,6 +348,13 @@
     case PROP_SINK:
       g_value_set_object (value, self->sink);
       break;
+    case PROP_CONTRAST:
+    case PROP_BRIGHTNESS:
+    case PROP_HUE:
+    case PROP_SATURATION:
+      if (self->balance)
+        g_object_get_property (G_OBJECT (self->balance), pspec->name, value);
+      break;
     default:
       if (self->sink)
         g_object_get_property (G_OBJECT (self->sink), pspec->name, value);
@@ -454,3 +511,89 @@
   iface->set_render_rectangle = gst_gl_sink_bin_overlay_set_render_rectangle;
   iface->set_window_handle = gst_gl_sink_bin_overlay_set_window_handle;
 }
+
+static const GList *
+gst_gl_sink_bin_color_balance_list_channels (GstColorBalance * balance)
+{
+  GstGLSinkBin *self = GST_GL_SINK_BIN (balance);
+  GstColorBalance *balance_element = NULL;
+  const GList *list = NULL;
+
+  balance_element =
+      GST_COLOR_BALANCE (gst_bin_get_by_interface (GST_BIN (self),
+          GST_TYPE_COLOR_BALANCE));
+
+  if (balance_element) {
+    list = gst_color_balance_list_channels (balance_element);
+    gst_object_unref (balance_element);
+  }
+
+  return list;
+}
+
+static void
+gst_gl_sink_bin_color_balance_set_value (GstColorBalance * balance,
+    GstColorBalanceChannel * channel, gint value)
+{
+  GstGLSinkBin *self = GST_GL_SINK_BIN (balance);
+  GstColorBalance *balance_element = NULL;
+
+  balance_element =
+      GST_COLOR_BALANCE (gst_bin_get_by_interface (GST_BIN (self),
+          GST_TYPE_COLOR_BALANCE));
+
+  if (balance_element) {
+    gst_color_balance_set_value (balance_element, channel, value);
+    gst_object_unref (balance_element);
+  }
+}
+
+static gint
+gst_gl_sink_bin_color_balance_get_value (GstColorBalance * balance,
+    GstColorBalanceChannel * channel)
+{
+  GstGLSinkBin *self = GST_GL_SINK_BIN (balance);
+  GstColorBalance *balance_element = NULL;
+  gint val = 0;
+
+  balance_element =
+      GST_COLOR_BALANCE (gst_bin_get_by_interface (GST_BIN (self),
+          GST_TYPE_COLOR_BALANCE));
+
+  if (balance_element) {
+    val = gst_color_balance_get_value (balance_element, channel);
+    gst_object_unref (balance_element);
+  }
+
+  return val;
+}
+
+static GstColorBalanceType
+gst_gl_sink_bin_color_balance_get_balance_type (GstColorBalance * balance)
+{
+  GstGLSinkBin *self = GST_GL_SINK_BIN (balance);
+  GstColorBalance *balance_element = NULL;
+  GstColorBalanceType type = 0;
+
+  balance_element =
+      GST_COLOR_BALANCE (gst_bin_get_by_interface (GST_BIN (self),
+          GST_TYPE_COLOR_BALANCE));
+
+  if (balance_element) {
+    type = gst_color_balance_get_balance_type (balance_element);
+    gst_object_unref (balance_element);
+  }
+
+  return type;
+}
+
+static void
+gst_gl_sink_bin_color_balance_init (gpointer g_iface, gpointer g_iface_data)
+{
+  GstColorBalanceInterface *iface = (GstColorBalanceInterface *) g_iface;
+
+  iface->list_channels = gst_gl_sink_bin_color_balance_list_channels;
+  iface->set_value = gst_gl_sink_bin_color_balance_set_value;
+  iface->get_value = gst_gl_sink_bin_color_balance_get_value;
+  iface->get_balance_type = gst_gl_sink_bin_color_balance_get_balance_type;
+}
diff --git a/ext/gl/gstglsinkbin.h b/ext/gl/gstglsinkbin.h
index 1dbb40d..f4529d0 100644
--- a/ext/gl/gstglsinkbin.h
+++ b/ext/gl/gstglsinkbin.h
@@ -56,6 +56,7 @@
 
   GstElement *upload;
   GstElement *convert;
+  GstElement *balance;
   GstElement *sink;
 };
 
diff --git a/ext/gl/gstglstereomix.c b/ext/gl/gstglstereomix.c
index c342a23..fee1080 100644
--- a/ext/gl/gstglstereomix.c
+++ b/ext/gl/gstglstereomix.c
@@ -30,15 +30,27 @@
 #define GST_CAT_DEFAULT gst_gl_stereo_mix_debug
 GST_DEBUG_CATEGORY (gst_gl_stereo_mix_debug);
 
+G_DEFINE_TYPE (GstGLStereoMixPad, gst_gl_stereo_mix_pad, GST_TYPE_GL_MIXER_PAD);
+
+static void
+gst_gl_stereo_mix_pad_class_init (GstGLStereoMixPadClass * klass)
+{
+}
+
+static void
+gst_gl_stereo_mix_pad_init (GstGLStereoMixPad * pad)
+{
+}
+
 #define gst_gl_stereo_mix_parent_class parent_class
 G_DEFINE_TYPE (GstGLStereoMix, gst_gl_stereo_mix, GST_TYPE_GL_MIXER);
 
-static GstCaps *_update_caps (GstVideoAggregator * vagg, GstCaps * caps);
+static GstCaps *_update_caps (GstVideoAggregator * vagg, GstCaps * caps,
+    GstCaps * filter);
 static gboolean _negotiated_caps (GstVideoAggregator * videoaggregator,
     GstCaps * caps);
 gboolean gst_gl_stereo_mix_make_output (GstGLStereoMix * mix);
-static gboolean gst_gl_stereo_mix_process_frames (GstGLStereoMix * mixer,
-    GPtrArray * in_frames);
+static gboolean gst_gl_stereo_mix_process_frames (GstGLStereoMix * mixer);
 
 #define DEFAULT_DOWNMIX GST_GL_STEREO_DOWNMIX_ANAGLYPH_GREEN_MAGENTA_DUBOIS
 
@@ -143,6 +155,7 @@
   gst_element_class_add_pad_template (element_class,
       gst_static_pad_template_get (&sink_factory));
 
+  agg_class->sinkpads_type = GST_TYPE_GL_STEREO_MIX_PAD;
   agg_class->stop = gst_gl_stereo_mix_stop;
   agg_class->start = gst_gl_stereo_mix_start;
   agg_class->src_query = gst_gl_stereo_mix_src_query;
@@ -153,7 +166,6 @@
   videoaggregator_class->get_output_buffer =
       gst_gl_stereo_mix_get_output_buffer;
   videoaggregator_class->find_best_format = gst_gl_stereo_mix_find_best_format;
-  videoaggregator_class->preserve_update_caps_result = TRUE;
 
   base_mix_class->supported_gl_api = GST_GL_API_OPENGL | GST_GL_API_OPENGL3;
 }
@@ -250,10 +262,8 @@
 gboolean
 gst_gl_stereo_mix_make_output (GstGLStereoMix * mix)
 {
-  guint i;
   GList *walk;
   gboolean res = FALSE;
-  guint array_index = 0;
   GstElement *element = GST_ELEMENT (mix);
   gboolean missing_buffer = FALSE;
 
@@ -261,33 +271,23 @@
 
   GST_OBJECT_LOCK (mix);
   walk = element->sinkpads;
-
-  i = mix->frames->len;
-  g_ptr_array_set_size (mix->frames, element->numsinkpads);
-  for (; i < element->numsinkpads; i++)
-    mix->frames->pdata[i] = g_slice_new0 (GstGLStereoMixFrameData);
   while (walk) {
-    GstGLMixerPad *pad = GST_GL_MIXER_PAD (walk->data);
     GstVideoAggregatorPad *vaggpad = walk->data;
-    GstGLStereoMixFrameData *frame;
+    GstGLStereoMixPad *pad = walk->data;
 
     GST_LOG_OBJECT (mix, "Checking pad %" GST_PTR_FORMAT, vaggpad);
 
-    frame = g_ptr_array_index (mix->frames, array_index);
-    frame->base.pad = pad;
-    frame->buf = NULL;
-
-    walk = g_list_next (walk);
-
     if (vaggpad->buffer != NULL) {
-      frame->buf = vaggpad->buffer;
+      pad->current_buffer = vaggpad->buffer;
 
-      GST_DEBUG_OBJECT (pad, "Got buffer %" GST_PTR_FORMAT, frame->buf);
+      GST_DEBUG_OBJECT (pad, "Got buffer %" GST_PTR_FORMAT,
+          pad->current_buffer);
     } else {
       GST_LOG_OBJECT (mix, "No buffer on pad %" GST_PTR_FORMAT, vaggpad);
+      pad->current_buffer = NULL;
       missing_buffer = TRUE;
     }
-    ++array_index;
+    walk = g_list_next (walk);
   }
   if (missing_buffer) {
     /* We're still waiting for a buffer to turn up on at least one input */
@@ -297,7 +297,7 @@
   }
 
   /* Copy GL memory from each input frame to the output */
-  if (!gst_gl_stereo_mix_process_frames (mix, mix->frames)) {
+  if (!gst_gl_stereo_mix_process_frames (mix)) {
     GST_LOG_OBJECT (mix, "Failed to process frames to output");
     goto out;
   }
@@ -371,41 +371,18 @@
   }
 }
 
-static void
-_free_glmixer_frame_data (GstGLStereoMixFrameData * frame)
-{
-  if (frame == NULL)
-    return;
-  if (frame->buf)
-    gst_buffer_unref (frame->buf);
-  g_slice_free1 (sizeof (GstGLStereoMixFrameData), frame);
-}
-
 static gboolean
 gst_gl_stereo_mix_start (GstAggregator * agg)
 {
-  guint i;
   GstGLStereoMix *mix = GST_GL_STEREO_MIX (agg);
-  GstElement *element = GST_ELEMENT (agg);
 
   if (!GST_AGGREGATOR_CLASS (parent_class)->start (agg))
     return FALSE;
 
   GST_OBJECT_LOCK (mix);
-  mix->array_buffers = g_ptr_array_new_full (element->numsinkpads,
-      (GDestroyNotify) _free_glmixer_frame_data);
-  mix->frames = g_ptr_array_new_full (element->numsinkpads, NULL);
-
-  g_ptr_array_set_size (mix->array_buffers, element->numsinkpads);
-  g_ptr_array_set_size (mix->frames, element->numsinkpads);
-
-  for (i = 0; i < element->numsinkpads; i++)
-    mix->frames->pdata[i] = g_slice_new0 (GstGLStereoMixFrameData);
-
   mix->viewconvert = gst_gl_view_convert_new ();
   g_object_set (G_OBJECT (mix->viewconvert), "downmix-mode",
       mix->downmix_mode, NULL);
-
   GST_OBJECT_UNLOCK (mix);
 
   return TRUE;
@@ -419,13 +396,6 @@
   if (!GST_AGGREGATOR_CLASS (parent_class)->stop (agg))
     return FALSE;
 
-  GST_OBJECT_LOCK (agg);
-  g_ptr_array_free (mix->frames, TRUE);
-  mix->frames = NULL;
-  g_ptr_array_free (mix->array_buffers, TRUE);
-  mix->array_buffers = NULL;
-  GST_OBJECT_UNLOCK (agg);
-
   if (mix->viewconvert) {
     gst_object_unref (mix->viewconvert);
     mix->viewconvert = NULL;
@@ -471,7 +441,7 @@
 
 /* Return the possible output caps we decided in find_best_format() */
 static GstCaps *
-_update_caps (GstVideoAggregator * vagg, GstCaps * caps)
+_update_caps (GstVideoAggregator * vagg, GstCaps * caps, GstCaps * filter)
 {
   GstGLStereoMix *mix = GST_GL_STEREO_MIX (vagg);
 
@@ -511,34 +481,34 @@
   return TRUE;
 }
 
+/* called with the object lock held */
 static gboolean
-gst_gl_stereo_mix_process_frames (GstGLStereoMix * mixer, GPtrArray * frames)
+gst_gl_stereo_mix_process_frames (GstGLStereoMix * mixer)
 {
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (mixer);
   GstBuffer *converted_buffer, *inbuf;
   GstVideoInfo *out_info = &vagg->info;
-  gint count = 0;
 #ifndef G_DISABLE_ASSERT
   gint n;
 #endif
   gint v, views;
   gint valid_views = 0;
+  GList *walk;
 
   inbuf = gst_buffer_new ();
-  while (count < frames->len) {
-    GstGLStereoMixFrameData *frame;
+  walk = GST_ELEMENT (mixer)->sinkpads;
+  while (walk) {
+    GstGLStereoMixPad *pad = walk->data;
     GstMemory *in_mem;
 
-    frame = g_ptr_array_index (frames, count);
-    GST_LOG_OBJECT (mixer, "Handling frame %d", count);
+    GST_LOG_OBJECT (mixer, "Handling frame %d", valid_views);
 
-    if (!frame) {
+    if (!pad || !pad->current_buffer) {
       GST_DEBUG ("skipping texture, null frame");
-      count++;
       continue;
     }
 
-    in_mem = gst_buffer_get_memory (frame->buf, 0);
+    in_mem = gst_buffer_get_memory (pad->current_buffer, 0);
 
     GST_LOG_OBJECT (mixer,
         "Appending memory %" GST_PTR_FORMAT " to intermediate buffer", in_mem);
@@ -551,10 +521,10 @@
      */
     gst_buffer_append_memory (inbuf, in_mem);
     /* Use parent buffer meta to keep input buffer alive */
-    gst_buffer_add_parent_buffer_meta (inbuf, frame->buf);
+    gst_buffer_add_parent_buffer_meta (inbuf, pad->current_buffer);
 
-    count++;
     valid_views++;
+    walk = g_list_next (walk);
   }
 
   if (mixer->mix_info.views != valid_views) {
diff --git a/ext/gl/gstglstereomix.h b/ext/gl/gstglstereomix.h
index 0c06d42..b0f1bd2 100644
--- a/ext/gl/gstglstereomix.h
+++ b/ext/gl/gstglstereomix.h
@@ -40,15 +40,30 @@
 
 typedef struct _GstGLStereoMix GstGLStereoMix;
 typedef struct _GstGLStereoMixClass GstGLStereoMixClass;
-typedef struct _GstGLStereoMixFrameData GstGLStereoMixFrameData;
+typedef struct _GstGLStereoMixPad GstGLStereoMixPad;
+typedef struct _GstGLStereoMixPadClass GstGLStereoMixPadClass;
+
+struct _GstGLStereoMixPad
+{
+  GstGLMixerPad mixer_pad;
+
+  gboolean mapped;
+  GstBuffer *current_buffer;
+};
+
+struct _GstGLStereoMixPadClass
+{
+  GstGLMixerPadClass mixer_pad_class;
+};
+
+#define GST_TYPE_GL_STEREO_MIX_PAD (gst_gl_stereo_mix_pad_get_type ())
+GType gst_gl_stereo_mix_pad_get_type (void);
+
 
 struct _GstGLStereoMix
 {
   GstGLMixer mixer;
 
-  GPtrArray *array_buffers;
-  GPtrArray *frames;
-
   GLuint out_tex_id;
 
   GstGLViewConvert *viewconvert;
@@ -69,13 +84,6 @@
     GstGLMixerClass mixer_class;
 };
 
-struct _GstGLStereoMixFrameData
-{
-  GstGLMixerFrameData base;
-  gboolean mapped;
-  GstBuffer *buf;
-};
-
 GType gst_gl_stereo_mix_get_type(void);
 
 G_END_DECLS
diff --git a/ext/gl/gstgltransformation.c b/ext/gl/gstgltransformation.c
index 7d1472f..779447c 100644
--- a/ext/gl/gstgltransformation.c
+++ b/ext/gl/gstgltransformation.c
@@ -1,6 +1,7 @@
 /*
  * GStreamer
  * Copyright (C) 2014 Lubosz Sarnecki <lubosz@gmail.com>
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -86,6 +87,8 @@
 
 static gboolean gst_gl_transformation_set_caps (GstGLFilter * filter,
     GstCaps * incaps, GstCaps * outcaps);
+static gboolean gst_gl_transformation_src_event (GstBaseTransform * trans,
+    GstEvent * event);
 
 static void gst_gl_transformation_reset_gl (GstGLFilter * filter);
 static gboolean gst_gl_transformation_stop (GstBaseTransform * trans);
@@ -126,13 +129,17 @@
 {
   GObjectClass *gobject_class;
   GstElementClass *element_class;
+  GstBaseTransformClass *base_transform_class;
 
   gobject_class = (GObjectClass *) klass;
   element_class = GST_ELEMENT_CLASS (klass);
+  base_transform_class = GST_BASE_TRANSFORM_CLASS (klass);
 
   gobject_class->set_property = gst_gl_transformation_set_property;
   gobject_class->get_property = gst_gl_transformation_get_property;
 
+  base_transform_class->src_event = gst_gl_transformation_src_event;
+
   GST_GL_FILTER_CLASS (klass)->init_fbo = gst_gl_transformation_init_shader;
   GST_GL_FILTER_CLASS (klass)->display_reset_cb =
       gst_gl_transformation_reset_gl;
@@ -192,12 +199,14 @@
   g_object_class_install_property (gobject_class, PROP_SCALE_X,
       g_param_spec_float ("scale-x", "X Scale",
           "Scale multiplier for the X-Axis.",
-          0.0, G_MAXFLOAT, 1.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          -G_MAXFLOAT, G_MAXFLOAT, 1.0,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_SCALE_Y,
       g_param_spec_float ("scale-y", "Y Scale",
           "Scale multiplier for the Y-Axis.",
-          0.0, G_MAXFLOAT, 1.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          -G_MAXFLOAT, G_MAXFLOAT, 1.0,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   /* Pivot */
   g_object_class_install_property (gobject_class, PROP_PIVOT_X,
@@ -218,18 +227,19 @@
       g_param_spec_float ("pivot-z", "Z Pivot",
           "Relevant for rotation in 3D space. You look into the negative Z axis direction",
           -G_MAXFLOAT, G_MAXFLOAT, 0.0,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
 
   /* MVP */
   g_object_class_install_property (gobject_class, PROP_MVP,
       g_param_spec_boxed ("mvp-matrix",
           "Modelview Projection Matrix",
           "The final Graphene 4x4 Matrix for transformation",
-          GRAPHENE_TYPE_MATRIX, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+          GRAPHENE_TYPE_MATRIX, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   gst_element_class_set_metadata (element_class, "OpenGL transformation filter",
       "Filter/Effect/Video", "Transform video on the GPU",
-      "Lubosz Sarnecki <lubosz@gmail.com>");
+      "Lubosz Sarnecki <lubosz@gmail.com>\n"
+      "Matthew Waters <matthew@centricular.com>");
 
   GST_GL_BASE_FILTER_CLASS (klass)->supported_gl_api =
       GST_GL_API_OPENGL | GST_GL_API_OPENGL3 | GST_GL_API_GLES2;
@@ -255,69 +265,95 @@
 static void
 gst_gl_transformation_build_mvp (GstGLTransformation * transformation)
 {
-  graphene_point3d_t translation_vector =
-      GRAPHENE_POINT3D_INIT (transformation->xtranslation * 2.0 *
-      transformation->aspect,
-      transformation->ytranslation * 2.0,
-      transformation->ztranslation * 2.0);
+  GstGLFilter *filter = GST_GL_FILTER (transformation);
+  graphene_matrix_t modelview_matrix;
 
-  graphene_point3d_t pivot_vector =
-      GRAPHENE_POINT3D_INIT (-transformation->xpivot * transformation->aspect,
-      transformation->ypivot,
-      -transformation->zpivot);
-
-  graphene_point3d_t negative_pivot_vector;
-
-  graphene_matrix_t model_matrix;
-  graphene_matrix_t projection_matrix;
-  graphene_matrix_t view_matrix;
-  graphene_matrix_t vp_matrix;
-
-  graphene_vec3_t eye;
-  graphene_vec3_t center;
-  graphene_vec3_t up;
-
-  graphene_vec3_init (&eye, 0.f, 0.f, 1.f);
-  graphene_vec3_init (&center, 0.f, 0.f, 0.f);
-  graphene_vec3_init (&up, 0.f, 1.f, 0.f);
-
-  /* Translate into pivot origin */
-  graphene_matrix_init_translate (&model_matrix, &pivot_vector);
-
-  /* Scale */
-  graphene_matrix_scale (&model_matrix,
-      transformation->xscale, transformation->yscale, 1.0f);
-
-  /* Rotation */
-  graphene_matrix_rotate (&model_matrix,
-      transformation->xrotation, graphene_vec3_x_axis ());
-  graphene_matrix_rotate (&model_matrix,
-      transformation->yrotation, graphene_vec3_y_axis ());
-  graphene_matrix_rotate (&model_matrix,
-      transformation->zrotation, graphene_vec3_z_axis ());
-
-  /* Translate back from pivot origin */
-  graphene_point3d_scale (&pivot_vector, -1.0, &negative_pivot_vector);
-  graphene_matrix_translate (&model_matrix, &negative_pivot_vector);
-
-  /* Translation */
-  graphene_matrix_translate (&model_matrix, &translation_vector);
-
-  if (transformation->ortho) {
-    graphene_matrix_init_ortho (&projection_matrix,
-        -transformation->aspect, transformation->aspect,
-        -1, 1, transformation->znear, transformation->zfar);
+  if (!filter->out_info.finfo) {
+    graphene_matrix_init_identity (&transformation->model_matrix);
+    graphene_matrix_init_identity (&transformation->view_matrix);
+    graphene_matrix_init_identity (&transformation->projection_matrix);
   } else {
-    graphene_matrix_init_perspective (&projection_matrix,
-        transformation->fov,
-        transformation->aspect, transformation->znear, transformation->zfar);
+    graphene_point3d_t translation_vector =
+        GRAPHENE_POINT3D_INIT (transformation->xtranslation * 2.0 *
+        transformation->aspect,
+        transformation->ytranslation * 2.0,
+        transformation->ztranslation * 2.0);
+
+    graphene_point3d_t pivot_vector =
+        GRAPHENE_POINT3D_INIT (-transformation->xpivot * transformation->aspect,
+        transformation->ypivot,
+        -transformation->zpivot);
+
+    graphene_point3d_t negative_pivot_vector;
+
+    graphene_vec3_t eye;
+    graphene_vec3_t center;
+    graphene_vec3_t up;
+
+    gboolean current_passthrough;
+    gboolean passthrough;
+
+    graphene_vec3_init (&eye, 0.f, 0.f, 1.f);
+    graphene_vec3_init (&center, 0.f, 0.f, 0.f);
+    graphene_vec3_init (&up, 0.f, 1.f, 0.f);
+
+    /* Translate into pivot origin */
+    graphene_matrix_init_translate (&transformation->model_matrix,
+        &pivot_vector);
+
+    /* Scale */
+    graphene_matrix_scale (&transformation->model_matrix,
+        transformation->xscale, transformation->yscale, 1.0f);
+
+    /* Rotation */
+    graphene_matrix_rotate (&transformation->model_matrix,
+        transformation->xrotation, graphene_vec3_x_axis ());
+    graphene_matrix_rotate (&transformation->model_matrix,
+        transformation->yrotation, graphene_vec3_y_axis ());
+    graphene_matrix_rotate (&transformation->model_matrix,
+        transformation->zrotation, graphene_vec3_z_axis ());
+
+    /* Translate back from pivot origin */
+    graphene_point3d_scale (&pivot_vector, -1.0, &negative_pivot_vector);
+    graphene_matrix_translate (&transformation->model_matrix,
+        &negative_pivot_vector);
+
+    /* Translation */
+    graphene_matrix_translate (&transformation->model_matrix,
+        &translation_vector);
+
+    if (transformation->ortho) {
+      graphene_matrix_init_ortho (&transformation->projection_matrix,
+          -transformation->aspect, transformation->aspect,
+          -1, 1, transformation->znear, transformation->zfar);
+    } else {
+      graphene_matrix_init_perspective (&transformation->projection_matrix,
+          transformation->fov,
+          transformation->aspect, transformation->znear, transformation->zfar);
+    }
+
+    graphene_matrix_init_look_at (&transformation->view_matrix, &eye, &center,
+        &up);
+
+    current_passthrough =
+        gst_base_transform_is_passthrough (GST_BASE_TRANSFORM (transformation));
+    passthrough = transformation->xtranslation == 0.
+        && transformation->ytranslation == 0.
+        && transformation->ztranslation == 0. && transformation->xrotation == 0.
+        && transformation->yrotation == 0. && transformation->zrotation == 0.
+        && transformation->xscale == 1. && transformation->yscale == 1.
+        && gst_video_info_is_equal (&filter->in_info, &filter->out_info);
+    gst_base_transform_set_passthrough (GST_BASE_TRANSFORM (transformation),
+        passthrough);
+    if (current_passthrough != passthrough) {
+      gst_base_transform_reconfigure_src (GST_BASE_TRANSFORM (transformation));
+    }
   }
 
-  graphene_matrix_init_look_at (&view_matrix, &eye, &center, &up);
-
-  graphene_matrix_multiply (&view_matrix, &projection_matrix, &vp_matrix);
-  graphene_matrix_multiply (&model_matrix, &vp_matrix,
-      &transformation->mvp_matrix);
+  graphene_matrix_multiply (&transformation->model_matrix,
+      &transformation->view_matrix, &modelview_matrix);
+  graphene_matrix_multiply (&modelview_matrix,
+      &transformation->projection_matrix, &transformation->mvp_matrix);
 }
 
 static void
@@ -366,11 +402,6 @@
     case PROP_PIVOT_Z:
       filter->zpivot = g_value_get_float (value);
       break;
-    case PROP_MVP:
-      if (g_value_get_boxed (value) != NULL)
-        filter->mvp_matrix = *((graphene_matrix_t *) g_value_get_boxed (value));
-      return;
-      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -451,6 +482,152 @@
 }
 
 static void
+_find_plane_normal (const graphene_point3d_t * A, const graphene_point3d_t * B,
+    const graphene_point3d_t * C, graphene_vec3_t * plane_normal)
+{
+  graphene_vec3_t U, V, A_v, B_v, C_v;
+
+  graphene_point3d_to_vec3 (A, &A_v);
+  graphene_point3d_to_vec3 (B, &B_v);
+  graphene_point3d_to_vec3 (C, &C_v);
+
+  graphene_vec3_subtract (&B_v, &A_v, &U);
+  graphene_vec3_subtract (&C_v, &A_v, &V);
+
+  graphene_vec3_cross (&U, &V, plane_normal);
+  graphene_vec3_normalize (plane_normal, plane_normal);
+}
+
+static void
+_find_model_coords (GstGLTransformation * transformation,
+    const graphene_point3d_t * screen_coords, graphene_point3d_t * res)
+{
+  graphene_matrix_t modelview, inverse_proj, inverse_modelview;
+  graphene_vec4_t v1, v2;
+  graphene_point3d_t p1;
+  gfloat w;
+
+  graphene_vec4_init (&v1, screen_coords->x, screen_coords->y, screen_coords->z,
+      1.);
+  graphene_matrix_inverse (&transformation->projection_matrix, &inverse_proj);
+  graphene_matrix_transform_vec4 (&inverse_proj, &v1, &v2);
+
+  /* perspective division */
+  w = graphene_vec4_get_w (&v2);
+  p1.x = graphene_vec4_get_x (&v2) / w;
+  p1.y = graphene_vec4_get_y (&v2) / w;
+  p1.z = graphene_vec4_get_z (&v2) / w;
+
+  graphene_matrix_multiply (&transformation->model_matrix,
+      &transformation->view_matrix, &modelview);
+  graphene_matrix_inverse (&modelview, &inverse_modelview);
+  graphene_matrix_transform_point3d (&inverse_modelview, &p1, res);
+}
+
+static gboolean
+gst_gl_transformation_src_event (GstBaseTransform * trans, GstEvent * event)
+{
+  GstGLTransformation *transformation = GST_GL_TRANSFORMATION (trans);
+  GstGLFilter *filter = GST_GL_FILTER (trans);
+  gdouble new_x, new_y, x, y;
+  GstStructure *structure;
+  gboolean ret;
+
+  GST_DEBUG_OBJECT (trans, "handling %s event", GST_EVENT_TYPE_NAME (event));
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_NAVIGATION:
+      event =
+          GST_EVENT (gst_mini_object_make_writable (GST_MINI_OBJECT (event)));
+
+      structure = (GstStructure *) gst_event_get_structure (event);
+      if (gst_structure_get_double (structure, "pointer_x", &x) &&
+          gst_structure_get_double (structure, "pointer_y", &y)) {
+        gfloat w = (gfloat) GST_VIDEO_INFO_WIDTH (&filter->in_info);
+        gfloat h = (gfloat) GST_VIDEO_INFO_HEIGHT (&filter->in_info);
+        graphene_point3d_t screen_point_near, screen_point_far;
+        graphene_point3d_t model_coord_near, model_coord_far;
+        graphene_point3d_t bottom_left, bottom_right, top_left, top_right;
+        graphene_point3d_t result;
+        graphene_vec3_t plane_normal;
+        graphene_plane_t video_plane;
+        gfloat d;
+
+        GST_DEBUG_OBJECT (trans, "converting %f,%f", x, y);
+
+        graphene_point3d_init (&top_left, -1., 1., 0.);
+        graphene_point3d_init (&top_right, 1., 1., 0.);
+        graphene_point3d_init (&bottom_left, -1., -1., 0.);
+        graphene_point3d_init (&bottom_right, 1., -1., 0.);
+        /* to NDC */
+        graphene_point3d_init (&screen_point_near, 2. * x / w - 1.,
+            2. * y / h - 1., -1.);
+        graphene_point3d_init (&screen_point_far, 2. * x / w - 1.,
+            2. * y / h - 1., 1.);
+
+        _find_plane_normal (&bottom_left, &top_left, &top_right, &plane_normal);
+        graphene_plane_init_from_point (&video_plane, &plane_normal, &top_left);
+        d = graphene_plane_get_constant (&video_plane);
+
+        /* get the closest and furthest points in the viewing area for the
+         * specified screen coordinate in order to construct a ray */
+        _find_model_coords (transformation, &screen_point_near,
+            &model_coord_near);
+        _find_model_coords (transformation, &screen_point_far,
+            &model_coord_far);
+
+        {
+          graphene_vec3_t model_coord_near_vec3, model_coord_far_vec3;
+          graphene_vec3_t tmp, intersection, coord_dir;
+          gfloat num, denom, t;
+
+          /* get the direction of the ray */
+          graphene_point3d_to_vec3 (&model_coord_near, &model_coord_near_vec3);
+          graphene_point3d_to_vec3 (&model_coord_far, &model_coord_far_vec3);
+          graphene_vec3_subtract (&model_coord_near_vec3, &model_coord_far_vec3,
+              &coord_dir);
+
+          /* Intersect the ray with the video plane to find the distance, t:
+           * Ray: P = P0 + t Pdir
+           * Plane: P dot N + d = 0
+           *
+           * Substituting for P and rearranging gives:
+           *
+           * t = (P0 dot N + d) / (Pdir dot N) */
+          denom = graphene_vec3_dot (&coord_dir, &plane_normal);
+          num = graphene_vec3_dot (&model_coord_near_vec3, &plane_normal);
+          t = -(num + d) / denom;
+
+          /* video coord = P0 + t Pdir */
+          graphene_vec3_scale (&coord_dir, t, &tmp);
+          graphene_vec3_add (&tmp, &model_coord_near_vec3, &intersection);
+          graphene_point3d_init_from_vec3 (&result, &intersection);
+        }
+
+        new_x = (result.x / transformation->aspect + 1.) * w / 2;
+        new_y = (result.y + 1.) * h / 2;
+
+        if (new_x < 0. || new_x > w || new_y < 0 || new_y > h) {
+          /* coords off video surface */
+          gst_event_unref (event);
+          return TRUE;
+        }
+
+        GST_DEBUG_OBJECT (trans, "to %fx%f", new_x, new_y);
+        gst_structure_set (structure, "pointer_x", G_TYPE_DOUBLE, new_x,
+            "pointer_y", G_TYPE_DOUBLE, new_y, NULL);
+      }
+      break;
+    default:
+      break;
+  }
+
+  ret = GST_BASE_TRANSFORM_CLASS (parent_class)->src_event (trans, event);
+
+  return ret;
+}
+
+static void
 gst_gl_transformation_reset_gl (GstGLFilter * filter)
 {
   GstGLTransformation *transformation = GST_GL_TRANSFORMATION (filter);
diff --git a/ext/gl/gstgltransformation.h b/ext/gl/gstgltransformation.h
index 6b9051a..7d41c61 100644
--- a/ext/gl/gstgltransformation.h
+++ b/ext/gl/gstgltransformation.h
@@ -71,6 +71,9 @@
     gfloat zfar;
     gboolean ortho;
 
+    graphene_matrix_t model_matrix;
+    graphene_matrix_t view_matrix;
+    graphene_matrix_t projection_matrix;
     graphene_matrix_t mvp_matrix;
 
     gboolean caps_change;
diff --git a/ext/gl/gstglvideoflip.c b/ext/gl/gstglvideoflip.c
new file mode 100644
index 0000000..caae79e
--- /dev/null
+++ b/ext/gl/gstglvideoflip.c
@@ -0,0 +1,509 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:element-glvideo_flip
+ *
+ * Transforms video on the GPU.
+ *
+ * <refsect2>
+ * <title>Examples</title>
+ * |[
+ * gst-launch-1.0 videotestsrc ! glupload ! glvideoflip method=clockwise ! glimagesinkelement
+ * ]| This pipeline flips the test image 90 degrees clockwise.
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstglvideoflip.h"
+
+#define GST_CAT_DEFAULT gst_gl_video_flip_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+#define DEFAULT_METHOD GST_GL_VIDEO_FLIP_METHOD_IDENTITY
+
+enum
+{
+  PROP_0,
+  PROP_METHOD,
+};
+
+static GstStaticPadTemplate _sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-raw(" GST_CAPS_FEATURE_MEMORY_GL_MEMORY "), "
+        "format = (string) RGBA, "
+        "width = " GST_VIDEO_SIZE_RANGE ", "
+        "height = " GST_VIDEO_SIZE_RANGE ", "
+        "framerate = " GST_VIDEO_FPS_RANGE ", "
+        "texture-target = (string) 2D"));
+
+static GstStaticPadTemplate _src_template = GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("video/x-raw(" GST_CAPS_FEATURE_MEMORY_GL_MEMORY "), "
+        "format = (string) RGBA, "
+        "width = " GST_VIDEO_SIZE_RANGE ", "
+        "height = " GST_VIDEO_SIZE_RANGE ", "
+        "framerate = " GST_VIDEO_FPS_RANGE ", "
+        "texture-target = (string) 2D"));
+
+#define GST_TYPE_GL_VIDEO_FLIP_METHOD (gst_video_flip_method_get_type())
+static const GEnumValue video_flip_methods[] = {
+  {GST_GL_VIDEO_FLIP_METHOD_IDENTITY, "Identity (no rotation)", "none"},
+  {GST_GL_VIDEO_FLIP_METHOD_90R, "Rotate clockwise 90 degrees", "clockwise"},
+  {GST_GL_VIDEO_FLIP_METHOD_180, "Rotate 180 degrees", "rotate-180"},
+  {GST_GL_VIDEO_FLIP_METHOD_90L, "Rotate counter-clockwise 90 degrees",
+      "counterclockwise"},
+  {GST_GL_VIDEO_FLIP_METHOD_FLIP_HORIZ, "Flip horizontally", "horizontal-flip"},
+  {GST_GL_VIDEO_FLIP_METHOD_FLIP_VERT, "Flip vertically", "vertical-flip"},
+  {GST_GL_VIDEO_FLIP_METHOD_FLIP_UL_LR,
+      "Flip across upper left/lower right diagonal", "upper-left-diagonal"},
+  {GST_GL_VIDEO_FLIP_METHOD_FLIP_UR_LL,
+      "Flip across upper right/lower left diagonal", "upper-right-diagonal"},
+  {GST_GL_VIDEO_FLIP_METHOD_AUTO,
+      "Select flip method based on image-orientation tag", "automatic"},
+  {0, NULL, NULL},
+};
+
+static GType
+gst_video_flip_method_get_type (void)
+{
+  static GType video_flip_method_type = 0;
+
+  if (!video_flip_method_type) {
+    video_flip_method_type = g_enum_register_static ("GstGLVideoFlipMethod",
+        video_flip_methods);
+  }
+  return video_flip_method_type;
+}
+
+#define gst_gl_video_flip_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstGLVideoFlip, gst_gl_video_flip,
+    GST_TYPE_BIN, GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT,
+        "glvideoflip", 0, "glvideoflip element"););
+
+static void gst_gl_video_flip_finalize (GObject * object);
+static void gst_gl_video_flip_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_gl_video_flip_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+
+static GstPadProbeReturn _input_sink_probe (GstPad * pad,
+    GstPadProbeInfo * info, gpointer user_data);
+static GstPadProbeReturn _trans_src_probe (GstPad * pad, GstPadProbeInfo * info,
+    gpointer user_data);
+
+static void
+gst_gl_video_flip_class_init (GstGLVideoFlipClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *element_class;
+
+  gobject_class = (GObjectClass *) klass;
+  element_class = GST_ELEMENT_CLASS (klass);
+
+  gobject_class->finalize = gst_gl_video_flip_finalize;
+  gobject_class->set_property = gst_gl_video_flip_set_property;
+  gobject_class->get_property = gst_gl_video_flip_get_property;
+
+  g_object_class_install_property (gobject_class, PROP_METHOD,
+      g_param_spec_enum ("method", "method", "method",
+          GST_TYPE_GL_VIDEO_FLIP_METHOD, DEFAULT_METHOD,
+          GST_PARAM_CONTROLLABLE | G_PARAM_READWRITE | G_PARAM_CONSTRUCT |
+          G_PARAM_STATIC_STRINGS));
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&_src_template));
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&_sink_template));
+
+  gst_element_class_set_metadata (element_class, "OpenGL video flip filter",
+      "Filter/Effect/Video", "Flip video on the GPU",
+      "Matthew Waters <matthew@centricular.com>");
+}
+
+static void
+gst_gl_video_flip_init (GstGLVideoFlip * flip)
+{
+  gboolean res = TRUE;
+  GstPad *pad;
+
+  flip->aspect = 1.0;
+
+  flip->input_capsfilter = gst_element_factory_make ("capsfilter", NULL);
+  res &= gst_bin_add (GST_BIN (flip), flip->input_capsfilter);
+
+  flip->transformation = gst_element_factory_make ("gltransformation", NULL);
+  g_object_set (flip->transformation, "ortho", TRUE, NULL);
+  res &= gst_bin_add (GST_BIN (flip), flip->transformation);
+
+  flip->output_capsfilter = gst_element_factory_make ("capsfilter", NULL);
+  res &= gst_bin_add (GST_BIN (flip), flip->output_capsfilter);
+
+  res &=
+      gst_element_link_pads (flip->input_capsfilter, "src",
+      flip->transformation, "sink");
+  res &=
+      gst_element_link_pads (flip->transformation, "src",
+      flip->output_capsfilter, "sink");
+
+  pad = gst_element_get_static_pad (flip->input_capsfilter, "sink");
+  if (!pad) {
+    res = FALSE;
+  } else {
+    GST_DEBUG_OBJECT (flip, "setting target sink pad %" GST_PTR_FORMAT, pad);
+    flip->sinkpad = gst_ghost_pad_new ("sink", pad);
+    flip->sink_probe = gst_pad_add_probe (flip->sinkpad,
+        GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM |
+        GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM,
+        (GstPadProbeCallback) _input_sink_probe, flip, NULL);
+    gst_element_add_pad (GST_ELEMENT_CAST (flip), flip->sinkpad);
+    gst_object_unref (pad);
+  }
+
+  pad = gst_element_get_static_pad (flip->transformation, "src");
+  flip->src_probe = gst_pad_add_probe (pad,
+      GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM,
+      (GstPadProbeCallback) _trans_src_probe, flip, NULL);
+  gst_object_unref (pad);
+
+  pad = gst_element_get_static_pad (flip->output_capsfilter, "src");
+  if (!pad) {
+    res = FALSE;
+  } else {
+    GST_DEBUG_OBJECT (flip, "setting target sink pad %" GST_PTR_FORMAT, pad);
+    flip->srcpad = gst_ghost_pad_new ("src", pad);
+    gst_element_add_pad (GST_ELEMENT_CAST (flip), flip->srcpad);
+    gst_object_unref (pad);
+  }
+
+  if (!res) {
+    GST_WARNING_OBJECT (flip, "Failed to add/connect the necessary machinery");
+  }
+}
+
+static void
+gst_gl_video_flip_finalize (GObject * object)
+{
+  GstGLVideoFlip *flip = GST_GL_VIDEO_FLIP (object);
+
+  gst_caps_replace (&flip->input_caps, NULL);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+/* Caps negotiation happens like this:
+ *
+ * 1. caps/accept-caps queries bypass the capsfilters on either side of the
+ *    transformation element so the fixed caps don't get in the way.
+ * 2. Receiving a caps event on the sink pad will set fixed caps on either side
+ *    of the transformation element.
+ */
+static GstCaps *
+_transform_caps (GstGLVideoFlip * vf, GstPadDirection direction, GstCaps * caps)
+{
+  GstCaps *output = gst_caps_copy (caps);
+  gint i;
+
+  for (i = 0; i < gst_caps_get_size (output); i++) {
+    GstStructure *structure = gst_caps_get_structure (output, i);
+    gint width, height;
+    gint par_n, par_d;
+
+    if (gst_structure_get_int (structure, "width", &width) &&
+        gst_structure_get_int (structure, "height", &height)) {
+
+      switch (vf->active_method) {
+        case GST_GL_VIDEO_FLIP_METHOD_90R:
+        case GST_GL_VIDEO_FLIP_METHOD_90L:
+        case GST_GL_VIDEO_FLIP_METHOD_FLIP_UL_LR:
+        case GST_GL_VIDEO_FLIP_METHOD_FLIP_UR_LL:
+          gst_structure_set (structure, "width", G_TYPE_INT, height,
+              "height", G_TYPE_INT, width, NULL);
+          if (gst_structure_get_fraction (structure, "pixel-aspect-ratio",
+                  &par_n, &par_d)) {
+            if (par_n != 1 || par_d != 1) {
+              GValue val = { 0, };
+
+              g_value_init (&val, GST_TYPE_FRACTION);
+              gst_value_set_fraction (&val, par_d, par_n);
+              gst_structure_set_value (structure, "pixel-aspect-ratio", &val);
+              g_value_unset (&val);
+            }
+          }
+          break;
+        case GST_GL_VIDEO_FLIP_METHOD_IDENTITY:
+        case GST_GL_VIDEO_FLIP_METHOD_180:
+        case GST_GL_VIDEO_FLIP_METHOD_FLIP_HORIZ:
+        case GST_GL_VIDEO_FLIP_METHOD_FLIP_VERT:
+          break;
+        default:
+          g_assert_not_reached ();
+          break;
+      }
+    }
+  }
+
+  return output;
+}
+
+/* with object lock */
+static void
+_set_active_method (GstGLVideoFlip * vf, GstGLVideoFlipMethod method,
+    GstCaps * caps)
+{
+  gfloat rot_z = 0., scale_x = 1.0, scale_y = 1.0;
+  GstCaps *output_caps, *templ;
+  GstPad *srcpad;
+
+  switch (method) {
+    case GST_GL_VIDEO_FLIP_METHOD_IDENTITY:
+      break;
+    case GST_GL_VIDEO_FLIP_METHOD_90R:
+      scale_x *= vf->aspect;
+      scale_y *= 1. / vf->aspect;
+      rot_z = 90.;
+      break;
+    case GST_GL_VIDEO_FLIP_METHOD_180:
+      rot_z = 180.;
+      break;
+    case GST_GL_VIDEO_FLIP_METHOD_90L:
+      scale_x *= vf->aspect;
+      scale_y *= 1. / vf->aspect;
+      rot_z = 270.;
+      break;
+    case GST_GL_VIDEO_FLIP_METHOD_FLIP_HORIZ:
+      scale_x *= -1.;
+      break;
+    case GST_GL_VIDEO_FLIP_METHOD_FLIP_UR_LL:
+      scale_x *= -vf->aspect;
+      scale_y *= 1. / vf->aspect;
+      rot_z = 90.;
+      break;
+    case GST_GL_VIDEO_FLIP_METHOD_FLIP_VERT:
+      scale_x *= -1.;
+      rot_z = 180.;
+      break;
+    case GST_GL_VIDEO_FLIP_METHOD_FLIP_UL_LR:
+      scale_x *= -vf->aspect;
+      scale_y *= 1. / vf->aspect;
+      rot_z = 270.;
+      break;
+    default:
+      break;
+  }
+  vf->active_method = method;
+
+  output_caps = _transform_caps (vf, GST_PAD_SINK, caps);
+  gst_caps_replace (&vf->input_caps, caps);
+
+  srcpad = gst_element_get_static_pad (vf->transformation, "src");
+  templ = gst_pad_get_pad_template_caps (srcpad);
+  gst_object_unref (srcpad);
+
+  gst_caps_append (output_caps, gst_caps_ref (templ));
+  GST_OBJECT_UNLOCK (vf);
+
+  g_object_set (vf->input_capsfilter, "caps", gst_caps_ref (caps), NULL);
+  g_object_set (vf->output_capsfilter, "caps", output_caps, NULL);
+  g_object_set (vf->transformation, "rotation-z", rot_z, "scale-x", scale_x,
+      "scale-y", scale_y, NULL);
+  GST_OBJECT_LOCK (vf);
+}
+
+static void
+gst_gl_video_flip_set_method (GstGLVideoFlip * vf, GstGLVideoFlipMethod method,
+    gboolean from_tag)
+{
+  GST_OBJECT_LOCK (vf);
+  /* Store updated method */
+  if (from_tag)
+    vf->tag_method = method;
+  else
+    vf->method = method;
+
+  /* Get the new method */
+  if (vf->method == GST_GL_VIDEO_FLIP_METHOD_AUTO)
+    method = vf->tag_method;
+  else
+    method = vf->method;
+
+  if (vf->input_caps)
+    _set_active_method (vf, method, vf->input_caps);
+  else {
+    /* just store the configured method here. The actual transform configuration
+     * will be done once caps are configured. See caps handling in
+     * _input_sink_probe. */
+    vf->active_method = method;
+  }
+
+  GST_OBJECT_UNLOCK (vf);
+}
+
+static void
+gst_gl_video_flip_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstGLVideoFlip *vf = GST_GL_VIDEO_FLIP (object);
+
+  switch (prop_id) {
+    case PROP_METHOD:
+      gst_gl_video_flip_set_method (vf, g_value_get_enum (value), FALSE);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_gl_video_flip_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstGLVideoFlip *vf = GST_GL_VIDEO_FLIP (object);
+
+  switch (prop_id) {
+    case PROP_METHOD:
+      g_value_set_enum (value, vf->method);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static GstPadProbeReturn
+_input_sink_probe (GstPad * pad, GstPadProbeInfo * info, gpointer user_data)
+{
+  GstGLVideoFlip *vf = GST_GL_VIDEO_FLIP (user_data);
+
+  if (GST_PAD_PROBE_INFO_TYPE (info) & GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) {
+    GstEvent *event = GST_PAD_PROBE_INFO_EVENT (info);
+
+    switch (GST_EVENT_TYPE (event)) {
+      case GST_EVENT_TAG:{
+        GstTagList *taglist;
+        gchar *orientation;
+
+        gst_event_parse_tag (event, &taglist);
+
+        if (gst_tag_list_get_string (taglist, "image-orientation",
+                &orientation)) {
+          if (!g_strcmp0 ("rotate-0", orientation))
+            gst_gl_video_flip_set_method (vf, GST_GL_VIDEO_FLIP_METHOD_IDENTITY,
+                TRUE);
+          else if (!g_strcmp0 ("rotate-90", orientation))
+            gst_gl_video_flip_set_method (vf, GST_GL_VIDEO_FLIP_METHOD_90R,
+                TRUE);
+          else if (!g_strcmp0 ("rotate-180", orientation))
+            gst_gl_video_flip_set_method (vf, GST_GL_VIDEO_FLIP_METHOD_180,
+                TRUE);
+          else if (!g_strcmp0 ("rotate-270", orientation))
+            gst_gl_video_flip_set_method (vf, GST_GL_VIDEO_FLIP_METHOD_90L,
+                TRUE);
+          else if (!g_strcmp0 ("flip-rotate-0", orientation))
+            gst_gl_video_flip_set_method (vf,
+                GST_GL_VIDEO_FLIP_METHOD_FLIP_HORIZ, TRUE);
+          else if (!g_strcmp0 ("flip-rotate-90", orientation))
+            gst_gl_video_flip_set_method (vf,
+                GST_GL_VIDEO_FLIP_METHOD_FLIP_UR_LL, TRUE);
+          else if (!g_strcmp0 ("flip-rotate-180", orientation))
+            gst_gl_video_flip_set_method (vf,
+                GST_GL_VIDEO_FLIP_METHOD_FLIP_VERT, TRUE);
+          else if (!g_strcmp0 ("flip-rotate-270", orientation))
+            gst_gl_video_flip_set_method (vf,
+                GST_GL_VIDEO_FLIP_METHOD_FLIP_UL_LR, TRUE);
+
+          g_free (orientation);
+        }
+        break;
+      }
+      case GST_EVENT_CAPS:{
+        GstCaps *caps;
+        GstVideoInfo v_info;
+
+        gst_event_parse_caps (event, &caps);
+        GST_OBJECT_LOCK (vf);
+        if (gst_video_info_from_caps (&v_info, caps))
+          vf->aspect =
+              (gfloat) GST_VIDEO_INFO_WIDTH (&v_info) /
+              (gfloat) GST_VIDEO_INFO_HEIGHT (&v_info);
+        else
+          vf->aspect = 1.0;
+        _set_active_method (vf, vf->active_method, caps);
+        GST_OBJECT_UNLOCK (vf);
+        break;
+      }
+      default:
+        break;
+    }
+  } else if (GST_PAD_PROBE_INFO_TYPE (info) &
+      GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM) {
+    GstQuery *query = GST_PAD_PROBE_INFO_QUERY (info);
+
+    switch (GST_QUERY_TYPE (query)) {
+        /* bypass the capsfilter */
+      case GST_QUERY_CAPS:
+      case GST_QUERY_ACCEPT_CAPS:{
+        GstPad *pad = gst_element_get_static_pad (vf->transformation, "sink");
+        if (gst_pad_query (pad, query)) {
+          gst_object_unref (pad);
+          return GST_PAD_PROBE_HANDLED;
+        } else {
+          gst_object_unref (pad);
+          return GST_PAD_PROBE_DROP;
+        }
+      }
+      default:
+        break;
+    }
+  }
+
+  return GST_PAD_PROBE_OK;
+}
+
+static GstPadProbeReturn
+_trans_src_probe (GstPad * pad, GstPadProbeInfo * info, gpointer user_data)
+{
+  GstGLVideoFlip *vf = GST_GL_VIDEO_FLIP (user_data);
+
+  if (GST_PAD_PROBE_INFO_TYPE (info) & GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM) {
+    GstQuery *query = GST_PAD_PROBE_INFO_QUERY (info);
+
+    switch (GST_QUERY_TYPE (query)) {
+        /* bypass the capsfilter */
+      case GST_QUERY_CAPS:
+      case GST_QUERY_ACCEPT_CAPS:{
+        if (gst_pad_peer_query (vf->srcpad, query))
+          return GST_PAD_PROBE_HANDLED;
+        else
+          return GST_PAD_PROBE_DROP;
+      }
+      default:
+        break;
+    }
+  }
+
+  return GST_PAD_PROBE_OK;
+}
diff --git a/ext/gl/gstglvideoflip.h b/ext/gl/gstglvideoflip.h
new file mode 100644
index 0000000..3b8e81b
--- /dev/null
+++ b/ext/gl/gstglvideoflip.h
@@ -0,0 +1,97 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _GST_GL_VIDEO_FLIP_H_
+#define _GST_GL_VIDEO_FLIP_H_
+
+#include <gst/gl/gl.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_GL_VIDEO_FLIP            (gst_gl_video_flip_get_type())
+#define GST_GL_VIDEO_FLIP(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_VIDEO_FLIP,GstGLVideoFlip))
+#define GST_IS_GL_VIDEO_FLIP(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GL_VIDEO_FLIP))
+#define GST_GL_VIDEO_FLIP_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_GL_VIDEO_FLIP,GstGLVideoFlipClass))
+#define GST_IS_GL_VIDEO_FLIP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_GL_VIDEO_FLIP))
+#define GST_GL_VIDEO_FLIP_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_GL_VIDEO_FLIP,GstGLVideoFlipClass))
+
+/**
+ * GstVideoFlipMethod:
+ * @GST_GL_VIDEO_FLIP_METHOD_IDENTITY: Identity (no rotation)
+ * @GST_GL_VIDEO_FLIP_METHOD_90R: Rotate clockwise 90 degrees
+ * @GST_GL_VIDEO_FLIP_METHOD_180: Rotate 180 degrees
+ * @GST_GL_VIDEO_FLIP_METHOD_90L: Rotate counter-clockwise 90 degrees
+ * @GST_GL_VIDEO_FLIP_METHOD_FLIP_HORIZ: Flip horizontally
+ * @GST_GL_VIDEO_FLIP_METHOD_FLIP_VERT: Flip vertically
+ * @GST_GL_VIDEO_FLIP_METHOD_FLIP_UL_LR: Flip across upper left/lower right diagonal
+ * @GST_GL_VIDEO_FLIP_METHOD_FLIP_UR_LL: Flip across upper right/lower left diagonal
+ * @GST_GL_VIDEO_FLIP_METHOD_AUTO: Select flip method based on image-orientation tag
+ *
+ * The different flip methods.
+ */
+typedef enum {
+  GST_GL_VIDEO_FLIP_METHOD_IDENTITY,
+  GST_GL_VIDEO_FLIP_METHOD_90R,
+  GST_GL_VIDEO_FLIP_METHOD_180,
+  GST_GL_VIDEO_FLIP_METHOD_90L,
+  GST_GL_VIDEO_FLIP_METHOD_FLIP_HORIZ,
+  GST_GL_VIDEO_FLIP_METHOD_FLIP_VERT,
+  GST_GL_VIDEO_FLIP_METHOD_FLIP_UL_LR,
+  GST_GL_VIDEO_FLIP_METHOD_FLIP_UR_LL,
+  GST_GL_VIDEO_FLIP_METHOD_AUTO,
+} GstGLVideoFlipMethod;
+
+typedef struct _GstGLVideoFlip GstGLVideoFlip;
+typedef struct _GstGLVideoFlipClass GstGLVideoFlipClass;
+
+struct _GstGLVideoFlip
+{
+  GstBin        bin;
+
+  GstPad       *srcpad;
+  GstPad       *sinkpad;
+
+  GstElement   *input_capsfilter;
+  GstElement   *transformation;
+  GstElement   *output_capsfilter;
+
+  gulong        sink_probe;
+  gulong        src_probe;
+
+  GstCaps      *input_caps;
+
+  /* properties */
+  GstGLVideoFlipMethod method;
+  GstGLVideoFlipMethod tag_method;
+  GstGLVideoFlipMethod active_method;
+
+  gfloat aspect;
+};
+
+struct _GstGLVideoFlipClass
+{
+  GstBinClass filter_class;
+};
+
+GType gst_gl_video_flip_get_type (void);
+
+G_END_DECLS
+
+#endif /* _GST_GL_VIDEO_FLIP_H_ */
diff --git a/ext/gl/gstglvideomixer.c b/ext/gl/gstglvideomixer.c
index 9376793..e48151b 100644
--- a/ext/gl/gstglvideomixer.c
+++ b/ext/gl/gstglvideomixer.c
@@ -71,151 +71,72 @@
   return mixer_background_type;
 }
 
-typedef struct _GstGLMixerControlBindingProxy GstGLMixerControlBindingProxy;
-typedef struct _GstGLMixerControlBindingProxyClass
-    GstGLMixerControlBindingProxyClass;
-
-struct _GstGLMixerControlBindingProxy
+#define GST_TYPE_GL_VIDEO_MIXER_BLEND_EQUATION (gst_gl_video_mixer_blend_equation_get_type())
+static GType
+gst_gl_video_mixer_blend_equation_get_type (void)
 {
-  GstControlBinding parent;
+  static GType mixer_blend_equation_type = 0;
 
-  GstObject *ref_object;
-  const gchar *property_name;
-};
+  static const GEnumValue mixer_blend_equations[] = {
+    {GST_GL_VIDEO_MIXER_BLEND_EQUATION_ADD, "Add", "add"},
+    {GST_GL_VIDEO_MIXER_BLEND_EQUATION_SUBTRACT, "Subtract", "subtract"},
+    {GST_GL_VIDEO_MIXER_BLEND_EQUATION_REVERSE_SUBTRACT, "Reverse Subtract",
+        "reverse-subtract"},
+    {0, NULL, NULL},
+  };
 
-struct _GstGLMixerControlBindingProxyClass
-{
-  GstControlBindingClass parent_class;
-};
-
-GType gst_gl_mixer_control_binding_proxy_get_type (void);
-#define GST_TYPE_GL_MIXER_CONTROL_BINDING \
-  (gst_gl_mixer_control_binding_proxy_get_type())
-
-G_DEFINE_TYPE (GstGLMixerControlBindingProxy,
-    gst_gl_mixer_control_binding_proxy, GST_TYPE_CONTROL_BINDING);
-
-static void
-gst_gl_mixer_control_binding_proxy_init (GstGLMixerControlBindingProxy * self)
-{
-}
-
-static gboolean
-gst_gl_mixer_control_binding_proxy_sync_values (GstControlBinding * binding,
-    GstObject * object, GstClockTime timestamp, GstClockTime last_sync)
-{
-  GstGLMixerControlBindingProxy *self = (GstGLMixerControlBindingProxy *)
-      binding;
-  GstControlBinding *ref_binding;
-  gboolean ret = TRUE;
-
-  ref_binding = gst_object_get_control_binding (self->ref_object,
-      self->property_name);
-
-  if (ref_binding) {
-    ret = gst_control_binding_sync_values (ref_binding, self->ref_object,
-        timestamp, last_sync);
-    gst_object_unref (ref_binding);
+  if (!mixer_blend_equation_type) {
+    mixer_blend_equation_type =
+        g_enum_register_static ("GstGLVideoMixerBlendEquation",
+        mixer_blend_equations);
   }
-
-  return ret;
+  return mixer_blend_equation_type;
 }
 
-static GValue *
-gst_gl_mixer_control_binding_proxy_get_value (GstControlBinding * binding,
-    GstClockTime timestamp)
+#define GST_TYPE_GL_VIDEO_MIXER_BLEND_FUNCTION (gst_gl_video_mixer_blend_function_get_type())
+static GType
+gst_gl_video_mixer_blend_function_get_type (void)
 {
-  GstGLMixerControlBindingProxy *self = (GstGLMixerControlBindingProxy *)
-      binding;
-  GstControlBinding *ref_binding;
-  GValue *ret = NULL;
+  static GType mixer_blend_function_type = 0;
 
-  ref_binding = gst_object_get_control_binding (self->ref_object,
-      self->property_name);
+  static const GEnumValue mixer_blend_funcs[] = {
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ZERO, "Zero", "zero"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE, "One", "one"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_COLOR, "Source Color", "src-color"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_SRC_COLOR,
+        "One Minus Source Color", "one-minus-src-color"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_DST_COLOR, "Destination Color",
+        "dst-color"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_DST_COLOR,
+        "One Minus Destination Color", "one-minus-dst-color"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_ALPHA, "Source Alpha", "src-alpha"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_SRC_ALPHA,
+        "One Minus Source Alpha", "one-minus-src-alpha"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_DST_ALPHA, "Destination Alpha",
+        "dst-alpha"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_DST_ALPHA,
+        "One Minus Destination Alpha", "one-minus-dst-alpha"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_CONSTANT_COLOR, "Constant Color",
+        "constant-color"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_CONSTANT_COLOR,
+        "One Minus Constant Color", "one-minus-contant-color"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_CONSTANT_ALPHA, "Constant Alpha",
+        "constant-alpha"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_CONSTANT_COLOR,
+        "One Minus Constant Alpha", "one-minus-contant-alpha"},
+    {GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_ALPHA_SATURATE,
+        "Source Alpha Saturate", "src-alpha-saturate"},
+    {0, NULL, NULL},
+  };
 
-  if (ref_binding) {
-    ret = gst_control_binding_get_value (ref_binding, timestamp);
-    gst_object_unref (ref_binding);
+  if (!mixer_blend_function_type) {
+    mixer_blend_function_type =
+        g_enum_register_static ("GstGLVideoMixerBlendFunction",
+        mixer_blend_funcs);
   }
-
-  return ret;
+  return mixer_blend_function_type;
 }
 
-static gboolean
-gst_gl_mixer_control_binding_proxy_get_value_array (GstControlBinding * binding,
-    GstClockTime timestamp, GstClockTime interval, guint n_values,
-    gpointer values)
-{
-  GstGLMixerControlBindingProxy *self = (GstGLMixerControlBindingProxy *)
-      binding;
-  GstControlBinding *ref_binding;
-  gboolean ret = FALSE;
-
-  ref_binding = gst_object_get_control_binding (self->ref_object,
-      self->property_name);
-
-  if (ref_binding) {
-    ret = gst_control_binding_get_value_array (ref_binding, timestamp,
-        interval, n_values, values);
-    gst_object_unref (ref_binding);
-  }
-
-  return ret;
-}
-
-static gboolean
-gst_gl_mixer_control_binding_proxy_get_g_value_array (GstControlBinding *
-    binding, GstClockTime timestamp, GstClockTime interval, guint n_values,
-    GValue * values)
-{
-  GstGLMixerControlBindingProxy *self = (GstGLMixerControlBindingProxy *)
-      binding;
-  GstControlBinding *ref_binding;
-  gboolean ret = FALSE;
-
-  ref_binding = gst_object_get_control_binding (self->ref_object,
-      self->property_name);
-
-  if (ref_binding) {
-    ret = gst_control_binding_get_g_value_array (ref_binding, timestamp,
-        interval, n_values, values);
-    gst_object_unref (ref_binding);
-  }
-
-  return ret;
-}
-
-
-static void
-    gst_gl_mixer_control_binding_proxy_class_init
-    (GstGLMixerControlBindingProxyClass * klass)
-{
-  GstControlBindingClass *cb_class = GST_CONTROL_BINDING_CLASS (klass);
-
-  cb_class->sync_values = gst_gl_mixer_control_binding_proxy_sync_values;
-  cb_class->get_value = gst_gl_mixer_control_binding_proxy_get_value;
-  cb_class->get_value_array =
-      gst_gl_mixer_control_binding_proxy_get_value_array;
-  cb_class->get_g_value_array =
-      gst_gl_mixer_control_binding_proxy_get_g_value_array;
-}
-
-static GstControlBinding *
-gst_gl_mixer_control_binding_proxy_new (GstObject * object,
-    const gchar * property_name, GstObject * ref_object,
-    const gchar * ref_property_name)
-{
-  GstGLMixerControlBindingProxy *self =
-      g_object_new (GST_TYPE_GL_MIXER_CONTROL_BINDING, "object", object,
-      "name", property_name, NULL);
-
-  self->ref_object = ref_object;
-  self->property_name = ref_property_name;
-
-  return (GstControlBinding *) self;
-}
-
-
 #define DEFAULT_PAD_XPOS   0
 #define DEFAULT_PAD_YPOS   0
 #define DEFAULT_PAD_WIDTH  0
@@ -223,6 +144,12 @@
 #define DEFAULT_PAD_ALPHA  1.0
 #define DEFAULT_PAD_ZORDER 0
 #define DEFAULT_PAD_IGNORE_EOS FALSE
+#define DEFAULT_PAD_BLEND_EQUATION_RGB GST_GL_VIDEO_MIXER_BLEND_EQUATION_ADD
+#define DEFAULT_PAD_BLEND_EQUATION_ALPHA GST_GL_VIDEO_MIXER_BLEND_EQUATION_ADD
+#define DEFAULT_PAD_BLEND_FUNCTION_SRC_RGB GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_ALPHA
+#define DEFAULT_PAD_BLEND_FUNCTION_SRC_ALPHA GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_ALPHA
+#define DEFAULT_PAD_BLEND_FUNCTION_DST_RGB GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_SRC_ALPHA
+#define DEFAULT_PAD_BLEND_FUNCTION_DST_ALPHA GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_SRC_ALPHA
 
 enum
 {
@@ -232,6 +159,16 @@
   PROP_INPUT_WIDTH,
   PROP_INPUT_HEIGHT,
   PROP_INPUT_ALPHA,
+  PROP_INPUT_BLEND_EQUATION_RGB,
+  PROP_INPUT_BLEND_EQUATION_ALPHA,
+  PROP_INPUT_BLEND_FUNCTION_SRC_RGB,
+  PROP_INPUT_BLEND_FUNCTION_SRC_ALPHA,
+  PROP_INPUT_BLEND_FUNCTION_DST_RGB,
+  PROP_INPUT_BLEND_FUNCTION_DST_ALPHA,
+  PROP_INPUT_BLEND_FUNCTION_CONSTANT_COLOR_RED,
+  PROP_INPUT_BLEND_FUNCTION_CONSTANT_COLOR_GREEN,
+  PROP_INPUT_BLEND_FUNCTION_CONSTANT_COLOR_BLUE,
+  PROP_INPUT_BLEND_FUNCTION_CONSTANT_COLOR_ALPHA,
   PROP_INPUT_ZORDER,
   PROP_INPUT_IGNORE_EOS,
 };
@@ -299,6 +236,71 @@
       g_param_spec_double ("alpha", "Alpha", "Alpha of the picture", 0.0, 1.0,
           DEFAULT_PAD_ALPHA,
           G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_INPUT_BLEND_EQUATION_RGB,
+      g_param_spec_enum ("blend-equation-rgb", "Blend Equation RGB",
+          "Blend Equation for RGB",
+          GST_TYPE_GL_VIDEO_MIXER_BLEND_EQUATION,
+          DEFAULT_PAD_BLEND_EQUATION_RGB,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_EQUATION_ALPHA,
+      g_param_spec_enum ("blend-equation-alpha", "Blend Equation Alpha",
+          "Blend Equation for Alpha", GST_TYPE_GL_VIDEO_MIXER_BLEND_EQUATION,
+          DEFAULT_PAD_BLEND_EQUATION_ALPHA,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_FUNCTION_SRC_RGB,
+      g_param_spec_enum ("blend-function-src-rgb", "Blend Function Source RGB",
+          "Blend Function for Source RGB",
+          GST_TYPE_GL_VIDEO_MIXER_BLEND_FUNCTION,
+          DEFAULT_PAD_BLEND_FUNCTION_SRC_RGB,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_FUNCTION_SRC_ALPHA,
+      g_param_spec_enum ("blend-function-src-alpha",
+          "Blend Function Source Alpha", "Blend Function for Source Alpha",
+          GST_TYPE_GL_VIDEO_MIXER_BLEND_FUNCTION,
+          DEFAULT_PAD_BLEND_FUNCTION_SRC_ALPHA,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_FUNCTION_DST_RGB,
+      g_param_spec_enum ("blend-function-dst-rgb",
+          "Blend Function Destination RGB",
+          "Blend Function for Destination RGB",
+          GST_TYPE_GL_VIDEO_MIXER_BLEND_FUNCTION,
+          DEFAULT_PAD_BLEND_FUNCTION_DST_RGB,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_FUNCTION_DST_ALPHA,
+      g_param_spec_enum ("blend-function-dst-alpha",
+          "Blend Function Destination Alpha",
+          "Blend Function for Destiniation Alpha",
+          GST_TYPE_GL_VIDEO_MIXER_BLEND_FUNCTION,
+          DEFAULT_PAD_BLEND_FUNCTION_DST_ALPHA,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_FUNCTION_CONSTANT_COLOR_RED,
+      g_param_spec_double ("blend-constant-color-red",
+          "Blend Constant Color Red", "Blend Constant Color Red", 0.0, 1.0, 0.0,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_FUNCTION_CONSTANT_COLOR_GREEN,
+      g_param_spec_double ("blend-constant-color-green",
+          "Blend Constant Color Green", "Blend Constant Color Green", 0.0, 1.0,
+          0.0,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_FUNCTION_CONSTANT_COLOR_BLUE,
+      g_param_spec_double ("blend-constant-color-blue",
+          "Blend Constant Color Green", "Blend Constant Color Green", 0.0, 1.0,
+          0.0,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_FUNCTION_CONSTANT_COLOR_ALPHA,
+      g_param_spec_double ("blend-constant-color-alpha",
+          "Blend Constant Color Alpha", "Blend Constant Color Alpha", 0.0, 1.0,
+          0.0,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
 }
 
 static void
@@ -328,25 +330,44 @@
       g_object_new (gst_gl_video_mixer_input_get_type (), "name",
       GST_OBJECT_NAME (mixer_pad), "direction", GST_PAD_DIRECTION (mixer_pad),
       NULL);
-  GstControlBinding *cb;
 
   if (!gst_ghost_pad_construct (GST_GHOST_PAD (input))) {
     gst_object_unref (input);
     return NULL;
   }
-#define ADD_PROXY_CONTROL_BINDING(prop)                                \
-  cb = gst_gl_mixer_control_binding_proxy_new (GST_OBJECT (mixer_pad), \
-      G_STRINGIFY (prop), GST_OBJECT (input), G_STRINGIFY (prop));     \
-  gst_object_add_control_binding (GST_OBJECT (mixer_pad), cb)
 
-  ADD_PROXY_CONTROL_BINDING (zorder);
-  ADD_PROXY_CONTROL_BINDING (xpos);
-  ADD_PROXY_CONTROL_BINDING (ypos);
-  ADD_PROXY_CONTROL_BINDING (width);
-  ADD_PROXY_CONTROL_BINDING (height);
-  ADD_PROXY_CONTROL_BINDING (alpha);
-
-#undef ADD_PROXY_CONTROL_BINDING
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "zorder");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "xpos");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "ypos");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "width");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "height");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "alpha");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "blend-equation-rgb");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "blend-equation-alpha");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "blend-function-src-rgb");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "blend-function-src-alpha");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "blend-function-dst-rgb");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "blend-function-dst-alpha");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "blend-constant-color-red");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "blend-constant-color-green");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "blend-constant-color-blue");
+  gst_gl_object_add_control_binding_proxy (GST_OBJECT (mixer_pad),
+      GST_OBJECT (input), "blend-constant-color-alpha");
 
   input->mixer_pad = mixer_pad;
 
@@ -439,13 +460,15 @@
 static void gst_gl_video_mixer_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
 
-static GstCaps *_update_caps (GstVideoAggregator * vagg, GstCaps * caps);
+static GstCaps *_update_caps (GstVideoAggregator * vagg, GstCaps * caps,
+    GstCaps * filter);
+static GstCaps *_fixate_caps (GstVideoAggregator * vagg, GstCaps * caps);
 static void gst_gl_video_mixer_reset (GstGLMixer * mixer);
 static gboolean gst_gl_video_mixer_init_shader (GstGLMixer * mixer,
     GstCaps * outcaps);
 
 static gboolean gst_gl_video_mixer_process_textures (GstGLMixer * mixer,
-    GPtrArray * in_frames, guint out_tex);
+    guint out_tex);
 static void gst_gl_video_mixer_callback (gpointer stuff);
 
 /* *INDENT-OFF* */
@@ -534,6 +557,17 @@
   gint width, height;
   gdouble alpha;
 
+  GstGLVideoMixerBlendEquation blend_equation_rgb;
+  GstGLVideoMixerBlendEquation blend_equation_alpha;
+  GstGLVideoMixerBlendFunction blend_function_src_rgb;
+  GstGLVideoMixerBlendFunction blend_function_src_alpha;
+  GstGLVideoMixerBlendFunction blend_function_dst_rgb;
+  GstGLVideoMixerBlendFunction blend_function_dst_alpha;
+  gdouble blend_constant_color_red;
+  gdouble blend_constant_color_green;
+  gdouble blend_constant_color_blue;
+  gdouble blend_constant_color_alpha;
+
   gboolean geometry_change;
   GLuint vertex_buffer;
 };
@@ -559,13 +593,29 @@
   PROP_PAD_YPOS,
   PROP_PAD_WIDTH,
   PROP_PAD_HEIGHT,
-  PROP_PAD_ALPHA
+  PROP_PAD_ALPHA,
+  PROP_PAD_BLEND_EQUATION_RGB,
+  PROP_PAD_BLEND_EQUATION_ALPHA,
+  PROP_PAD_BLEND_FUNCTION_SRC_RGB,
+  PROP_PAD_BLEND_FUNCTION_SRC_ALPHA,
+  PROP_PAD_BLEND_FUNCTION_DST_RGB,
+  PROP_PAD_BLEND_FUNCTION_DST_ALPHA,
+  PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_RED,
+  PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_GREEN,
+  PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_BLUE,
+  PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_ALPHA,
 };
 
 static void
 gst_gl_video_mixer_pad_init (GstGLVideoMixerPad * pad)
 {
-  pad->alpha = 1.0;
+  pad->alpha = DEFAULT_PAD_ALPHA;
+  pad->blend_equation_rgb = DEFAULT_PAD_BLEND_EQUATION_RGB;
+  pad->blend_equation_alpha = DEFAULT_PAD_BLEND_EQUATION_ALPHA;
+  pad->blend_function_src_rgb = DEFAULT_PAD_BLEND_FUNCTION_SRC_RGB;
+  pad->blend_function_src_alpha = DEFAULT_PAD_BLEND_FUNCTION_SRC_ALPHA;
+  pad->blend_function_dst_rgb = DEFAULT_PAD_BLEND_FUNCTION_DST_RGB;
+  pad->blend_function_dst_alpha = DEFAULT_PAD_BLEND_FUNCTION_DST_ALPHA;
 }
 
 static void
@@ -596,6 +646,71 @@
       g_param_spec_double ("alpha", "Alpha", "Alpha of the picture", 0.0, 1.0,
           DEFAULT_PAD_ALPHA,
           G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_INPUT_BLEND_EQUATION_RGB,
+      g_param_spec_enum ("blend-equation-rgb", "Blend Equation RGB",
+          "Blend Equation for RGB",
+          GST_TYPE_GL_VIDEO_MIXER_BLEND_EQUATION,
+          DEFAULT_PAD_BLEND_EQUATION_RGB,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_EQUATION_ALPHA,
+      g_param_spec_enum ("blend-equation-alpha", "Blend Equation Alpha",
+          "Blend Equation for Alpha", GST_TYPE_GL_VIDEO_MIXER_BLEND_EQUATION,
+          DEFAULT_PAD_BLEND_EQUATION_ALPHA,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_FUNCTION_SRC_RGB,
+      g_param_spec_enum ("blend-function-src-rgb", "Blend Function Source RGB",
+          "Blend Function for Source RGB",
+          GST_TYPE_GL_VIDEO_MIXER_BLEND_FUNCTION,
+          DEFAULT_PAD_BLEND_FUNCTION_SRC_RGB,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_FUNCTION_SRC_ALPHA,
+      g_param_spec_enum ("blend-function-src-alpha",
+          "Blend Function Source Alpha", "Blend Function for Source Alpha",
+          GST_TYPE_GL_VIDEO_MIXER_BLEND_FUNCTION,
+          DEFAULT_PAD_BLEND_FUNCTION_SRC_ALPHA,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_FUNCTION_DST_RGB,
+      g_param_spec_enum ("blend-function-dst-rgb",
+          "Blend Function Destination RGB",
+          "Blend Function for Destination RGB",
+          GST_TYPE_GL_VIDEO_MIXER_BLEND_FUNCTION,
+          DEFAULT_PAD_BLEND_FUNCTION_DST_RGB,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_INPUT_BLEND_FUNCTION_DST_ALPHA,
+      g_param_spec_enum ("blend-function-dst-alpha",
+          "Blend Function Destination Alpha",
+          "Blend Function for Destiniation Alpha",
+          GST_TYPE_GL_VIDEO_MIXER_BLEND_FUNCTION,
+          DEFAULT_PAD_BLEND_FUNCTION_DST_ALPHA,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_RED,
+      g_param_spec_double ("blend-constant-color-red",
+          "Blend Constant Color Red", "Blend Constant Color Red", 0.0, 1.0, 0.0,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_GREEN,
+      g_param_spec_double ("blend-constant-color-green",
+          "Blend Constant Color Green", "Blend Constant Color Green", 0.0, 1.0,
+          0.0,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_BLUE,
+      g_param_spec_double ("blend-constant-color-blue",
+          "Blend Constant Color Green", "Blend Constant Color Green", 0.0, 1.0,
+          0.0,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class,
+      PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_ALPHA,
+      g_param_spec_double ("blend-constant-color-alpha",
+          "Blend Constant Color Alpha", "Blend Constant Color Alpha", 0.0, 1.0,
+          0.0,
+          G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
 }
 
 static void
@@ -620,6 +735,36 @@
     case PROP_PAD_ALPHA:
       g_value_set_double (value, pad->alpha);
       break;
+    case PROP_PAD_BLEND_EQUATION_RGB:
+      g_value_set_enum (value, pad->blend_equation_rgb);
+      break;
+    case PROP_PAD_BLEND_EQUATION_ALPHA:
+      g_value_set_enum (value, pad->blend_equation_alpha);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_SRC_RGB:
+      g_value_set_enum (value, pad->blend_function_src_rgb);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_SRC_ALPHA:
+      g_value_set_enum (value, pad->blend_function_src_alpha);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_DST_RGB:
+      g_value_set_enum (value, pad->blend_function_dst_rgb);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_DST_ALPHA:
+      g_value_set_enum (value, pad->blend_function_dst_alpha);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_RED:
+      g_value_set_double (value, pad->blend_constant_color_red);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_GREEN:
+      g_value_set_double (value, pad->blend_constant_color_green);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_BLUE:
+      g_value_set_double (value, pad->blend_constant_color_blue);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_ALPHA:
+      g_value_set_double (value, pad->blend_constant_color_alpha);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -653,6 +798,36 @@
     case PROP_PAD_ALPHA:
       pad->alpha = g_value_get_double (value);
       break;
+    case PROP_PAD_BLEND_EQUATION_RGB:
+      pad->blend_equation_rgb = g_value_get_enum (value);
+      break;
+    case PROP_PAD_BLEND_EQUATION_ALPHA:
+      pad->blend_equation_alpha = g_value_get_enum (value);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_SRC_RGB:
+      pad->blend_function_src_rgb = g_value_get_enum (value);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_SRC_ALPHA:
+      pad->blend_function_src_alpha = g_value_get_enum (value);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_DST_RGB:
+      pad->blend_function_dst_rgb = g_value_get_enum (value);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_DST_ALPHA:
+      pad->blend_function_dst_alpha = g_value_get_enum (value);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_RED:
+      pad->blend_constant_color_red = g_value_get_double (value);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_GREEN:
+      pad->blend_constant_color_green = g_value_get_double (value);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_BLUE:
+      pad->blend_constant_color_blue = g_value_get_double (value);
+      break;
+    case PROP_PAD_BLEND_FUNCTION_CONSTANT_COLOR_ALPHA:
+      pad->blend_constant_color_alpha = g_value_get_double (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -662,6 +837,26 @@
 }
 
 static void
+_del_buffer (GstGLContext * context, GLuint * pBuffer)
+{
+  context->gl_vtable->DeleteBuffers (1, pBuffer);
+}
+
+static void
+gst_gl_video_mixer_release_pad (GstElement * element, GstPad * p)
+{
+  GstGLVideoMixerPad *pad = GST_GL_VIDEO_MIXER_PAD (p);
+  if (pad->vertex_buffer) {
+    GstGLBaseMixer *mix = GST_GL_BASE_MIXER (element);
+    gst_gl_context_thread_add (mix->context, (GstGLContextThreadFunc)
+        _del_buffer, &pad->vertex_buffer);
+    pad->vertex_buffer = 0;
+  }
+  GST_ELEMENT_CLASS (g_type_class_peek_parent (G_OBJECT_GET_CLASS (element)))
+      ->release_pad (element, p);
+}
+
+static void
 gst_gl_video_mixer_class_init (GstGLVideoMixerClass * klass)
 {
   GObjectClass *gobject_class;
@@ -671,6 +866,7 @@
 
   gobject_class = (GObjectClass *) klass;
   element_class = GST_ELEMENT_CLASS (klass);
+  element_class->release_pad = gst_gl_video_mixer_release_pad;
 
   gobject_class->set_property = gst_gl_video_mixer_set_property;
   gobject_class->get_property = gst_gl_video_mixer_get_property;
@@ -690,6 +886,7 @@
       gst_gl_video_mixer_process_textures;
 
   vagg_class->update_caps = _update_caps;
+  vagg_class->fixate_caps = _fixate_caps;
 
   agg_class->sinkpads_type = GST_TYPE_GL_VIDEO_MIXER_PAD;
 
@@ -702,7 +899,6 @@
 {
   video_mixer->background = DEFAULT_BACKGROUND;
   video_mixer->shader = NULL;
-  video_mixer->input_frames = NULL;
 }
 
 static void
@@ -739,9 +935,9 @@
 
 static void
 _mixer_pad_get_output_size (GstGLVideoMixer * mix,
-    GstGLVideoMixerPad * mix_pad, gint * width, gint * height)
+    GstGLVideoMixerPad * mix_pad, gint out_par_n, gint out_par_d, gint * width,
+    gint * height)
 {
-  GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (mix);
   GstVideoAggregatorPad *vagg_pad = GST_VIDEO_AGGREGATOR_PAD (mix_pad);
   gint pad_width, pad_height;
   guint dar_n, dar_d;
@@ -764,13 +960,10 @@
 
   gst_video_calculate_display_ratio (&dar_n, &dar_d, pad_width, pad_height,
       GST_VIDEO_INFO_PAR_N (&vagg_pad->info),
-      GST_VIDEO_INFO_PAR_D (&vagg_pad->info),
-      GST_VIDEO_INFO_PAR_N (&vagg->info), GST_VIDEO_INFO_PAR_D (&vagg->info)
-      );
+      GST_VIDEO_INFO_PAR_D (&vagg_pad->info), out_par_n, out_par_d);
   GST_LOG_OBJECT (mix_pad, "scaling %ux%u by %u/%u (%u/%u / %u/%u)", pad_width,
       pad_height, dar_n, dar_d, GST_VIDEO_INFO_PAR_N (&vagg_pad->info),
-      GST_VIDEO_INFO_PAR_D (&vagg_pad->info),
-      GST_VIDEO_INFO_PAR_N (&vagg->info), GST_VIDEO_INFO_PAR_D (&vagg->info));
+      GST_VIDEO_INFO_PAR_D (&vagg_pad->info), out_par_n, out_par_d);
 
   if (pad_height % dar_n == 0) {
     pad_width = gst_util_uint64_scale_int (pad_height, dar_n, dar_d);
@@ -787,17 +980,44 @@
 }
 
 static GstCaps *
-_update_caps (GstVideoAggregator * vagg, GstCaps * caps)
+_update_caps (GstVideoAggregator * vagg, GstCaps * caps, GstCaps * filter)
+{
+  GstCaps *ret;
+
+  ret =
+      GST_VIDEO_AGGREGATOR_CLASS (gst_gl_video_mixer_parent_class)->update_caps
+      (vagg, caps, NULL);
+
+  if (filter) {
+    GstCaps *tmp = gst_caps_intersect (ret, filter);
+    gst_caps_unref (ret);
+    ret = tmp;
+  }
+
+  return ret;
+}
+
+static GstCaps *
+_fixate_caps (GstVideoAggregator * vagg, GstCaps * caps)
 {
   GstGLVideoMixer *mix = GST_GL_VIDEO_MIXER (vagg);
-  GList *l;
-  gint best_width = -1, best_height = -1;
-  GstVideoInfo info;
+  gint best_width = 0, best_height = 0;
+  gint best_fps_n = 0, best_fps_d = 0;
+  gint par_n, par_d;
+  gdouble best_fps = 0.;
   GstCaps *ret = NULL;
-  int i;
+  GstStructure *s;
+  GList *l;
 
-  caps = gst_caps_make_writable (caps);
-  gst_video_info_from_caps (&info, caps);
+  ret = gst_caps_make_writable (caps);
+
+  /* we need this to calculate how large to make the output frame */
+  s = gst_caps_get_structure (ret, 0);
+  if (!gst_structure_has_field (s, "pixel-aspect-ratio")) {
+    gst_structure_set (s, "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, NULL);
+  }
+  gst_structure_fixate_field_nearest_fraction (s, "pixel-aspect-ratio", 1, 1);
+  gst_structure_get_fraction (s, "pixel-aspect-ratio", &par_n, &par_d);
 
   GST_OBJECT_LOCK (vagg);
   for (l = GST_ELEMENT (vagg)->sinkpads; l; l = l->next) {
@@ -805,8 +1025,12 @@
     GstGLVideoMixerPad *mixer_pad = GST_GL_VIDEO_MIXER_PAD (vaggpad);
     gint this_width, this_height;
     gint width, height;
+    gint fps_n, fps_d;
+    gdouble cur_fps;
 
-    _mixer_pad_get_output_size (mix, mixer_pad, &width, &height);
+    fps_n = GST_VIDEO_INFO_FPS_N (&vaggpad->info);
+    fps_d = GST_VIDEO_INFO_FPS_D (&vaggpad->info);
+    _mixer_pad_get_output_size (mix, mixer_pad, par_n, par_d, &width, &height);
 
     if (width == 0 || height == 0)
       continue;
@@ -818,20 +1042,33 @@
       best_width = this_width;
     if (best_height < this_height)
       best_height = this_height;
+
+    if (fps_d == 0)
+      cur_fps = 0.0;
+    else
+      gst_util_fraction_to_double (fps_n, fps_d, &cur_fps);
+
+    if (best_fps < cur_fps) {
+      best_fps = cur_fps;
+      best_fps_n = fps_n;
+      best_fps_d = fps_d;
+    }
   }
   GST_OBJECT_UNLOCK (vagg);
 
-  ret =
-      GST_VIDEO_AGGREGATOR_CLASS (gst_gl_video_mixer_parent_class)->update_caps
-      (vagg, caps);
-
-  for (i = 0; i < gst_caps_get_size (ret); i++) {
-    GstStructure *s = gst_caps_get_structure (ret, i);
-
-    gst_structure_set (s, "width", G_TYPE_INT, best_width, "height", G_TYPE_INT,
-        best_height, NULL);
+  if (best_fps_n <= 0 || best_fps_d <= 0 || best_fps == 0.0) {
+    best_fps_n = 25;
+    best_fps_d = 1;
+    best_fps = 25.0;
   }
 
+  s = gst_caps_get_structure (ret, 0);
+  gst_structure_fixate_field_nearest_int (s, "width", best_width);
+  gst_structure_fixate_field_nearest_int (s, "height", best_height);
+  gst_structure_fixate_field_nearest_fraction (s, "framerate", best_fps_n,
+      best_fps_d);
+  ret = gst_caps_fixate (ret);
+
   return ret;
 }
 
@@ -864,6 +1101,11 @@
     video_mixer->vbo_indices = 0;
   }
 
+  if (video_mixer->checker_vbo) {
+    gl->DeleteBuffers (1, &video_mixer->checker_vbo);
+    video_mixer->checker_vbo = 0;
+  }
+
   gst_aggregator_iterate_sinkpads (GST_AGGREGATOR (video_mixer), _reset_pad_gl,
       NULL);
 }
@@ -874,8 +1116,6 @@
   GstGLVideoMixer *video_mixer = GST_GL_VIDEO_MIXER (mixer);
   GstGLContext *context = GST_GL_BASE_MIXER (mixer)->context;
 
-  video_mixer->input_frames = NULL;
-
   GST_DEBUG_OBJECT (mixer, "context:%p", context);
 
   if (video_mixer->shader)
@@ -905,13 +1145,10 @@
 }
 
 static gboolean
-gst_gl_video_mixer_process_textures (GstGLMixer * mix, GPtrArray * frames,
-    guint out_tex)
+gst_gl_video_mixer_process_textures (GstGLMixer * mix, guint out_tex)
 {
   GstGLVideoMixer *video_mixer = GST_GL_VIDEO_MIXER (mix);
 
-  video_mixer->input_frames = frames;
-
   gst_gl_context_use_fbo_v2 (GST_GL_BASE_MIXER (mix)->context,
       GST_VIDEO_INFO_WIDTH (&GST_VIDEO_AGGREGATOR (mix)->info),
       GST_VIDEO_INFO_HEIGHT (&GST_VIDEO_AGGREGATOR (mix)->info),
@@ -1017,6 +1254,123 @@
   return TRUE;
 }
 
+static guint
+_blend_equation_to_gl (GstGLVideoMixerBlendEquation equation)
+{
+  switch (equation) {
+    case GST_GL_VIDEO_MIXER_BLEND_EQUATION_ADD:
+      return GL_FUNC_ADD;
+    case GST_GL_VIDEO_MIXER_BLEND_EQUATION_SUBTRACT:
+      return GL_FUNC_SUBTRACT;
+    case GST_GL_VIDEO_MIXER_BLEND_EQUATION_REVERSE_SUBTRACT:
+      return GL_FUNC_REVERSE_SUBTRACT;
+    default:
+      g_assert_not_reached ();
+      return 0;
+  }
+}
+
+static guint
+_blend_function_to_gl (GstGLVideoMixerBlendFunction equation)
+{
+  switch (equation) {
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ZERO:
+      return GL_ZERO;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE:
+      return GL_ONE;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_COLOR:
+      return GL_SRC_COLOR;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_SRC_COLOR:
+      return GL_ONE_MINUS_SRC_COLOR;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_DST_COLOR:
+      return GL_DST_COLOR;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_DST_COLOR:
+      return GL_ONE_MINUS_DST_COLOR;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_ALPHA:
+      return GL_SRC_ALPHA;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_SRC_ALPHA:
+      return GL_ONE_MINUS_SRC_ALPHA;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_DST_ALPHA:
+      return GL_DST_ALPHA;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_DST_ALPHA:
+      return GL_ONE_MINUS_DST_ALPHA;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_CONSTANT_COLOR:
+      return GL_CONSTANT_COLOR;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_CONSTANT_COLOR:
+      return GL_ONE_MINUS_CONSTANT_COLOR;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_CONSTANT_ALPHA:
+      return GL_CONSTANT_ALPHA;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_CONSTANT_ALPHA:
+      return GL_ONE_MINUS_CONSTANT_ALPHA;
+    case GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_ALPHA_SATURATE:
+      return GL_SRC_ALPHA_SATURATE;
+    default:
+      g_assert_not_reached ();
+      return 0;
+  }
+}
+
+static gboolean
+_set_blend_state (GstGLVideoMixer * video_mixer, GstGLVideoMixerPad * mix_pad)
+{
+  const GstGLFuncs *gl = GST_GL_BASE_MIXER (video_mixer)->context->gl_vtable;
+  gboolean require_separate = FALSE;
+  guint gl_func_src_rgb, gl_func_src_alpha, gl_func_dst_rgb, gl_func_dst_alpha;
+  guint gl_equation_rgb, gl_equation_alpha;
+
+  require_separate =
+      mix_pad->blend_equation_rgb != mix_pad->blend_equation_alpha
+      || mix_pad->blend_function_src_rgb != mix_pad->blend_function_src_alpha
+      || mix_pad->blend_function_dst_rgb != mix_pad->blend_function_dst_alpha;
+
+  if (require_separate && (!gl->BlendFuncSeparate
+          || !gl->BlendEquationSeparate)) {
+    GST_ERROR_OBJECT (mix_pad,
+        "separated blend equations/functions requested however "
+        "glBlendFuncSeparate or glBlendEquationSeparate not available");
+    return FALSE;
+  }
+
+  if (mix_pad->blend_function_dst_rgb ==
+      GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_ALPHA_SATURATE) {
+    GST_ERROR_OBJECT (mix_pad,
+        "Destination RGB blend function cannot be \'SRC_ALPHA_SATURATE\'");
+    return FALSE;
+  }
+
+  if (mix_pad->blend_function_dst_alpha ==
+      GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_ALPHA_SATURATE) {
+    GST_ERROR_OBJECT (mix_pad,
+        "Destination alpha blend function cannot be \'SRC_ALPHA_SATURATE\'");
+    return FALSE;
+  }
+
+  gl_equation_rgb = _blend_equation_to_gl (mix_pad->blend_equation_rgb);
+  gl_equation_alpha = _blend_equation_to_gl (mix_pad->blend_equation_alpha);
+
+  gl_func_src_rgb = _blend_function_to_gl (mix_pad->blend_function_src_rgb);
+  gl_func_src_alpha = _blend_function_to_gl (mix_pad->blend_function_src_alpha);
+  gl_func_dst_rgb = _blend_function_to_gl (mix_pad->blend_function_dst_rgb);
+  gl_func_dst_alpha = _blend_function_to_gl (mix_pad->blend_function_dst_alpha);
+
+  if (gl->BlendEquationSeparate)
+    gl->BlendEquationSeparate (gl_equation_rgb, gl_equation_alpha);
+  else
+    gl->BlendEquation (gl_equation_rgb);
+
+  if (gl->BlendFuncSeparate)
+    gl->BlendFuncSeparate (gl_func_src_rgb, gl_func_dst_rgb, gl_func_src_alpha,
+        gl_func_dst_alpha);
+  else
+    gl->BlendFunc (gl_func_src_rgb, gl_func_dst_rgb);
+
+  gl->BlendColor (mix_pad->blend_constant_color_red,
+      mix_pad->blend_constant_color_green, mix_pad->blend_constant_color_blue,
+      mix_pad->blend_constant_color_alpha);
+
+  return TRUE;
+}
+
 /* opengl scene, params: input texture (not the output mixer->texture) */
 static void
 gst_gl_video_mixer_callback (gpointer stuff)
@@ -1025,12 +1379,10 @@
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (stuff);
   GstGLMixer *mixer = GST_GL_MIXER (video_mixer);
   GstGLFuncs *gl = GST_GL_BASE_MIXER (mixer)->context->gl_vtable;
-
   GLint attr_position_loc = 0;
   GLint attr_texture_loc = 0;
   guint out_width, out_height;
-
-  guint count = 0;
+  GList *walk;
 
   out_width = GST_VIDEO_INFO_WIDTH (&vagg->info);
   out_height = GST_VIDEO_INFO_HEIGHT (&vagg->info);
@@ -1059,9 +1411,11 @@
 
   gl->Enable (GL_BLEND);
 
-  while (count < video_mixer->input_frames->len) {
-    GstGLMixerFrameData *frame;
-    GstGLVideoMixerPad *pad;
+  GST_OBJECT_LOCK (video_mixer);
+  walk = GST_ELEMENT (video_mixer)->sinkpads;
+  while (walk) {
+    GstGLMixerPad *mix_pad = walk->data;
+    GstGLVideoMixerPad *pad = walk->data;
     GstVideoInfo *v_info;
     guint in_tex;
     guint in_width, in_height;
@@ -1075,26 +1429,23 @@
     };
     /* *INDENT-ON* */
 
-    frame = g_ptr_array_index (video_mixer->input_frames, count);
-    if (!frame) {
-      GST_DEBUG ("skipping texture, null frame");
-      count++;
-      continue;
-    }
-    pad = (GstGLVideoMixerPad *) frame->pad;
     v_info = &GST_VIDEO_AGGREGATOR_PAD (pad)->info;
     in_width = GST_VIDEO_INFO_WIDTH (v_info);
     in_height = GST_VIDEO_INFO_HEIGHT (v_info);
 
-    if (!frame->texture || in_width <= 0 || in_height <= 0
+    if (!mix_pad->current_texture || in_width <= 0 || in_height <= 0
         || pad->alpha == 0.0f) {
-      GST_DEBUG ("skipping texture:%u frame:%p width:%u height:%u alpha:%f",
-          frame->texture, frame, in_width, in_height, pad->alpha);
-      count++;
+      GST_DEBUG ("skipping texture:%u pad:%p width:%u height:%u alpha:%f",
+          mix_pad->current_texture, pad, in_width, in_height, pad->alpha);
       continue;
     }
 
-    in_tex = frame->texture;
+    if (!_set_blend_state (video_mixer, pad)) {
+      GST_FIXME_OBJECT (pad, "skipping due to incorrect blend parameters");
+      continue;
+    }
+
+    in_tex = mix_pad->current_texture;
 
     _init_vbo_indices (video_mixer);
 
@@ -1102,7 +1453,9 @@
       gint pad_width, pad_height;
       gfloat w, h;
 
-      _mixer_pad_get_output_size (video_mixer, pad, &pad_width, &pad_height);
+      _mixer_pad_get_output_size (video_mixer, pad,
+          GST_VIDEO_INFO_PAR_N (&vagg->info),
+          GST_VIDEO_INFO_PAR_D (&vagg->info), &pad_width, &pad_height);
 
       w = ((gfloat) pad_width / (gfloat) out_width);
       h = ((gfloat) pad_height / (gfloat) out_height);
@@ -1135,9 +1488,6 @@
     }
     gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, video_mixer->vbo_indices);
 
-    gl->BlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-    gl->BlendEquation (GL_FUNC_ADD);
-
     gl->ActiveTexture (GL_TEXTURE0);
     gl->BindTexture (GL_TEXTURE_2D, in_tex);
     gst_gl_shader_set_uniform_1i (video_mixer->shader, "texture", 0);
@@ -1154,8 +1504,9 @@
 
     gl->DrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
 
-    ++count;
+    walk = g_list_next (walk);
   }
+  GST_OBJECT_UNLOCK (video_mixer);
 
   gl->DisableVertexAttribArray (attr_position_loc);
   gl->DisableVertexAttribArray (attr_texture_loc);
diff --git a/ext/gl/gstglvideomixer.h b/ext/gl/gstglvideomixer.h
index 0d0252b..a0776fd 100644
--- a/ext/gl/gstglvideomixer.h
+++ b/ext/gl/gstglvideomixer.h
@@ -53,6 +53,66 @@
 }
 GstGLVideoMixerBackground;
 
+/**
+ * GstGLVideoMixerBlendEquation:
+ * @GST_GL_VIDEO_MIXER_BLEND_EQUATION_ADD: Add the two results.
+ * @GST_GL_VIDEO_MIXER_BLEND_EQUATION_SUBTRACT: Subtract component-wise the destination from the source (S - D).
+ * @GST_GL_VIDEO_MIXER_BLEND_EQUATION_REVERSE_SUBTRACT: Subtract component-wise the source from the destination (D - S).
+ *
+ * The blending equation to use.  See the opengl specificition for
+ * glBlendEquationSeparate
+ */
+typedef enum
+{
+  GST_GL_VIDEO_MIXER_BLEND_EQUATION_ADD,
+  GST_GL_VIDEO_MIXER_BLEND_EQUATION_SUBTRACT,
+  GST_GL_VIDEO_MIXER_BLEND_EQUATION_REVERSE_SUBTRACT,
+}
+GstGLVideoMixerBlendEquation;
+
+/**
+ * GstGLVideoMixerBlendFunction:
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ZERO: All components are zero
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE: All components are one
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_COLOR: Use the source color/alpha
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_SRC_COLOR: One minus the source color/alpha
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_DST_COLOR: Use the destination color/alpha
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_DST_COLOR: One minus the destination color/alpha
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_ALPHA: All components are the source alpha
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_SRC_ALPHA: All components are one minus the source alpha
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_DST_ALPHA: All components are the destination alpha
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_DST_ALPHA: All components are one minus the destination alpha
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_CONSTANT_COLOR: Use the constant color/alpha
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_CONSTANT_COLOR: Use one minus the constant color/alpha
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_CONSTANT_ALPHA: All components are the constant alpha
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_CONSTANT_COLOR: All components are one minus the constant alpha
+ * @GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_ALPHA_SATURATE: All color components
+ *     are the minimum of source alpha and one minus the destination alpha.
+ *     Alpha is equal to one.
+ *
+ * The blending function to use.  See the opengl specificition for
+ * glBlendFuncSeparate
+ */
+typedef enum
+{
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ZERO,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_COLOR,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_SRC_COLOR,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_DST_COLOR,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_DST_COLOR,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_ALPHA,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_SRC_ALPHA,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_DST_ALPHA,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_DST_ALPHA,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_CONSTANT_COLOR,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_CONSTANT_COLOR,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_CONSTANT_ALPHA,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_ONE_MINUS_CONSTANT_ALPHA,
+  GST_GL_VIDEO_MIXER_BLEND_FUNCTION_SRC_ALPHA_SATURATE,
+}
+GstGLVideoMixerBlendFunction;
+
 struct _GstGLVideoMixer
 {
     GstGLMixer mixer;
@@ -61,7 +121,6 @@
 
     GstGLShader *shader;
     GstGLShader *checker;
-    GPtrArray *input_frames;
 
     GLuint vao;
     GLuint vbo_indices;
diff --git a/ext/gl/gstopengl.c b/ext/gl/gstopengl.c
index 5f2a1ac..50676c4 100644
--- a/ext/gl/gstopengl.c
+++ b/ext/gl/gstopengl.c
@@ -47,6 +47,7 @@
 #include "gstgluploadelement.h"
 #include "gstgldownloadelement.h"
 #include "gstglcolorconvertelement.h"
+#include "gstglcolorbalance.h"
 #include "gstglfilterbin.h"
 #include "gstglsinkbin.h"
 #include "gstglsrcbin.h"
@@ -64,6 +65,7 @@
 
 #if HAVE_GRAPHENE
 #include "gstgltransformation.h"
+#include "gstglvideoflip.h"
 #endif
 #if HAVE_JPEG
 #if HAVE_PNG
@@ -140,6 +142,11 @@
     return FALSE;
   }
 
+  if (!gst_element_register (plugin, "glcolorbalance",
+          GST_RANK_NONE, GST_TYPE_GL_COLOR_BALANCE)) {
+    return FALSE;
+  }
+
   if (!gst_element_register (plugin, "glfilterbin",
           GST_RANK_NONE, GST_TYPE_GL_FILTER_BIN)) {
     return FALSE;
@@ -169,6 +176,11 @@
           GST_RANK_NONE, GST_TYPE_GL_TRANSFORMATION)) {
     return FALSE;
   }
+
+  if (!gst_element_register (plugin, "glvideoflip",
+          GST_RANK_NONE, GST_TYPE_GL_VIDEO_FLIP)) {
+    return FALSE;
+  }
 #endif
 
   if (!gst_gl_effects_register_filters (plugin, GST_RANK_NONE)) {
diff --git a/ext/gme/Makefile.in b/ext/gme/Makefile.in
index 43c0bf8..a0864b4 100644
--- a/ext/gme/Makefile.in
+++ b/ext/gme/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/gsettings/Makefile.am b/ext/gsettings/Makefile.am
deleted file mode 100644
index 4cba8ac..0000000
--- a/ext/gsettings/Makefile.am
+++ /dev/null
@@ -1,41 +0,0 @@
-gsettings_SCHEMAS = org.freedesktop.gstreamer-@GST_API_VERSION@.default-elements.gschema.xml
-
-org.freedesktop.gstreamer-@GST_API_VERSION@.default-elements.gschema.xml: org.freedesktop.gstreamer.default-elements.gschema.xml
-	cp org.freedesktop.gstreamer.default-elements.gschema.xml org.freedesktop.gstreamer-@GST_API_VERSION@.default-elements.gschema.xml
-
-if USE_GSETTINGS
-@GSETTINGS_RULES@
-endif
-
-plugin_LTLIBRARIES = libgstgsettingselements.la
-
-libgstgsettingselements_la_SOURCES = \
-        gstgsettingsaudiosink.c \
-        gstgsettingsaudiosrc.c \
-        gstgsettingsvideosink.c \
-        gstgsettingsvideosrc.c \
-        gstswitchsink.c \
-        gstswitchsrc.c \
-	plugin.c
-
-libgstgsettingselements_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_CFLAGS) $(GSETTINGS_CFLAGS) $(DIR_CFLAGS) \
-	-DGstSwitchSrc=GstGSettingsSwitchSrc \
-	-DGstSwitchSrcClass=GstGSettingsSwitchSrcClass \
-	-DGstSwitchSink=GstGSettingsSwitchSink \
-	-DGstSwitchSinkClass=GstGSettingsSwitchSinkClass
-libgstgsettingselements_la_LIBADD = $(GST_LIBS) $(GSETTINGS_LIBS)
-libgstgsettingselements_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstgsettingselements_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-
-noinst_HEADERS = \
-        gstgsettingsaudiosink.h \
-        gstgsettingsaudiosrc.h \
-        gstgsettingsvideosink.h \
-        gstgsettingsvideosrc.h \
-        gstswitchsink.h \
-        gstswitchsrc.h \
-	gstgsettings.h
-
-EXTRA_DIST = org.freedesktop.gstreamer.default-elements.gschema.xml
-
-CLEANFILES = $(gsettings_SCHEMAS)
diff --git a/ext/gsettings/Makefile.in b/ext/gsettings/Makefile.in
deleted file mode 100644
index ad1741a..0000000
--- a/ext/gsettings/Makefile.in
+++ /dev/null
@@ -1,1213 +0,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-subdir = ext/gsettings
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
-	$(top_srcdir)/common/m4/as-auto-alt.m4 \
-	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
-	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-version.m4 \
-	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
-	$(top_srcdir)/common/m4/ax_pthread.m4 \
-	$(top_srcdir)/common/m4/gst-arch.m4 \
-	$(top_srcdir)/common/m4/gst-args.m4 \
-	$(top_srcdir)/common/m4/gst-check.m4 \
-	$(top_srcdir)/common/m4/gst-default.m4 \
-	$(top_srcdir)/common/m4/gst-dowhile.m4 \
-	$(top_srcdir)/common/m4/gst-error.m4 \
-	$(top_srcdir)/common/m4/gst-feature.m4 \
-	$(top_srcdir)/common/m4/gst-gettext.m4 \
-	$(top_srcdir)/common/m4/gst-glib2.m4 \
-	$(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
-	$(top_srcdir)/common/m4/gst-platform.m4 \
-	$(top_srcdir)/common/m4/gst-plugin-docs.m4 \
-	$(top_srcdir)/common/m4/gst-plugindir.m4 \
-	$(top_srcdir)/common/m4/gst.m4 \
-	$(top_srcdir)/common/m4/gtk-doc.m4 \
-	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
-	$(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =  \
-	org.freedesktop.gstreamer.default-elements.gschema.xml
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libgstgsettingselements_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-am_libgstgsettingselements_la_OBJECTS =  \
-	libgstgsettingselements_la-gstgsettingsaudiosink.lo \
-	libgstgsettingselements_la-gstgsettingsaudiosrc.lo \
-	libgstgsettingselements_la-gstgsettingsvideosink.lo \
-	libgstgsettingselements_la-gstgsettingsvideosrc.lo \
-	libgstgsettingselements_la-gstswitchsink.lo \
-	libgstgsettingselements_la-gstswitchsrc.lo \
-	libgstgsettingselements_la-plugin.lo
-libgstgsettingselements_la_OBJECTS =  \
-	$(am_libgstgsettingselements_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-libgstgsettingselements_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(libgstgsettingselements_la_CFLAGS) \
-	$(CFLAGS) $(libgstgsettingselements_la_LDFLAGS) $(LDFLAGS) -o \
-	$@
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(libgstgsettingselements_la_SOURCES)
-DIST_SOURCES = $(libgstgsettingselements_la_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-HEADERS = $(noinst_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in \
-	$(srcdir)/org.freedesktop.gstreamer.default-elements.gschema.xml.in \
-	$(top_srcdir)/depcomp
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-ACMENC_CFLAGS = @ACMENC_CFLAGS@
-ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-APEXSINK_CFLAGS = @APEXSINK_CFLAGS@
-APEXSINK_LIBS = @APEXSINK_LIBS@
-AR = @AR@
-AS = @AS@
-ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@
-ASSRENDER_LIBS = @ASSRENDER_LIBS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BLUEZ5_CFLAGS = @BLUEZ5_CFLAGS@
-BLUEZ5_LIBS = @BLUEZ5_LIBS@
-BS2B_CFLAGS = @BS2B_CFLAGS@
-BS2B_LIBS = @BS2B_LIBS@
-BZ2_LIBS = @BZ2_LIBS@
-CC = @CC@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CHROMAPRINT_CFLAGS = @CHROMAPRINT_CFLAGS@
-CHROMAPRINT_LIBS = @CHROMAPRINT_LIBS@
-CLUTTER_CFLAGS = @CLUTTER_CFLAGS@
-CLUTTER_GLX_CFLAGS = @CLUTTER_GLX_CFLAGS@
-CLUTTER_GLX_LIBS = @CLUTTER_GLX_LIBS@
-CLUTTER_LIBS = @CLUTTER_LIBS@
-CLUTTER_X11_CFLAGS = @CLUTTER_X11_CFLAGS@
-CLUTTER_X11_LIBS = @CLUTTER_X11_LIBS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CUDA_CFLAGS = @CUDA_CFLAGS@
-CUDA_LIBS = @CUDA_LIBS@
-CURL_CFLAGS = @CURL_CFLAGS@
-CURL_LIBS = @CURL_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DAALA_CFLAGS = @DAALA_CFLAGS@
-DAALA_LIBS = @DAALA_LIBS@
-DCCP_LIBS = @DCCP_LIBS@
-DECKLINK_CXXFLAGS = @DECKLINK_CXXFLAGS@
-DECKLINK_LIBS = @DECKLINK_LIBS@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRECT3D_LIBS = @DIRECT3D_LIBS@
-DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@
-DIRECTFB_LIBS = @DIRECTFB_LIBS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
-DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DTLS_CFLAGS = @DTLS_CFLAGS@
-DTLS_LIBS = @DTLS_LIBS@
-DTS_LIBS = @DTS_LIBS@
-DUMPBIN = @DUMPBIN@
-DVDNAV_CFLAGS = @DVDNAV_CFLAGS@
-DVDNAV_LIBS = @DVDNAV_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGL_CFLAGS = @EGL_CFLAGS@
-EGL_LIBS = @EGL_LIBS@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-ERROR_OBJCFLAGS = @ERROR_OBJCFLAGS@
-EXEEXT = @EXEEXT@
-EXIF_CFLAGS = @EXIF_CFLAGS@
-EXIF_LIBS = @EXIF_LIBS@
-FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
-FAAD_LIBS = @FAAD_LIBS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLITE_CFLAGS = @FLITE_CFLAGS@
-FLITE_LIBS = @FLITE_LIBS@
-FLUIDSYNTH_CFLAGS = @FLUIDSYNTH_CFLAGS@
-FLUIDSYNTH_LIBS = @FLUIDSYNTH_LIBS@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GDBUS_CODEGEN = @GDBUS_CODEGEN@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LDFLAGS = @GIO_LDFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@
-GIO_UNIX_LIBS = @GIO_UNIX_LIBS@
-GLES2_CFLAGS = @GLES2_CFLAGS@
-GLES2_LIBS = @GLES2_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GL_CFLAGS = @GL_CFLAGS@
-GL_LIBS = @GL_LIBS@
-GL_OBJCFLAGS = @GL_OBJCFLAGS@
-GME_LIBS = @GME_LIBS@
-GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@
-GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@
-GMODULE_NO_EXPORT_CFLAGS = @GMODULE_NO_EXPORT_CFLAGS@
-GMODULE_NO_EXPORT_LIBS = @GMODULE_NO_EXPORT_LIBS@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GNUSTL_CFLAGS = @GNUSTL_CFLAGS@
-GNUSTL_LIBS = @GNUSTL_LIBS@
-GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
-GRAPHENE_LIBS = @GRAPHENE_LIBS@
-GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
-GSM_LIBS = @GSM_LIBS@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_AGE = @GST_AGE@
-GST_ALLOCATORS_CFLAGS = @GST_ALLOCATORS_CFLAGS@
-GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_API_VERSION = @GST_API_VERSION@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CURRENT = @GST_CURRENT@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LIBVERSION = @GST_LIBVERSION@
-GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_NET_CFLAGS = @GST_NET_CFLAGS@
-GST_NET_LIBS = @GST_NET_LIBS@
-GST_OBJCFLAGS = @GST_OBJCFLAGS@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_OPTION_OBJCFLAGS = @GST_OPTION_OBJCFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PBUTILS_CFLAGS = @GST_PBUTILS_CFLAGS@
-GST_PBUTILS_LIBS = @GST_PBUTILS_LIBS@
-GST_PKG_CONFIG_PATH = @GST_PKG_CONFIG_PATH@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BAD_CFLAGS = @GST_PLUGINS_BAD_CFLAGS@
-GST_PLUGINS_BAD_CXXFLAGS = @GST_PLUGINS_BAD_CXXFLAGS@
-GST_PLUGINS_BAD_OBJCFLAGS = @GST_PLUGINS_BAD_OBJCFLAGS@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_GOOD_CFLAGS = @GST_PLUGINS_GOOD_CFLAGS@
-GST_PLUGINS_GOOD_DIR = @GST_PLUGINS_GOOD_DIR@
-GST_PLUGINS_GOOD_LIBS = @GST_PLUGINS_GOOD_LIBS@
-GST_PLUGINS_LIBAV_CFLAGS = @GST_PLUGINS_LIBAV_CFLAGS@
-GST_PLUGINS_LIBAV_DIR = @GST_PLUGINS_LIBAV_DIR@
-GST_PLUGINS_LIBAV_LIBS = @GST_PLUGINS_LIBAV_LIBS@
-GST_PLUGINS_NONPORTED = @GST_PLUGINS_NONPORTED@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGINS_UGLY_CFLAGS = @GST_PLUGINS_UGLY_CFLAGS@
-GST_PLUGINS_UGLY_DIR = @GST_PLUGINS_UGLY_DIR@
-GST_PLUGINS_UGLY_LIBS = @GST_PLUGINS_UGLY_LIBS@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_REVISION = @GST_REVISION@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GST_VIDEO_CFLAGS = @GST_VIDEO_CFLAGS@
-GST_VIDEO_LIBS = @GST_VIDEO_LIBS@
-GTK3_CFLAGS = @GTK3_CFLAGS@
-GTK3_GL_CFLAGS = @GTK3_GL_CFLAGS@
-GTK3_GL_LIBS = @GTK3_GL_LIBS@
-GTK3_LIBS = @GTK3_LIBS@
-GTK3_WAYLAND_CFLAGS = @GTK3_WAYLAND_CFLAGS@
-GTK3_WAYLAND_LIBS = @GTK3_WAYLAND_LIBS@
-GTK3_X11_CFLAGS = @GTK3_X11_CFLAGS@
-GTK3_X11_LIBS = @GTK3_X11_LIBS@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
-GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
-GTKDOC_MKPDF = @GTKDOC_MKPDF@
-GTKDOC_REBASE = @GTKDOC_REBASE@
-GTK_BASE_DIR = @GTK_BASE_DIR@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-GTK_VERSION = @GTK_VERSION@
-G_UDEV_CFLAGS = @G_UDEV_CFLAGS@
-G_UDEV_LIBS = @G_UDEV_LIBS@
-HAVE_CLUTTER = @HAVE_CLUTTER@
-HAVE_CLUTTER_GLX = @HAVE_CLUTTER_GLX@
-HAVE_CLUTTER_X11 = @HAVE_CLUTTER_X11@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECT3D = @HAVE_DIRECT3D@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_DTS = @HAVE_DTS@
-HAVE_EGL = @HAVE_EGL@
-HAVE_FAAC = @HAVE_FAAC@
-HAVE_FAAD = @HAVE_FAAD@
-HAVE_FLITE = @HAVE_FLITE@
-HAVE_GL = @HAVE_GL@
-HAVE_GLES2 = @HAVE_GLES2@
-HAVE_GRAPHENE = @HAVE_GRAPHENE@
-HAVE_GSM = @HAVE_GSM@
-HAVE_GTK3 = @HAVE_GTK3@
-HAVE_JPEG = @HAVE_JPEG@
-HAVE_NAS = @HAVE_NAS@
-HAVE_OPENJPEG = @HAVE_OPENJPEG@
-HAVE_PNG = @HAVE_PNG@
-HAVE_SRTP = @HAVE_SRTP@
-HAVE_WASAPI = @HAVE_WASAPI@
-HAVE_WILDMIDI = @HAVE_WILDMIDI@
-HAVE_WINKS = @HAVE_WINKS@
-HAVE_WINSCREENCAP = @HAVE_WINSCREENCAP@
-HAVE_X11 = @HAVE_X11@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
-INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_INIT = @INTROSPECTION_INIT@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
-INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
-JPEG_LIBS = @JPEG_LIBS@
-KATE_CFLAGS = @KATE_CFLAGS@
-KATE_LIBS = @KATE_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@
-LIBDC1394_LIBS = @LIBDC1394_LIBS@
-LIBDE265_CFLAGS = @LIBDE265_CFLAGS@
-LIBDE265_LIBS = @LIBDE265_LIBS@
-LIBDIR = @LIBDIR@
-LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
-LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
-LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBMMS_CFLAGS = @LIBMMS_CFLAGS@
-LIBMMS_LIBS = @LIBMMS_LIBS@
-LIBOBJS = @LIBOBJS@
-LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
-LIBPNG_LIBS = @LIBPNG_LIBS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBUDEV_CFLAGS = @LIBUDEV_CFLAGS@
-LIBUDEV_LIBS = @LIBUDEV_LIBS@
-LIBUSB_CFLAGS = @LIBUSB_CFLAGS@
-LIBUSB_LIBS = @LIBUSB_LIBS@
-LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@
-LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
-LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
-LIBXML2_LIBS = @LIBXML2_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LRDF_CFLAGS = @LRDF_CFLAGS@
-LRDF_LIBS = @LRDF_LIBS@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MIMIC_CFLAGS = @MIMIC_CFLAGS@
-MIMIC_LIBS = @MIMIC_LIBS@
-MJPEG_CFLAGS = @MJPEG_CFLAGS@
-MJPEG_LIBS = @MJPEG_LIBS@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-MODPLUG_CFLAGS = @MODPLUG_CFLAGS@
-MODPLUG_LIBS = @MODPLUG_LIBS@
-MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
-MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
-MPLEX_CFLAGS = @MPLEX_CFLAGS@
-MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
-MPLEX_LIBS = @MPLEX_LIBS@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-MUSEPACK_LIBS = @MUSEPACK_LIBS@
-NAS_CFLAGS = @NAS_CFLAGS@
-NAS_LIBS = @NAS_LIBS@
-NEON_CFLAGS = @NEON_CFLAGS@
-NEON_LIBS = @NEON_LIBS@
-NETTLE_CFLAGS = @NETTLE_CFLAGS@
-NETTLE_LIBS = @NETTLE_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NVENCODE_CFLAGS = @NVENCODE_CFLAGS@
-NVENCODE_LIBS = @NVENCODE_LIBS@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJCFLAGS = @OBJCFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OFA_CFLAGS = @OFA_CFLAGS@
-OFA_LIBS = @OFA_LIBS@
-OPENAL_CFLAGS = @OPENAL_CFLAGS@
-OPENAL_LIBS = @OPENAL_LIBS@
-OPENCV_CFLAGS = @OPENCV_CFLAGS@
-OPENCV_LIBS = @OPENCV_LIBS@
-OPENCV_PREFIX = @OPENCV_PREFIX@
-OPENEXR_CFLAGS = @OPENEXR_CFLAGS@
-OPENEXR_LIBS = @OPENEXR_LIBS@
-OPENH264_CFLAGS = @OPENH264_CFLAGS@
-OPENH264_LIBS = @OPENH264_LIBS@
-OPENJPEG_CFLAGS = @OPENJPEG_CFLAGS@
-OPENJPEG_LIBS = @OPENJPEG_LIBS@
-OPENNI2_CFLAGS = @OPENNI2_CFLAGS@
-OPENNI2_LIBS = @OPENNI2_LIBS@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPUS_CFLAGS = @OPUS_CFLAGS@
-OPUS_LIBS = @OPUS_LIBS@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PVR_CFLAGS = @PVR_CFLAGS@
-PVR_LIBS = @PVR_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QT_ANDROID_CFLAGS = @QT_ANDROID_CFLAGS@
-QT_ANDROID_LIBS = @QT_ANDROID_LIBS@
-QT_CFLAGS = @QT_CFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_MAC_CFLAGS = @QT_MAC_CFLAGS@
-QT_MAC_LIBS = @QT_MAC_LIBS@
-QT_WAYLAND_CFLAGS = @QT_WAYLAND_CFLAGS@
-QT_WAYLAND_LIBS = @QT_WAYLAND_LIBS@
-QT_X11_CFLAGS = @QT_X11_CFLAGS@
-QT_X11_LIBS = @QT_X11_LIBS@
-RANLIB = @RANLIB@
-RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
-RSVG_CFLAGS = @RSVG_CFLAGS@
-RSVG_LIBS = @RSVG_LIBS@
-RTMP_CFLAGS = @RTMP_CFLAGS@
-RTMP_LIBS = @RTMP_LIBS@
-SBC_CFLAGS = @SBC_CFLAGS@
-SBC_LIBS = @SBC_LIBS@
-SCHRO_CFLAGS = @SCHRO_CFLAGS@
-SCHRO_LIBS = @SCHRO_LIBS@
-SDL_CFLAGS = @SDL_CFLAGS@
-SDL_CLUTTER = @SDL_CLUTTER@
-SDL_CONFIG = @SDL_CONFIG@
-SDL_LIBS = @SDL_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SNDIO_LIBS = @SNDIO_LIBS@
-SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
-SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
-SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
-SPANDSP_LIBS = @SPANDSP_LIBS@
-SPC_LIBS = @SPC_LIBS@
-SRTP_CFLAGS = @SRTP_CFLAGS@
-SRTP_LIBS = @SRTP_LIBS@
-SSH2_CFLAGS = @SSH2_CFLAGS@
-SSH2_LIBS = @SSH2_LIBS@
-STRIP = @STRIP@
-TELETEXTDEC_CFLAGS = @TELETEXTDEC_CFLAGS@
-TELETEXTDEC_LIBS = @TELETEXTDEC_LIBS@
-TIGER_CFLAGS = @TIGER_CFLAGS@
-TIGER_LIBS = @TIGER_LIBS@
-TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@
-TIMIDITY_LIBS = @TIMIDITY_LIBS@
-UIC = @UIC@
-USE_GLES2 = @USE_GLES2@
-USE_NLS = @USE_NLS@
-USE_OPENGL = @USE_OPENGL@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VDPAU_CFLAGS = @VDPAU_CFLAGS@
-VDPAU_LIBS = @VDPAU_LIBS@
-VERSION = @VERSION@
-VOAACENC_CFLAGS = @VOAACENC_CFLAGS@
-VOAACENC_LIBS = @VOAACENC_LIBS@
-VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
-VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
-WASAPI_LIBS = @WASAPI_LIBS@
-WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
-WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
-WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
-WAYLAND_LIBS = @WAYLAND_LIBS@
-WEBP_CFLAGS = @WEBP_CFLAGS@
-WEBP_LIBS = @WEBP_LIBS@
-WGET = @WGET@
-WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
-WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WINKS_LIBS = @WINKS_LIBS@
-WINSCREENCAP_LIBS = @WINSCREENCAP_LIBS@
-WINSOCK2_LIBS = @WINSOCK2_LIBS@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-X265_CFLAGS = @X265_CFLAGS@
-X265_LIBS = @X265_LIBS@
-XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
-XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XVID_LIBS = @XVID_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_LIBS = @X_LIBS@
-ZBAR_CFLAGS = @ZBAR_CFLAGS@
-ZBAR_LIBS = @ZBAR_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-wayland_scanner = @wayland_scanner@
-gsettings_SCHEMAS = org.freedesktop.gstreamer-@GST_API_VERSION@.default-elements.gschema.xml
-plugin_LTLIBRARIES = libgstgsettingselements.la
-libgstgsettingselements_la_SOURCES = \
-        gstgsettingsaudiosink.c \
-        gstgsettingsaudiosrc.c \
-        gstgsettingsvideosink.c \
-        gstgsettingsvideosrc.c \
-        gstswitchsink.c \
-        gstswitchsrc.c \
-	plugin.c
-
-libgstgsettingselements_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_CFLAGS) $(GSETTINGS_CFLAGS) $(DIR_CFLAGS) \
-	-DGstSwitchSrc=GstGSettingsSwitchSrc \
-	-DGstSwitchSrcClass=GstGSettingsSwitchSrcClass \
-	-DGstSwitchSink=GstGSettingsSwitchSink \
-	-DGstSwitchSinkClass=GstGSettingsSwitchSinkClass
-
-libgstgsettingselements_la_LIBADD = $(GST_LIBS) $(GSETTINGS_LIBS)
-libgstgsettingselements_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstgsettingselements_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = \
-        gstgsettingsaudiosink.h \
-        gstgsettingsaudiosrc.h \
-        gstgsettingsvideosink.h \
-        gstgsettingsvideosrc.h \
-        gstswitchsink.h \
-        gstswitchsrc.h \
-	gstgsettings.h
-
-EXTRA_DIST = org.freedesktop.gstreamer.default-elements.gschema.xml
-CLEANFILES = $(gsettings_SCHEMAS)
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/gsettings/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu ext/gsettings/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-org.freedesktop.gstreamer.default-elements.gschema.xml: $(top_builddir)/config.status $(srcdir)/org.freedesktop.gstreamer.default-elements.gschema.xml.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
-	}
-
-uninstall-pluginLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
-	done
-
-clean-pluginLTLIBRARIES:
-	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
-	@list='$(plugin_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-libgstgsettingselements.la: $(libgstgsettingselements_la_OBJECTS) $(libgstgsettingselements_la_DEPENDENCIES) $(EXTRA_libgstgsettingselements_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libgstgsettingselements_la_LINK) -rpath $(plugindir) $(libgstgsettingselements_la_OBJECTS) $(libgstgsettingselements_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgsettingselements_la-gstgsettingsaudiosink.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgsettingselements_la-gstgsettingsaudiosrc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgsettingselements_la-gstgsettingsvideosink.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgsettingselements_la-gstgsettingsvideosrc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgsettingselements_la-gstswitchsink.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgsettingselements_la-gstswitchsrc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgsettingselements_la-plugin.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libgstgsettingselements_la-gstgsettingsaudiosink.lo: gstgsettingsaudiosink.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -MT libgstgsettingselements_la-gstgsettingsaudiosink.lo -MD -MP -MF $(DEPDIR)/libgstgsettingselements_la-gstgsettingsaudiosink.Tpo -c -o libgstgsettingselements_la-gstgsettingsaudiosink.lo `test -f 'gstgsettingsaudiosink.c' || echo '$(srcdir)/'`gstgsettingsaudiosink.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgsettingselements_la-gstgsettingsaudiosink.Tpo $(DEPDIR)/libgstgsettingselements_la-gstgsettingsaudiosink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstgsettingsaudiosink.c' object='libgstgsettingselements_la-gstgsettingsaudiosink.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 $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -c -o libgstgsettingselements_la-gstgsettingsaudiosink.lo `test -f 'gstgsettingsaudiosink.c' || echo '$(srcdir)/'`gstgsettingsaudiosink.c
-
-libgstgsettingselements_la-gstgsettingsaudiosrc.lo: gstgsettingsaudiosrc.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -MT libgstgsettingselements_la-gstgsettingsaudiosrc.lo -MD -MP -MF $(DEPDIR)/libgstgsettingselements_la-gstgsettingsaudiosrc.Tpo -c -o libgstgsettingselements_la-gstgsettingsaudiosrc.lo `test -f 'gstgsettingsaudiosrc.c' || echo '$(srcdir)/'`gstgsettingsaudiosrc.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgsettingselements_la-gstgsettingsaudiosrc.Tpo $(DEPDIR)/libgstgsettingselements_la-gstgsettingsaudiosrc.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstgsettingsaudiosrc.c' object='libgstgsettingselements_la-gstgsettingsaudiosrc.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 $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -c -o libgstgsettingselements_la-gstgsettingsaudiosrc.lo `test -f 'gstgsettingsaudiosrc.c' || echo '$(srcdir)/'`gstgsettingsaudiosrc.c
-
-libgstgsettingselements_la-gstgsettingsvideosink.lo: gstgsettingsvideosink.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -MT libgstgsettingselements_la-gstgsettingsvideosink.lo -MD -MP -MF $(DEPDIR)/libgstgsettingselements_la-gstgsettingsvideosink.Tpo -c -o libgstgsettingselements_la-gstgsettingsvideosink.lo `test -f 'gstgsettingsvideosink.c' || echo '$(srcdir)/'`gstgsettingsvideosink.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgsettingselements_la-gstgsettingsvideosink.Tpo $(DEPDIR)/libgstgsettingselements_la-gstgsettingsvideosink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstgsettingsvideosink.c' object='libgstgsettingselements_la-gstgsettingsvideosink.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 $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -c -o libgstgsettingselements_la-gstgsettingsvideosink.lo `test -f 'gstgsettingsvideosink.c' || echo '$(srcdir)/'`gstgsettingsvideosink.c
-
-libgstgsettingselements_la-gstgsettingsvideosrc.lo: gstgsettingsvideosrc.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -MT libgstgsettingselements_la-gstgsettingsvideosrc.lo -MD -MP -MF $(DEPDIR)/libgstgsettingselements_la-gstgsettingsvideosrc.Tpo -c -o libgstgsettingselements_la-gstgsettingsvideosrc.lo `test -f 'gstgsettingsvideosrc.c' || echo '$(srcdir)/'`gstgsettingsvideosrc.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgsettingselements_la-gstgsettingsvideosrc.Tpo $(DEPDIR)/libgstgsettingselements_la-gstgsettingsvideosrc.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstgsettingsvideosrc.c' object='libgstgsettingselements_la-gstgsettingsvideosrc.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 $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -c -o libgstgsettingselements_la-gstgsettingsvideosrc.lo `test -f 'gstgsettingsvideosrc.c' || echo '$(srcdir)/'`gstgsettingsvideosrc.c
-
-libgstgsettingselements_la-gstswitchsink.lo: gstswitchsink.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -MT libgstgsettingselements_la-gstswitchsink.lo -MD -MP -MF $(DEPDIR)/libgstgsettingselements_la-gstswitchsink.Tpo -c -o libgstgsettingselements_la-gstswitchsink.lo `test -f 'gstswitchsink.c' || echo '$(srcdir)/'`gstswitchsink.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgsettingselements_la-gstswitchsink.Tpo $(DEPDIR)/libgstgsettingselements_la-gstswitchsink.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstswitchsink.c' object='libgstgsettingselements_la-gstswitchsink.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 $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -c -o libgstgsettingselements_la-gstswitchsink.lo `test -f 'gstswitchsink.c' || echo '$(srcdir)/'`gstswitchsink.c
-
-libgstgsettingselements_la-gstswitchsrc.lo: gstswitchsrc.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -MT libgstgsettingselements_la-gstswitchsrc.lo -MD -MP -MF $(DEPDIR)/libgstgsettingselements_la-gstswitchsrc.Tpo -c -o libgstgsettingselements_la-gstswitchsrc.lo `test -f 'gstswitchsrc.c' || echo '$(srcdir)/'`gstswitchsrc.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgsettingselements_la-gstswitchsrc.Tpo $(DEPDIR)/libgstgsettingselements_la-gstswitchsrc.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstswitchsrc.c' object='libgstgsettingselements_la-gstswitchsrc.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 $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -c -o libgstgsettingselements_la-gstswitchsrc.lo `test -f 'gstswitchsrc.c' || echo '$(srcdir)/'`gstswitchsrc.c
-
-libgstgsettingselements_la-plugin.lo: plugin.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -MT libgstgsettingselements_la-plugin.lo -MD -MP -MF $(DEPDIR)/libgstgsettingselements_la-plugin.Tpo -c -o libgstgsettingselements_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgsettingselements_la-plugin.Tpo $(DEPDIR)/libgstgsettingselements_la-plugin.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='plugin.c' object='libgstgsettingselements_la-plugin.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstgsettingselements_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgsettingselements_la_CFLAGS) $(CFLAGS) -c -o libgstgsettingselements_la-plugin.lo `test -f 'plugin.c' || echo '$(srcdir)/'`plugin.c
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(plugindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-pluginLTLIBRARIES install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
-	uninstall-pluginLTLIBRARIES
-
-.PRECIOUS: Makefile
-
-
-org.freedesktop.gstreamer-@GST_API_VERSION@.default-elements.gschema.xml: org.freedesktop.gstreamer.default-elements.gschema.xml
-	cp org.freedesktop.gstreamer.default-elements.gschema.xml org.freedesktop.gstreamer-@GST_API_VERSION@.default-elements.gschema.xml
-
-@USE_GSETTINGS_TRUE@@GSETTINGS_RULES@
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/ext/gsettings/gstgsettings.h b/ext/gsettings/gstgsettings.h
deleted file mode 100644
index a49aee7..0000000
--- a/ext/gsettings/gstgsettings.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* GStreamer
- * Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_GSETTINGS_H__
-#define __GST_GSETTINGS_H__
-
-#include <gst/gst.h>
-
-G_BEGIN_DECLS
-
-#define GST_GSETTINGS_SCHEMA "org.freedesktop.gstreamer-0.10.default-elements"
-#define GST_GSETTINGS_PATH "/desktop/gstreamer/0.10/default-elements/"
-
-#define GST_GSETTINGS_KEY_SOUNDS_AUDIOSINK "sounds-audiosink"
-#define GST_GSETTINGS_KEY_MUSIC_AUDIOSINK "music-audiosink"
-#define GST_GSETTINGS_KEY_CHAT_AUDIOSINK "chat-audiosink"
-#define GST_GSETTINGS_KEY_AUDIOSRC "audiosrc"
-#define GST_GSETTINGS_KEY_VIDEOSINK "videosink"
-#define GST_GSETTINGS_KEY_VIDEOSRC "videosrc"
-#define GST_GSETTINGS_KEY_VISUALIZATION "visualization"
-
-G_END_DECLS
-
-#endif /* __GST_GSETTINGS_H__ */
diff --git a/ext/gsettings/gstgsettingsaudiosink.c b/ext/gsettings/gstgsettingsaudiosink.c
deleted file mode 100644
index f080cb5..0000000
--- a/ext/gsettings/gstgsettingsaudiosink.c
+++ /dev/null
@@ -1,355 +0,0 @@
-/* GStreamer
- * Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-/**
- * SECTION:element-gsettingsaudiosink
- *
- * This element outputs sound to the audiosink that has been configured in
- * GSettings by the user.
- * 
- * <refsect2>
- * <title>Example launch line</title>
- * |[
- * gst-launch audiotestsrc ! audioconvert ! audioresample ! gsettingsaudiosink
- * ]| Play on configured audiosink
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gst/gst.h>
-#include <gst/glib-compat-private.h>
-#include <string.h>
-
-#include "gstgsettingsaudiosink.h"
-#include "gstgsettings.h"
-
-#define GST_TYPE_GSETTINGS_AUDIOSINK_PROFILE (gst_gsettings_audiosink_profile_get_type())
-static GType
-gst_gsettings_audiosink_profile_get_type (void)
-{
-  static GType gsettings_profile_type = 0;
-  static const GEnumValue gsettings_profiles[] = {
-    {GST_GSETTINGS_AUDIOSINK_PROFILE_SOUNDS, "Sound Events", "sounds"},
-    {GST_GSETTINGS_AUDIOSINK_PROFILE_MUSIC, "Music and Movies (default)",
-        "music"},
-    {GST_GSETTINGS_AUDIOSINK_PROFILE_CHAT, "Audio/Video Conferencing", "chat"},
-    {0, NULL, NULL}
-  };
-
-  if (!gsettings_profile_type) {
-    gsettings_profile_type =
-        g_enum_register_static ("GstGSettingsAudioSinkProfile",
-        gsettings_profiles);
-  }
-  return gsettings_profile_type;
-}
-
-enum
-{
-  PROP_0,
-  PROP_PROFILE
-};
-
-GST_BOILERPLATE (GstGSettingsAudioSink, gst_gsettings_audio_sink, GstSwitchSink,
-    GST_TYPE_SWITCH_SINK);
-
-static gboolean
-gst_gsettings_audio_sink_change_child (GstGSettingsAudioSink * sink)
-{
-  const gchar *key = NULL;
-  gchar *new_string;
-  GError *err = NULL;
-  GstElement *new_kid;
-
-  GST_OBJECT_LOCK (sink);
-  switch (sink->profile) {
-    case GST_GSETTINGS_AUDIOSINK_PROFILE_SOUNDS:
-      key = GST_GSETTINGS_KEY_SOUNDS_AUDIOSINK;
-      break;
-    case GST_GSETTINGS_AUDIOSINK_PROFILE_MUSIC:
-      key = GST_GSETTINGS_KEY_MUSIC_AUDIOSINK;
-      break;
-    case GST_GSETTINGS_AUDIOSINK_PROFILE_CHAT:
-      key = GST_GSETTINGS_KEY_CHAT_AUDIOSINK;
-      break;
-    default:
-      break;
-  }
-
-  new_string = g_settings_get_string (sink->settings, key);
-
-  if (new_string != NULL && sink->gsettings_str != NULL &&
-      (strlen (new_string) == 0 ||
-          strcmp (sink->gsettings_str, new_string) == 0)) {
-    g_free (new_string);
-    GST_DEBUG_OBJECT (sink,
-        "GSettings key was updated, but it didn't change. Ignoring");
-    GST_OBJECT_UNLOCK (sink);
-    return TRUE;
-  }
-  GST_OBJECT_UNLOCK (sink);
-
-  GST_DEBUG_OBJECT (sink, "GSettings key changed from '%s' to '%s'",
-      GST_STR_NULL (sink->gsettings_str), GST_STR_NULL (new_string));
-
-  if (new_string) {
-    new_kid = gst_parse_bin_from_description (new_string, TRUE, &err);
-    if (err) {
-      GST_ERROR_OBJECT (sink, "error creating bin '%s': %s", new_string,
-          err->message);
-      g_error_free (err);
-    }
-  } else {
-    new_kid = NULL;
-  }
-
-  if (new_kid == NULL) {
-    GST_ELEMENT_ERROR (sink, LIBRARY, SETTINGS, (NULL),
-        ("Failed to render audio sink from GSettings"));
-    goto fail;
-  }
-
-  if (!gst_switch_sink_set_child (GST_SWITCH_SINK (sink), new_kid)) {
-    GST_WARNING_OBJECT (sink, "Failed to update child element");
-    goto fail;
-  }
-
-  g_free (sink->gsettings_str);
-  sink->gsettings_str = new_string;
-
-  return TRUE;
-
-fail:
-  g_free (new_string);
-  return FALSE;
-}
-
-static gboolean
-gst_gsettings_audio_sink_switch_profile (GstGSettingsAudioSink * sink,
-    GstGSettingsAudioSinkProfile profile)
-{
-  if (sink->settings == NULL)
-    return TRUE;
-
-  GST_OBJECT_LOCK (sink);
-  sink->profile = profile;
-  GST_OBJECT_UNLOCK (sink);
-
-  return gst_gsettings_audio_sink_change_child (sink);
-}
-
-static void
-on_changed (GSettings * settings, gchar * key, GstGSettingsAudioSink * sink)
-{
-  gboolean changed = FALSE;
-
-  if (!g_str_has_suffix (key, "audiosink"))
-    return;
-
-  GST_OBJECT_LOCK (sink);
-  if ((sink->profile == GST_GSETTINGS_AUDIOSINK_PROFILE_SOUNDS &&
-          g_str_equal (key, GST_GSETTINGS_KEY_SOUNDS_AUDIOSINK)) ||
-      (sink->profile == GST_GSETTINGS_AUDIOSINK_PROFILE_MUSIC &&
-          g_str_equal (key, GST_GSETTINGS_KEY_MUSIC_AUDIOSINK)) ||
-      (sink->profile == GST_GSETTINGS_AUDIOSINK_PROFILE_CHAT &&
-          g_str_equal (key, GST_GSETTINGS_KEY_CHAT_AUDIOSINK)))
-    changed = TRUE;
-  GST_OBJECT_UNLOCK (sink);
-
-  if (changed)
-    gst_gsettings_audio_sink_change_child (sink);
-}
-
-static gboolean
-gst_gsettings_audio_sink_start (GstGSettingsAudioSink * sink)
-{
-  GError *err = NULL;
-  GThread *thread;
-
-  sink->loop = g_main_loop_new (sink->context, FALSE);
-
-  thread =
-      g_thread_create ((GThreadFunc) g_main_loop_run, sink->loop, FALSE, &err);
-  if (!thread) {
-    GST_ELEMENT_ERROR (sink, CORE, STATE_CHANGE, (NULL),
-        ("Failed to create new thread: %s", err->message));
-    g_error_free (err);
-    g_main_loop_unref (sink->loop);
-    sink->loop = NULL;
-    return FALSE;
-  }
-
-  g_main_context_push_thread_default (sink->context);
-  sink->settings = g_settings_new (GST_GSETTINGS_SCHEMA);
-  sink->changed_id =
-      g_signal_connect_data (G_OBJECT (sink->settings), "changed",
-      G_CALLBACK (on_changed), gst_object_ref (sink),
-      (GClosureNotify) gst_object_unref, 0);
-  g_main_context_pop_thread_default (sink->context);
-
-  return TRUE;
-}
-
-static gboolean
-gst_gsettings_audio_sink_reset (GstGSettingsAudioSink * sink)
-{
-  gst_switch_sink_set_child (GST_SWITCH_SINK (sink), NULL);
-
-  if (sink->changed_id) {
-    g_signal_handler_disconnect (sink->settings, sink->changed_id);
-    sink->changed_id = 0;
-  }
-
-  if (sink->loop) {
-    g_main_loop_quit (sink->loop);
-    g_main_loop_unref (sink->loop);
-    sink->loop = NULL;
-  }
-
-  if (sink->settings) {
-    g_object_unref (sink->settings);
-    sink->settings = NULL;
-  }
-
-  GST_OBJECT_LOCK (sink);
-  g_free (sink->gsettings_str);
-  sink->gsettings_str = NULL;
-  GST_OBJECT_UNLOCK (sink);
-
-  return TRUE;
-}
-
-static void
-gst_gsettings_audio_sink_finalize (GObject * object)
-{
-  GstGSettingsAudioSink *sink = GST_GSETTINGS_AUDIO_SINK (object);
-
-  g_free (sink->gsettings_str);
-  g_main_context_unref (sink->context);
-
-  GST_CALL_PARENT (G_OBJECT_CLASS, finalize, ((GObject *) (sink)));
-}
-
-static void
-gst_gsettings_audio_sink_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
-{
-  GstGSettingsAudioSink *sink = GST_GSETTINGS_AUDIO_SINK (object);
-
-  switch (prop_id) {
-    case PROP_PROFILE:
-      gst_gsettings_audio_sink_switch_profile (sink, g_value_get_enum (value));
-      break;
-    default:
-      break;
-  }
-}
-
-static void
-gst_gsettings_audio_sink_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
-{
-  GstGSettingsAudioSink *sink = GST_GSETTINGS_AUDIO_SINK (object);
-
-  switch (prop_id) {
-    case PROP_PROFILE:
-      g_value_set_enum (value, sink->profile);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
-}
-
-static GstStateChangeReturn
-gst_gsettings_audio_sink_change_state (GstElement * element,
-    GstStateChange transition)
-{
-  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-  GstGSettingsAudioSink *sink = GST_GSETTINGS_AUDIO_SINK (element);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_NULL_TO_READY:
-      if (!gst_gsettings_audio_sink_start (sink))
-        return GST_STATE_CHANGE_FAILURE;
-
-      if (!gst_gsettings_audio_sink_change_child (sink)) {
-        gst_gsettings_audio_sink_reset (sink);
-        return GST_STATE_CHANGE_FAILURE;
-      }
-      break;
-    default:
-      break;
-  }
-
-  ret = GST_CALL_PARENT_WITH_DEFAULT (GST_ELEMENT_CLASS, change_state,
-      (element, transition), GST_STATE_CHANGE_SUCCESS);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_READY_TO_NULL:
-      gst_gsettings_audio_sink_reset (sink);
-      break;
-    default:
-      break;
-  }
-
-  return ret;
-}
-
-static void
-gst_gsettings_audio_sink_init (GstGSettingsAudioSink * sink,
-    GstGSettingsAudioSinkClass * g_class)
-{
-  sink->context = g_main_context_new ();
-  gst_gsettings_audio_sink_reset (sink);
-
-  sink->profile = GST_GSETTINGS_AUDIOSINK_PROFILE_MUSIC;
-}
-
-static void
-gst_gsettings_audio_sink_base_init (gpointer klass)
-{
-  GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
-  gst_element_class_set_static_metadata (eklass, "GSettings audio sink",
-      "Sink/Audio",
-      "Audio sink embedding the GSettings preferences for audio output",
-      "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
-}
-
-static void
-gst_gsettings_audio_sink_class_init (GstGSettingsAudioSinkClass * klass)
-{
-  GObjectClass *oklass = G_OBJECT_CLASS (klass);
-  GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
-  oklass->finalize = gst_gsettings_audio_sink_finalize;
-  oklass->set_property = gst_gsettings_audio_sink_set_property;
-  oklass->get_property = gst_gsettings_audio_sink_get_property;
-
-  g_object_class_install_property (oklass, PROP_PROFILE,
-      g_param_spec_enum ("profile", "Profile", "Profile",
-          GST_TYPE_GSETTINGS_AUDIOSINK_PROFILE,
-          GST_GSETTINGS_AUDIOSINK_PROFILE_SOUNDS,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
-  eklass->change_state = gst_gsettings_audio_sink_change_state;
-}
diff --git a/ext/gsettings/gstgsettingsaudiosink.h b/ext/gsettings/gstgsettingsaudiosink.h
deleted file mode 100644
index 7a15190..0000000
--- a/ext/gsettings/gstgsettingsaudiosink.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* GStreamer
- * Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_GSETTINGS_AUDIO_SINK_H__
-#define __GST_GSETTINGS_AUDIO_SINK_H__
-
-#include <gst/gst.h>
-#include <gio/gio.h>
-#include "gstswitchsink.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_GSETTINGS_AUDIO_SINK \
-  (gst_gsettings_audio_sink_get_type ())
-#define GST_GSETTINGS_AUDIO_SINK(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GSETTINGS_AUDIO_SINK, \
-                               GstGSettingsAudioSink))
-#define GST_GSETTINGS_AUDIO_SINK_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_GSETTINGS_AUDIO_SINK, \
-                            GstGSettingsAudioSinkClass))
-#define GST_IS_GSETTINGS_AUDIO_SINK(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GSETTINGS_AUDIO_SINK))
-#define GST_IS_GSETTINGS_AUDIO_SINK_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GSETTINGS_AUDIO_SINK))
-
-typedef enum
-{
-  GST_GSETTINGS_AUDIOSINK_PROFILE_SOUNDS,
-  GST_GSETTINGS_AUDIOSINK_PROFILE_MUSIC,
-  GST_GSETTINGS_AUDIOSINK_PROFILE_CHAT,
-  GST_GSETTINGS_AUDIOSINK_PROFILE_NONE /* Internal value only */
-} GstGSettingsAudioSinkProfile;
-
-typedef struct _GstGSettingsAudioSink {
-  GstSwitchSink parent;
-
-  GSettings *settings;
-
-  GMainContext *context;
-  GMainLoop *loop;
-  gulong changed_id;
-
-  GstGSettingsAudioSinkProfile profile;
-  gchar *gsettings_str;
-} GstGSettingsAudioSink;
-
-typedef struct _GstGSettingsAudioSinkClass {
-  GstSwitchSinkClass parent_class;
-} GstGSettingsAudioSinkClass;
-
-GType   gst_gsettings_audio_sink_get_type   (void);
-
-G_END_DECLS
-
-#endif /* __GST_GSETTINGS_AUDIO_SINK_H__ */
diff --git a/ext/gsettings/gstgsettingsaudiosrc.c b/ext/gsettings/gstgsettingsaudiosrc.c
deleted file mode 100644
index ccd7c79..0000000
--- a/ext/gsettings/gstgsettingsaudiosrc.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/* GStreamer
- * Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-/**
- * SECTION:element-gsettingsaudiosrc
- *
- * This element outputs sound to the audiosrc that has been configured in
- * GSettings by the user.
- * 
- * <refsect2>
- * <title>Example launch line</title>
- * |[
- * gst-launch gsettingsaudiosrc ! audioconvert ! audioresample ! autoaudiosink
- * ]| Play from configured audiosrc
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gst/gst.h>
-#include <gst/glib-compat-private.h>
-#include <string.h>
-
-#include "gstgsettingsaudiosrc.h"
-#include "gstgsettings.h"
-
-GST_BOILERPLATE (GstGSettingsAudioSrc, gst_gsettings_audio_src, GstSwitchSrc,
-    GST_TYPE_SWITCH_SRC);
-
-static gboolean
-gst_gsettings_audio_src_change_child (GstGSettingsAudioSrc * src)
-{
-  gchar *new_string;
-  GError *err = NULL;
-  GstElement *new_kid;
-
-  GST_OBJECT_LOCK (src);
-  new_string =
-      g_settings_get_string (src->settings, GST_GSETTINGS_KEY_AUDIOSRC);
-
-  if (new_string != NULL && src->gsettings_str != NULL &&
-      (strlen (new_string) == 0 ||
-          strcmp (src->gsettings_str, new_string) == 0)) {
-    g_free (new_string);
-    GST_DEBUG_OBJECT (src,
-        "GSettings key was updated, but it didn't change. Ignoring");
-    GST_OBJECT_UNLOCK (src);
-    return TRUE;
-  }
-  GST_OBJECT_UNLOCK (src);
-
-  GST_DEBUG_OBJECT (src, "GSettings key changed from '%s' to '%s'",
-      GST_STR_NULL (src->gsettings_str), GST_STR_NULL (new_string));
-
-  if (new_string) {
-    new_kid = gst_parse_bin_from_description (new_string, TRUE, &err);
-    if (err) {
-      GST_ERROR_OBJECT (src, "error creating bin '%s': %s", new_string,
-          err->message);
-      g_error_free (err);
-    }
-  } else {
-    new_kid = NULL;
-  }
-
-  if (new_kid == NULL) {
-    GST_ELEMENT_ERROR (src, LIBRARY, SETTINGS, (NULL),
-        ("Failed to render audio src from GSettings"));
-    goto fail;
-  }
-
-  if (!gst_switch_src_set_child (GST_SWITCH_SRC (src), new_kid)) {
-    GST_WARNING_OBJECT (src, "Failed to update child element");
-    goto fail;
-  }
-
-  g_free (src->gsettings_str);
-  src->gsettings_str = new_string;
-
-  return TRUE;
-
-fail:
-  g_free (new_string);
-  return FALSE;
-}
-
-static void
-on_changed (GSettings * settings, gchar * key, GstGSettingsAudioSrc * src)
-{
-  if (!g_str_equal (key, "audiosrc"))
-    return;
-
-  gst_gsettings_audio_src_change_child (src);
-}
-
-static gboolean
-gst_gsettings_audio_src_start (GstGSettingsAudioSrc * src)
-{
-  GError *err = NULL;
-  GThread *thread;
-
-  src->loop = g_main_loop_new (src->context, FALSE);
-
-  thread =
-      g_thread_create ((GThreadFunc) g_main_loop_run, src->loop, FALSE, &err);
-  if (!thread) {
-    GST_ELEMENT_ERROR (src, CORE, STATE_CHANGE, (NULL),
-        ("Failed to create new thread: %s", err->message));
-    g_error_free (err);
-    g_main_loop_unref (src->loop);
-    src->loop = NULL;
-    return FALSE;
-  }
-
-  g_main_context_push_thread_default (src->context);
-  src->settings = g_settings_new (GST_GSETTINGS_SCHEMA);
-  src->changed_id =
-      g_signal_connect_data (G_OBJECT (src->settings), "changed",
-      G_CALLBACK (on_changed), gst_object_ref (src),
-      (GClosureNotify) gst_object_unref, 0);
-  g_main_context_pop_thread_default (src->context);
-
-  return TRUE;
-}
-
-static gboolean
-gst_gsettings_audio_src_reset (GstGSettingsAudioSrc * src)
-{
-  gst_switch_src_set_child (GST_SWITCH_SRC (src), NULL);
-
-  if (src->changed_id) {
-    g_signal_handler_disconnect (src->settings, src->changed_id);
-    src->changed_id = 0;
-  }
-
-  if (src->loop) {
-    g_main_loop_quit (src->loop);
-    g_main_loop_unref (src->loop);
-    src->loop = NULL;
-  }
-
-  if (src->settings) {
-    g_object_unref (src->settings);
-    src->settings = NULL;
-  }
-
-  GST_OBJECT_LOCK (src);
-  g_free (src->gsettings_str);
-  src->gsettings_str = NULL;
-  GST_OBJECT_UNLOCK (src);
-
-  return TRUE;
-}
-
-static void
-gst_gsettings_audio_src_finalize (GObject * object)
-{
-  GstGSettingsAudioSrc *src = GST_GSETTINGS_AUDIO_SRC (object);
-
-  g_free (src->gsettings_str);
-  g_main_context_unref (src->context);
-
-  GST_CALL_PARENT (G_OBJECT_CLASS, finalize, ((GObject *) (src)));
-}
-
-static GstStateChangeReturn
-gst_gsettings_audio_src_change_state (GstElement * element,
-    GstStateChange transition)
-{
-  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-  GstGSettingsAudioSrc *src = GST_GSETTINGS_AUDIO_SRC (element);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_NULL_TO_READY:
-      if (!gst_gsettings_audio_src_start (src))
-        return GST_STATE_CHANGE_FAILURE;
-
-      if (!gst_gsettings_audio_src_change_child (src)) {
-        gst_gsettings_audio_src_reset (src);
-        return GST_STATE_CHANGE_FAILURE;
-      }
-      break;
-    default:
-      break;
-  }
-
-  ret = GST_CALL_PARENT_WITH_DEFAULT (GST_ELEMENT_CLASS, change_state,
-      (element, transition), GST_STATE_CHANGE_SUCCESS);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_READY_TO_NULL:
-      gst_gsettings_audio_src_reset (src);
-      break;
-    default:
-      break;
-  }
-
-  return ret;
-}
-
-static void
-gst_gsettings_audio_src_init (GstGSettingsAudioSrc * src,
-    GstGSettingsAudioSrcClass * g_class)
-{
-  src->context = g_main_context_new ();
-  gst_gsettings_audio_src_reset (src);
-}
-
-static void
-gst_gsettings_audio_src_base_init (gpointer klass)
-{
-  GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
-  gst_element_class_set_static_metadata (eklass, "GSettings audio src",
-      "Src/Audio",
-      "Audio src embedding the GSettings preferences for audio input",
-      "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
-}
-
-static void
-gst_gsettings_audio_src_class_init (GstGSettingsAudioSrcClass * klass)
-{
-  GObjectClass *oklass = G_OBJECT_CLASS (klass);
-  GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
-  oklass->finalize = gst_gsettings_audio_src_finalize;
-
-  eklass->change_state = gst_gsettings_audio_src_change_state;
-}
diff --git a/ext/gsettings/gstgsettingsaudiosrc.h b/ext/gsettings/gstgsettingsaudiosrc.h
deleted file mode 100644
index d5c3fc3..0000000
--- a/ext/gsettings/gstgsettingsaudiosrc.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* GStreamer
- * Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_GSETTINGS_AUDIO_SRC_H__
-#define __GST_GSETTINGS_AUDIO_SRC_H__
-
-#include <gst/gst.h>
-#include <gio/gio.h>
-#include "gstswitchsrc.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_GSETTINGS_AUDIO_SRC \
-  (gst_gsettings_audio_src_get_type ())
-#define GST_GSETTINGS_AUDIO_SRC(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GSETTINGS_AUDIO_SRC, \
-                               GstGSettingsAudioSrc))
-#define GST_GSETTINGS_AUDIO_SRC_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_GSETTINGS_AUDIO_SRC, \
-                            GstGSettingsAudioSrcClass))
-#define GST_IS_GSETTINGS_AUDIO_SRC(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GSETTINGS_AUDIO_SRC))
-#define GST_IS_GSETTINGS_AUDIO_SRC_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GSETTINGS_AUDIO_SRC))
-
-typedef struct _GstGSettingsAudioSrc {
-  GstSwitchSrc parent;
-
-  GSettings *settings;
-
-  GMainContext *context;
-  GMainLoop *loop;
-  gulong changed_id;
-
-  gchar *gsettings_str;
-} GstGSettingsAudioSrc;
-
-typedef struct _GstGSettingsAudioSrcClass {
-  GstSwitchSrcClass parent_class;
-} GstGSettingsAudioSrcClass;
-
-GType   gst_gsettings_audio_src_get_type   (void);
-
-G_END_DECLS
-
-#endif /* __GST_GSETTINGS_AUDIO_SRC_H__ */
diff --git a/ext/gsettings/gstgsettingsvideosink.c b/ext/gsettings/gstgsettingsvideosink.c
deleted file mode 100644
index b7a0a25..0000000
--- a/ext/gsettings/gstgsettingsvideosink.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/* GStreamer
- * Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-/**
- * SECTION:element-gsettingsvideosink
- *
- * This element outputs sound to the videosink that has been configured in
- * GSettings by the user.
- * 
- * <refsect2>
- * <title>Example launch line</title>
- * |[
- * gst-launch videotestsrc ! videoconvert ! videoscale ! gsettingsvideosink
- * ]| Play on configured videosink
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gst/gst.h>
-#include <gst/glib-compat-private.h>
-#include <string.h>
-
-#include "gstgsettingsvideosink.h"
-#include "gstgsettings.h"
-
-GST_BOILERPLATE (GstGSettingsVideoSink, gst_gsettings_video_sink, GstSwitchSink,
-    GST_TYPE_SWITCH_SINK);
-
-static gboolean
-gst_gsettings_video_sink_change_child (GstGSettingsVideoSink * sink)
-{
-  gchar *new_string;
-  GError *err = NULL;
-  GstElement *new_kid;
-
-  GST_OBJECT_LOCK (sink);
-  new_string =
-      g_settings_get_string (sink->settings, GST_GSETTINGS_KEY_VIDEOSINK);
-
-  if (new_string != NULL && sink->gsettings_str != NULL &&
-      (strlen (new_string) == 0 ||
-          strcmp (sink->gsettings_str, new_string) == 0)) {
-    g_free (new_string);
-    GST_DEBUG_OBJECT (sink,
-        "GSettings key was updated, but it didn't change. Ignoring");
-    GST_OBJECT_UNLOCK (sink);
-    return TRUE;
-  }
-  GST_OBJECT_UNLOCK (sink);
-
-  GST_DEBUG_OBJECT (sink, "GSettings key changed from '%s' to '%s'",
-      GST_STR_NULL (sink->gsettings_str), GST_STR_NULL (new_string));
-
-  if (new_string) {
-    new_kid = gst_parse_bin_from_description (new_string, TRUE, &err);
-    if (err) {
-      GST_ERROR_OBJECT (sink, "error creating bin '%s': %s", new_string,
-          err->message);
-      g_error_free (err);
-    }
-  } else {
-    new_kid = NULL;
-  }
-
-  if (new_kid == NULL) {
-    GST_ELEMENT_ERROR (sink, LIBRARY, SETTINGS, (NULL),
-        ("Failed to render video sink from GSettings"));
-    goto fail;
-  }
-
-  if (!gst_switch_sink_set_child (GST_SWITCH_SINK (sink), new_kid)) {
-    GST_WARNING_OBJECT (sink, "Failed to update child element");
-    goto fail;
-  }
-
-  g_free (sink->gsettings_str);
-  sink->gsettings_str = new_string;
-
-  return TRUE;
-
-fail:
-  g_free (new_string);
-  return FALSE;
-}
-
-static void
-on_changed (GSettings * settings, gchar * key, GstGSettingsVideoSink * sink)
-{
-  if (!g_str_has_suffix (key, "videosink"))
-    return;
-
-  gst_gsettings_video_sink_change_child (sink);
-}
-
-static gboolean
-gst_gsettings_video_sink_start (GstGSettingsVideoSink * sink)
-{
-  GError *err = NULL;
-  GThread *thread;
-
-  sink->loop = g_main_loop_new (sink->context, FALSE);
-
-  thread =
-      g_thread_create ((GThreadFunc) g_main_loop_run, sink->loop, FALSE, &err);
-  if (!thread) {
-    GST_ELEMENT_ERROR (sink, CORE, STATE_CHANGE, (NULL),
-        ("Failed to create new thread: %s", err->message));
-    g_error_free (err);
-    g_main_loop_unref (sink->loop);
-    sink->loop = NULL;
-    return FALSE;
-  }
-
-  g_main_context_push_thread_default (sink->context);
-  sink->settings = g_settings_new (GST_GSETTINGS_SCHEMA);
-  sink->changed_id =
-      g_signal_connect_data (G_OBJECT (sink->settings), "changed",
-      G_CALLBACK (on_changed), gst_object_ref (sink),
-      (GClosureNotify) gst_object_unref, 0);
-  g_main_context_pop_thread_default (sink->context);
-
-  return TRUE;
-}
-
-static gboolean
-gst_gsettings_video_sink_reset (GstGSettingsVideoSink * sink)
-{
-  gst_switch_sink_set_child (GST_SWITCH_SINK (sink), NULL);
-
-  if (sink->changed_id) {
-    g_signal_handler_disconnect (sink->settings, sink->changed_id);
-    sink->changed_id = 0;
-  }
-
-  if (sink->loop) {
-    g_main_loop_quit (sink->loop);
-    g_main_loop_unref (sink->loop);
-    sink->loop = NULL;
-  }
-
-  if (sink->settings) {
-    g_object_unref (sink->settings);
-    sink->settings = NULL;
-  }
-
-  GST_OBJECT_LOCK (sink);
-  g_free (sink->gsettings_str);
-  sink->gsettings_str = NULL;
-  GST_OBJECT_UNLOCK (sink);
-
-  return TRUE;
-}
-
-static void
-gst_gsettings_video_sink_finalize (GObject * object)
-{
-  GstGSettingsVideoSink *sink = GST_GSETTINGS_VIDEO_SINK (object);
-
-  g_free (sink->gsettings_str);
-  g_main_context_unref (sink->context);
-
-  GST_CALL_PARENT (G_OBJECT_CLASS, finalize, ((GObject *) (sink)));
-}
-
-static GstStateChangeReturn
-gst_gsettings_video_sink_change_state (GstElement * element,
-    GstStateChange transition)
-{
-  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-  GstGSettingsVideoSink *sink = GST_GSETTINGS_VIDEO_SINK (element);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_NULL_TO_READY:
-      if (!gst_gsettings_video_sink_start (sink))
-        return GST_STATE_CHANGE_FAILURE;
-
-      if (!gst_gsettings_video_sink_change_child (sink)) {
-        gst_gsettings_video_sink_reset (sink);
-        return GST_STATE_CHANGE_FAILURE;
-      }
-      break;
-    default:
-      break;
-  }
-
-  ret = GST_CALL_PARENT_WITH_DEFAULT (GST_ELEMENT_CLASS, change_state,
-      (element, transition), GST_STATE_CHANGE_SUCCESS);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_READY_TO_NULL:
-      gst_gsettings_video_sink_reset (sink);
-      break;
-    default:
-      break;
-  }
-
-  return ret;
-}
-
-static void
-gst_gsettings_video_sink_init (GstGSettingsVideoSink * sink,
-    GstGSettingsVideoSinkClass * g_class)
-{
-  sink->context = g_main_context_new ();
-  gst_gsettings_video_sink_reset (sink);
-}
-
-static void
-gst_gsettings_video_sink_base_init (gpointer klass)
-{
-  GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
-  gst_element_class_set_static_metadata (eklass, "GSettings video sink",
-      "Sink/Video",
-      "Video sink embedding the GSettings preferences for video input",
-      "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
-}
-
-static void
-gst_gsettings_video_sink_class_init (GstGSettingsVideoSinkClass * klass)
-{
-  GObjectClass *oklass = G_OBJECT_CLASS (klass);
-  GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
-  oklass->finalize = gst_gsettings_video_sink_finalize;
-
-  eklass->change_state = gst_gsettings_video_sink_change_state;
-}
diff --git a/ext/gsettings/gstgsettingsvideosink.h b/ext/gsettings/gstgsettingsvideosink.h
deleted file mode 100644
index d1f9bc6..0000000
--- a/ext/gsettings/gstgsettingsvideosink.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* GStreamer
- * Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_GSETTINGS_VIDEO_SINK_H__
-#define __GST_GSETTINGS_VIDEO_SINK_H__
-
-#include <gst/gst.h>
-#include <gio/gio.h>
-#include "gstswitchsink.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_GSETTINGS_VIDEO_SINK \
-  (gst_gsettings_video_sink_get_type ())
-#define GST_GSETTINGS_VIDEO_SINK(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GSETTINGS_VIDEO_SINK, \
-                               GstGSettingsVideoSink))
-#define GST_GSETTINGS_VIDEO_SINK_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_GSETTINGS_VIDEO_SINK, \
-                            GstGSettingsVideoSinkClass))
-#define GST_IS_GSETTINGS_VIDEO_SINK(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GSETTINGS_VIDEO_SINK))
-#define GST_IS_GSETTINGS_VIDEO_SINK_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GSETTINGS_VIDEO_SINK))
-
-typedef struct _GstGSettingsVideoSink {
-  GstSwitchSink parent;
-
-  GSettings *settings;
-
-  GMainContext *context;
-  GMainLoop *loop;
-  gulong changed_id;
-
-  gchar *gsettings_str;
-} GstGSettingsVideoSink;
-
-typedef struct _GstGSettingsVideoSinkClass {
-  GstSwitchSinkClass parent_class;
-} GstGSettingsVideoSinkClass;
-
-GType   gst_gsettings_video_sink_get_type   (void);
-
-G_END_DECLS
-
-#endif /* __GST_GSETTINGS_VIDEO_SINK_H__ */
diff --git a/ext/gsettings/gstgsettingsvideosrc.c b/ext/gsettings/gstgsettingsvideosrc.c
deleted file mode 100644
index 2b76867..0000000
--- a/ext/gsettings/gstgsettingsvideosrc.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/* GStreamer
- * Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-/**
- * SECTION:element-gsettingsvideosrc
- *
- * This element outputs sound to the videosrc that has been configured in
- * GSettings by the user.
- * 
- * <refsect2>
- * <title>Example launch line</title>
- * |[
- * gst-launch gsettingsvideosrc ! videoconvert ! videoscale ! autovideosink
- * ]| Play from configured videosrc
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gst/gst.h>
-#include <gst/glib-compat-private.h>
-#include <string.h>
-
-#include "gstgsettingsvideosrc.h"
-#include "gstgsettings.h"
-
-GST_BOILERPLATE (GstGSettingsVideoSrc, gst_gsettings_video_src, GstSwitchSrc,
-    GST_TYPE_SWITCH_SRC);
-
-static gboolean
-gst_gsettings_video_src_change_child (GstGSettingsVideoSrc * src)
-{
-  gchar *new_string;
-  GError *err = NULL;
-  GstElement *new_kid;
-
-  GST_OBJECT_LOCK (src);
-  new_string =
-      g_settings_get_string (src->settings, GST_GSETTINGS_KEY_VIDEOSRC);
-
-  if (new_string != NULL && src->gsettings_str != NULL &&
-      (strlen (new_string) == 0 ||
-          strcmp (src->gsettings_str, new_string) == 0)) {
-    g_free (new_string);
-    GST_DEBUG_OBJECT (src,
-        "GSettings key was updated, but it didn't change. Ignoring");
-    GST_OBJECT_UNLOCK (src);
-    return TRUE;
-  }
-  GST_OBJECT_UNLOCK (src);
-
-  GST_DEBUG_OBJECT (src, "GSettings key changed from '%s' to '%s'",
-      GST_STR_NULL (src->gsettings_str), GST_STR_NULL (new_string));
-
-  if (new_string) {
-    new_kid = gst_parse_bin_from_description (new_string, TRUE, &err);
-    if (err) {
-      GST_ERROR_OBJECT (src, "error creating bin '%s': %s", new_string,
-          err->message);
-      g_error_free (err);
-    }
-  } else {
-    new_kid = NULL;
-  }
-
-  if (new_kid == NULL) {
-    GST_ELEMENT_ERROR (src, LIBRARY, SETTINGS, (NULL),
-        ("Failed to render video src from GSettings"));
-    goto fail;
-  }
-
-  if (!gst_switch_src_set_child (GST_SWITCH_SRC (src), new_kid)) {
-    GST_WARNING_OBJECT (src, "Failed to update child element");
-    goto fail;
-  }
-
-  g_free (src->gsettings_str);
-  src->gsettings_str = new_string;
-
-  return TRUE;
-
-fail:
-  g_free (new_string);
-  return FALSE;
-}
-
-static void
-on_changed (GSettings * settings, gchar * key, GstGSettingsVideoSrc * src)
-{
-  if (!g_str_equal (key, "videosrc"))
-    return;
-
-  gst_gsettings_video_src_change_child (src);
-}
-
-static gboolean
-gst_gsettings_video_src_start (GstGSettingsVideoSrc * src)
-{
-  GError *err = NULL;
-  GThread *thread;
-
-  src->loop = g_main_loop_new (src->context, FALSE);
-
-  thread =
-      g_thread_create ((GThreadFunc) g_main_loop_run, src->loop, FALSE, &err);
-  if (!thread) {
-    GST_ELEMENT_ERROR (src, CORE, STATE_CHANGE, (NULL),
-        ("Failed to create new thread: %s", err->message));
-    g_error_free (err);
-    g_main_loop_unref (src->loop);
-    src->loop = NULL;
-    return FALSE;
-  }
-
-  g_main_context_push_thread_default (src->context);
-  src->settings = g_settings_new (GST_GSETTINGS_SCHEMA);
-  src->changed_id =
-      g_signal_connect_data (G_OBJECT (src->settings), "changed",
-      G_CALLBACK (on_changed), gst_object_ref (src),
-      (GClosureNotify) gst_object_unref, 0);
-  g_main_context_pop_thread_default (src->context);
-
-  return TRUE;
-}
-
-static gboolean
-gst_gsettings_video_src_reset (GstGSettingsVideoSrc * src)
-{
-  gst_switch_src_set_child (GST_SWITCH_SRC (src), NULL);
-
-  if (src->changed_id) {
-    g_signal_handler_disconnect (src->settings, src->changed_id);
-    src->changed_id = 0;
-  }
-
-  if (src->loop) {
-    g_main_loop_quit (src->loop);
-    g_main_loop_unref (src->loop);
-    src->loop = NULL;
-  }
-
-  if (src->settings) {
-    g_object_unref (src->settings);
-    src->settings = NULL;
-  }
-
-  GST_OBJECT_LOCK (src);
-  g_free (src->gsettings_str);
-  src->gsettings_str = NULL;
-  GST_OBJECT_UNLOCK (src);
-
-  return TRUE;
-}
-
-static void
-gst_gsettings_video_src_finalize (GObject * object)
-{
-  GstGSettingsVideoSrc *src = GST_GSETTINGS_VIDEO_SRC (object);
-
-  g_free (src->gsettings_str);
-  g_main_context_unref (src->context);
-
-  GST_CALL_PARENT (G_OBJECT_CLASS, finalize, ((GObject *) (src)));
-}
-
-static GstStateChangeReturn
-gst_gsettings_video_src_change_state (GstElement * element,
-    GstStateChange transition)
-{
-  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-  GstGSettingsVideoSrc *src = GST_GSETTINGS_VIDEO_SRC (element);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_NULL_TO_READY:
-      if (!gst_gsettings_video_src_start (src))
-        return GST_STATE_CHANGE_FAILURE;
-
-      if (!gst_gsettings_video_src_change_child (src)) {
-        gst_gsettings_video_src_reset (src);
-        return GST_STATE_CHANGE_FAILURE;
-      }
-      break;
-    default:
-      break;
-  }
-
-  ret = GST_CALL_PARENT_WITH_DEFAULT (GST_ELEMENT_CLASS, change_state,
-      (element, transition), GST_STATE_CHANGE_SUCCESS);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_READY_TO_NULL:
-      gst_gsettings_video_src_reset (src);
-      break;
-    default:
-      break;
-  }
-
-  return ret;
-}
-
-static void
-gst_gsettings_video_src_init (GstGSettingsVideoSrc * src,
-    GstGSettingsVideoSrcClass * g_class)
-{
-  src->context = g_main_context_new ();
-  gst_gsettings_video_src_reset (src);
-}
-
-static void
-gst_gsettings_video_src_base_init (gpointer klass)
-{
-  GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
-  gst_element_class_set_static_metadata (eklass, "GSettings video src",
-      "Src/Video",
-      "Video src embedding the GSettings preferences for video input",
-      "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
-}
-
-static void
-gst_gsettings_video_src_class_init (GstGSettingsVideoSrcClass * klass)
-{
-  GObjectClass *oklass = G_OBJECT_CLASS (klass);
-  GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-
-  oklass->finalize = gst_gsettings_video_src_finalize;
-
-  eklass->change_state = gst_gsettings_video_src_change_state;
-}
diff --git a/ext/gsettings/gstgsettingsvideosrc.h b/ext/gsettings/gstgsettingsvideosrc.h
deleted file mode 100644
index 4b7a6cd..0000000
--- a/ext/gsettings/gstgsettingsvideosrc.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* GStreamer
- * Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_GSETTINGS_VIDEO_SRC_H__
-#define __GST_GSETTINGS_VIDEO_SRC_H__
-
-#include <gst/gst.h>
-#include <gio/gio.h>
-#include "gstswitchsrc.h"
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_GSETTINGS_VIDEO_SRC \
-  (gst_gsettings_video_src_get_type ())
-#define GST_GSETTINGS_VIDEO_SRC(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GSETTINGS_VIDEO_SRC, \
-                               GstGSettingsVideoSrc))
-#define GST_GSETTINGS_VIDEO_SRC_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_GSETTINGS_VIDEO_SRC, \
-                            GstGSettingsVideoSrcClass))
-#define GST_IS_GSETTINGS_VIDEO_SRC(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GSETTINGS_VIDEO_SRC))
-#define GST_IS_GSETTINGS_VIDEO_SRC_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GSETTINGS_VIDEO_SRC))
-
-typedef struct _GstGSettingsVideoSrc {
-  GstSwitchSrc parent;
-
-  GSettings *settings;
-
-  GMainContext *context;
-  GMainLoop *loop;
-  gulong changed_id;
-
-  gchar *gsettings_str;
-} GstGSettingsVideoSrc;
-
-typedef struct _GstGSettingsVideoSrcClass {
-  GstSwitchSrcClass parent_class;
-} GstGSettingsVideoSrcClass;
-
-GType   gst_gsettings_video_src_get_type   (void);
-
-G_END_DECLS
-
-#endif /* __GST_GSETTINGS_VIDEO_SRC_H__ */
diff --git a/ext/gsettings/gstswitchsink.c b/ext/gsettings/gstswitchsink.c
deleted file mode 100644
index ce042ce..0000000
--- a/ext/gsettings/gstswitchsink.c
+++ /dev/null
@@ -1,270 +0,0 @@
-/* GStreamer
- * Copyright (c) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * Copyright (c) 2006 Jürg Billeter <j@bitron.ch>
- * Copyright (c) 2007 Jan Schmidt <thaytan@noraisin.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <string.h>
-
-#include "gstswitchsink.h"
-
-GST_DEBUG_CATEGORY_STATIC (switch_debug);
-#define GST_CAT_DEFAULT switch_debug
-
-static void gst_switch_sink_dispose (GObject * object);
-static GstStateChangeReturn
-gst_switch_sink_change_state (GstElement * element, GstStateChange transition);
-
-enum
-{
-  PROP_0
-};
-
-GST_BOILERPLATE (GstSwitchSink, gst_switch_sink, GstBin, GST_TYPE_BIN);
-
-static void
-gst_switch_sink_base_init (gpointer klass)
-{
-  GST_DEBUG_CATEGORY_INIT (switch_debug, "switchsink", 0, "switchsink element");
-}
-
-static void
-gst_switch_sink_class_init (GstSwitchSinkClass * klass)
-{
-  GObjectClass *oklass = G_OBJECT_CLASS (klass);
-  GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-  static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
-      GST_PAD_SINK,
-      GST_PAD_ALWAYS,
-      GST_STATIC_CAPS_ANY);
-  GstPadTemplate *child_pad_templ;
-
-  oklass->dispose = gst_switch_sink_dispose;
-  eklass->change_state = gst_switch_sink_change_state;
-
-  /* Provide a default pad template if the child didn't */
-  child_pad_templ = gst_element_class_get_pad_template (eklass, "sink");
-  if (child_pad_templ == NULL) {
-    gst_element_class_add_pad_template (eklass,
-        gst_static_pad_template_get (&sink_template));
-  }
-}
-
-static gboolean
-gst_switch_sink_reset (GstSwitchSink * sink)
-{
-  /* this will install fakesink if no other child has been set,
-   * otherwise we rely on the subclass to know when to unset its
-   * custom kid */
-  if (sink->kid == NULL) {
-    return gst_switch_sink_set_child (sink, NULL);
-  }
-
-  return TRUE;
-}
-
-static void
-gst_switch_sink_init (GstSwitchSink * sink, GstSwitchSinkClass * g_class)
-{
-  GstElementClass *eklass = GST_ELEMENT_GET_CLASS (sink);
-  GstPadTemplate *templ;
-
-  templ = gst_element_class_get_pad_template (eklass, "sink");
-  sink->pad = gst_ghost_pad_new_no_target_from_template ("sink", templ);
-  gst_element_add_pad (GST_ELEMENT (sink), sink->pad);
-
-  gst_switch_sink_reset (sink);
-
-  GST_OBJECT_FLAG_SET (sink, GST_ELEMENT_IS_SINK);
-}
-
-static void
-gst_switch_sink_dispose (GObject * object)
-{
-  GstSwitchSink *sink = GST_SWITCH_SINK (object);
-  GstObject *new_kid, *kid;
-
-  GST_OBJECT_LOCK (sink);
-  new_kid = GST_OBJECT_CAST (sink->new_kid);
-  sink->new_kid = NULL;
-
-  kid = GST_OBJECT_CAST (sink->kid);
-  sink->kid = NULL;
-  GST_OBJECT_UNLOCK (sink);
-
-  gst_object_replace (&new_kid, NULL);
-  gst_object_replace (&kid, NULL);
-
-  GST_CALL_PARENT (G_OBJECT_CLASS, dispose, (object));
-}
-
-static gboolean
-gst_switch_sink_commit_new_kid (GstSwitchSink * sink)
-{
-  GstPad *targetpad;
-  GstState kid_state;
-  GstElement *new_kid, *old_kid;
-  gboolean is_fakesink = FALSE;
-  GstBus *bus;
-
-  /* need locking around member accesses */
-  GST_OBJECT_LOCK (sink);
-  /* If we're currently changing state, set the child to the next state
-   * we're transitioning too, rather than our current state which is 
-   * about to change */
-  if (GST_STATE_NEXT (sink) != GST_STATE_VOID_PENDING)
-    kid_state = GST_STATE_NEXT (sink);
-  else
-    kid_state = GST_STATE (sink);
-
-  new_kid = sink->new_kid ? gst_object_ref (sink->new_kid) : NULL;
-  sink->new_kid = NULL;
-  GST_OBJECT_UNLOCK (sink);
-
-  /* Fakesink by default if NULL is passed as the new child */
-  if (new_kid == NULL) {
-    GST_DEBUG_OBJECT (sink, "Replacing kid with fakesink");
-    new_kid = gst_element_factory_make ("fakesink", "testsink");
-    if (new_kid == NULL) {
-      GST_ERROR_OBJECT (sink, "Failed to create fakesink");
-      return FALSE;
-    }
-    /* Add a reference, as it would if the element came from sink->new_kid */
-    gst_object_ref (new_kid);
-    g_object_set (new_kid, "sync", TRUE, NULL);
-    is_fakesink = TRUE;
-  } else {
-    GST_DEBUG_OBJECT (sink, "Setting new kid");
-  }
-
-  /* set temporary bus of our own to catch error messages from the child
-   * (could we just set our own bus on it, or would the state change messages
-   * from the not-yet-added element confuse the state change algorithm? Let's
-   * play it safe for now) */
-  bus = gst_bus_new ();
-  gst_element_set_bus (new_kid, bus);
-  gst_object_unref (bus);
-
-  if (gst_element_set_state (new_kid, kid_state) == GST_STATE_CHANGE_FAILURE) {
-    GstMessage *msg;
-
-    /* check if child posted an error message and if so re-post it on our bus
-     * so that the application gets to see a decent error and not our generic
-     * fallback error message which is completely indecipherable to the user */
-    msg = gst_bus_pop_filtered (GST_ELEMENT_BUS (new_kid), GST_MESSAGE_ERROR);
-    if (msg) {
-      GST_INFO_OBJECT (sink, "Forwarding kid error: %" GST_PTR_FORMAT, msg);
-      gst_element_post_message (GST_ELEMENT (sink), msg);
-    }
-    GST_ELEMENT_ERROR (sink, CORE, STATE_CHANGE, (NULL),
-        ("Failed to set state on new child."));
-    gst_element_set_bus (new_kid, NULL);
-    gst_object_unref (new_kid);
-    return FALSE;
-  }
-  gst_element_set_bus (new_kid, NULL);
-  gst_bin_add (GST_BIN (sink), new_kid);
-
-  /* Now, replace the existing child */
-  GST_OBJECT_LOCK (sink);
-  old_kid = sink->kid;
-  sink->kid = new_kid;
-  /* Mark whether a custom kid or fakesink has been installed */
-  sink->have_kid = !is_fakesink;
-  GST_OBJECT_UNLOCK (sink);
-
-  /* kill old element */
-  if (old_kid) {
-    GST_DEBUG_OBJECT (sink, "Removing old kid %" GST_PTR_FORMAT, old_kid);
-    gst_element_set_state (old_kid, GST_STATE_NULL);
-    gst_bin_remove (GST_BIN (sink), old_kid);
-    gst_object_unref (old_kid);
-    /* Don't lose the SINK flag */
-    GST_OBJECT_FLAG_SET (sink, GST_ELEMENT_IS_SINK);
-  }
-
-  /* re-attach ghostpad */
-  GST_DEBUG_OBJECT (sink, "Creating new ghostpad");
-  targetpad = gst_element_get_static_pad (sink->kid, "sink");
-  gst_ghost_pad_set_target (GST_GHOST_PAD (sink->pad), targetpad);
-  gst_object_unref (targetpad);
-  GST_DEBUG_OBJECT (sink, "done changing child of switchsink");
-
-  /* FIXME: Push new-segment info and pre-roll buffer(s) into the kid */
-
-  return TRUE;
-}
-
-gboolean
-gst_switch_sink_set_child (GstSwitchSink * sink, GstElement * new_kid)
-{
-  GstState cur, next;
-  GstElement **p_kid;
-
-  /* Nothing to do if clearing the child and we've already installed fakesink */
-  if (new_kid == NULL && sink->kid != NULL && sink->have_kid == FALSE)
-    return TRUE;
-
-  /* Store the new kid to be committed later */
-  GST_OBJECT_LOCK (sink);
-  cur = GST_STATE (sink);
-  next = GST_STATE_NEXT (sink);
-  p_kid = &sink->new_kid;
-  gst_object_replace ((GstObject **) p_kid, (GstObject *) new_kid);
-  GST_OBJECT_UNLOCK (sink);
-  if (new_kid)
-    gst_object_unref (new_kid);
-
-  /* Sometime, it would be lovely to allow sink changes even when
-   * already running, but this involves sending an appropriate new-segment
-   * and possibly prerolling etc */
-  /* FIXME: Block the pad and replace the kid when it completes */
-  if (cur > GST_STATE_READY || next == GST_STATE_PAUSED) {
-    GST_DEBUG_OBJECT (sink,
-        "Switch-sink is already running. Ignoring change of child.");
-    gst_object_unref (new_kid);
-    return TRUE;
-  }
-
-  return gst_switch_sink_commit_new_kid (sink);
-}
-
-static GstStateChangeReturn
-gst_switch_sink_change_state (GstElement * element, GstStateChange transition)
-{
-  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-  GstSwitchSink *sink = GST_SWITCH_SINK (element);
-
-  ret = GST_CALL_PARENT_WITH_DEFAULT (GST_ELEMENT_CLASS, change_state,
-      (element, transition), GST_STATE_CHANGE_SUCCESS);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_READY_TO_NULL:
-      if (!gst_switch_sink_reset (sink))
-        ret = GST_STATE_CHANGE_FAILURE;
-      break;
-    default:
-      break;
-  }
-
-  return ret;
-}
diff --git a/ext/gsettings/gstswitchsink.h b/ext/gsettings/gstswitchsink.h
deleted file mode 100644
index d0b3f68..0000000
--- a/ext/gsettings/gstswitchsink.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* GStreamer
- * Copyright (c) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * Copyright (c) 2007 Jan Schmidt <thaytan@mad.scientist.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_SWITCH_SINK_H__
-#define __GST_SWITCH_SINK_H__
-
-#include <gst/gst.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_SWITCH_SINK \
-  (gst_switch_sink_get_type ())
-#define GST_SWITCH_SINK(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_SWITCH_SINK, \
-                               GstSwitchSink))
-#define GST_SWITCH_SINK_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_SWITCH_SINK, \
-                            GstSwitchSinkClass))
-#define GST_IS_SWITCH_SINK(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_SWITCH_SINK))
-#define GST_IS_SWITCH_SINK_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_SWITCH_SINK))
-
-typedef struct _GstSwitchSink {
-  GstBin parent;
-
-  GstElement *kid;
-  GstElement *new_kid;
-  GstPad *pad;
-
-  /* If a custom child has been set... */
-  gboolean have_kid;
-} GstSwitchSink;
-
-typedef struct _GstSwitchSinkClass {
-  GstBinClass parent_class;
-} GstSwitchSinkClass;
-
-GType   gst_switch_sink_get_type   (void);
-
-gboolean gst_switch_sink_set_child (GstSwitchSink *ssink, GstElement *new_kid);
-
-G_END_DECLS
-
-#endif /* __GST_SWITCH_SINK_H__ */
diff --git a/ext/gsettings/gstswitchsrc.c b/ext/gsettings/gstswitchsrc.c
deleted file mode 100644
index f25d068..0000000
--- a/ext/gsettings/gstswitchsrc.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/* GStreamer
- * Copyright (c) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * Copyright (c) 2006 Jürg Billeter <j@bitron.ch>
- * Copyright (c) 2007 Jan Schmidt <thaytan@noraisin.net>
- * Copyright (c) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <string.h>
-
-#include "gstswitchsrc.h"
-
-GST_DEBUG_CATEGORY_STATIC (switch_debug);
-#define GST_CAT_DEFAULT switch_debug
-
-static void gst_switch_src_dispose (GObject * object);
-static GstStateChangeReturn
-gst_switch_src_change_state (GstElement * element, GstStateChange transition);
-
-GST_BOILERPLATE (GstSwitchSrc, gst_switch_src, GstBin, GST_TYPE_BIN);
-
-static void
-gst_switch_src_base_init (gpointer klass)
-{
-  GST_DEBUG_CATEGORY_INIT (switch_debug, "switchsrc", 0, "switchsrc element");
-}
-
-static void
-gst_switch_src_class_init (GstSwitchSrcClass * klass)
-{
-  GObjectClass *oklass = G_OBJECT_CLASS (klass);
-  GstElementClass *eklass = GST_ELEMENT_CLASS (klass);
-  static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
-      GST_PAD_SRC,
-      GST_PAD_ALWAYS,
-      GST_STATIC_CAPS_ANY);
-  GstPadTemplate *child_pad_templ;
-
-  oklass->dispose = gst_switch_src_dispose;
-  eklass->change_state = gst_switch_src_change_state;
-
-  /* Provide a default pad template if the child didn't */
-  child_pad_templ = gst_element_class_get_pad_template (eklass, "src");
-  if (child_pad_templ == NULL) {
-    gst_element_class_add_pad_template (eklass,
-        gst_static_pad_template_get (&src_template));
-  }
-}
-
-static gboolean
-gst_switch_src_reset (GstSwitchSrc * src)
-{
-  /* this will install fakesrc if no other child has been set,
-   * otherwise we rely on the subclass to know when to unset its
-   * custom kid */
-  if (src->kid == NULL) {
-    return gst_switch_src_set_child (src, NULL);
-  }
-
-  return TRUE;
-}
-
-static void
-gst_switch_src_init (GstSwitchSrc * src, GstSwitchSrcClass * g_class)
-{
-  GstElementClass *eklass = GST_ELEMENT_GET_CLASS (src);
-  GstPadTemplate *templ;
-
-  templ = gst_element_class_get_pad_template (eklass, "src");
-  src->pad = gst_ghost_pad_new_no_target_from_template ("src", templ);
-  gst_element_add_pad (GST_ELEMENT (src), src->pad);
-
-  gst_switch_src_reset (src);
-
-  GST_OBJECT_FLAG_SET (src, GST_ELEMENT_IS_SOURCE);
-}
-
-static void
-gst_switch_src_dispose (GObject * object)
-{
-  GstSwitchSrc *src = GST_SWITCH_SRC (object);
-  GstObject *new_kid, *kid;
-
-  GST_OBJECT_LOCK (src);
-  new_kid = GST_OBJECT_CAST (src->new_kid);
-  src->new_kid = NULL;
-
-  kid = GST_OBJECT_CAST (src->kid);
-  src->kid = NULL;
-  GST_OBJECT_UNLOCK (src);
-
-  gst_object_replace (&new_kid, NULL);
-  gst_object_replace (&kid, NULL);
-
-  GST_CALL_PARENT (G_OBJECT_CLASS, dispose, (object));
-}
-
-static gboolean
-gst_switch_src_commit_new_kid (GstSwitchSrc * src)
-{
-  GstPad *targetpad;
-  GstState kid_state;
-  GstElement *new_kid, *old_kid;
-  gboolean is_fakesrc = FALSE;
-  GstBus *bus;
-
-  /* need locking around member accesses */
-  GST_OBJECT_LOCK (src);
-  /* If we're currently changing state, set the child to the next state
-   * we're transitioning too, rather than our current state which is 
-   * about to change */
-  if (GST_STATE_NEXT (src) != GST_STATE_VOID_PENDING)
-    kid_state = GST_STATE_NEXT (src);
-  else
-    kid_state = GST_STATE (src);
-
-  new_kid = src->new_kid ? gst_object_ref (src->new_kid) : NULL;
-  src->new_kid = NULL;
-  GST_OBJECT_UNLOCK (src);
-
-  /* Fakesrc by default if NULL is passed as the new child */
-  if (new_kid == NULL) {
-    GST_DEBUG_OBJECT (src, "Replacing kid with fakesrc");
-    new_kid = gst_element_factory_make ("fakesrc", "testsrc");
-    if (new_kid == NULL) {
-      GST_ERROR_OBJECT (src, "Failed to create fakesrc");
-      return FALSE;
-    }
-    /* Add a reference, as it would if the element came from src->new_kid */
-    gst_object_ref (new_kid);
-    is_fakesrc = TRUE;
-  } else {
-    GST_DEBUG_OBJECT (src, "Setting new kid");
-  }
-
-  /* set temporary bus of our own to catch error messages from the child
-   * (could we just set our own bus on it, or would the state change messages
-   * from the not-yet-added element confuse the state change algorithm? Let's
-   * play it safe for now) */
-  bus = gst_bus_new ();
-  gst_element_set_bus (new_kid, bus);
-  gst_object_unref (bus);
-
-  if (gst_element_set_state (new_kid, kid_state) == GST_STATE_CHANGE_FAILURE) {
-    GstMessage *msg;
-
-    /* check if child posted an error message and if so re-post it on our bus
-     * so that the application gets to see a decent error and not our generic
-     * fallback error message which is completely indecipherable to the user */
-    msg = gst_bus_pop_filtered (GST_ELEMENT_BUS (new_kid), GST_MESSAGE_ERROR);
-    if (msg) {
-      GST_INFO_OBJECT (src, "Forwarding kid error: %" GST_PTR_FORMAT, msg);
-      gst_element_post_message (GST_ELEMENT (src), msg);
-    }
-    GST_ELEMENT_ERROR (src, CORE, STATE_CHANGE, (NULL),
-        ("Failed to set state on new child."));
-    gst_element_set_bus (new_kid, NULL);
-    gst_object_unref (new_kid);
-    return FALSE;
-  }
-  gst_element_set_bus (new_kid, NULL);
-  gst_bin_add (GST_BIN (src), new_kid);
-
-  /* Now, replace the existing child */
-  GST_OBJECT_LOCK (src);
-  old_kid = src->kid;
-  src->kid = new_kid;
-  /* Mark whether a custom kid or fakesrc has been installed */
-  src->have_kid = !is_fakesrc;
-  GST_OBJECT_UNLOCK (src);
-
-  /* kill old element */
-  if (old_kid) {
-    GST_DEBUG_OBJECT (src, "Removing old kid %" GST_PTR_FORMAT, old_kid);
-    gst_element_set_state (old_kid, GST_STATE_NULL);
-    gst_bin_remove (GST_BIN (src), old_kid);
-    gst_object_unref (old_kid);
-    /* Don't lose the SOURCE flag */
-    GST_OBJECT_FLAG_SET (src, GST_ELEMENT_IS_SOURCE);
-  }
-
-  /* re-attach ghostpad */
-  GST_DEBUG_OBJECT (src, "Creating new ghostpad");
-  targetpad = gst_element_get_static_pad (src->kid, "src");
-  gst_ghost_pad_set_target (GST_GHOST_PAD (src->pad), targetpad);
-  gst_object_unref (targetpad);
-  GST_DEBUG_OBJECT (src, "done changing child of switchsrc");
-
-  return TRUE;
-}
-
-gboolean
-gst_switch_src_set_child (GstSwitchSrc * src, GstElement * new_kid)
-{
-  GstState cur, next;
-  GstElement **p_kid;
-
-  /* Nothing to do if clearing the child and we've already installed fakesrc */
-  if (new_kid == NULL && src->kid != NULL && src->have_kid == FALSE)
-    return TRUE;
-
-  /* Store the new kid to be committed later */
-  GST_OBJECT_LOCK (src);
-  cur = GST_STATE (src);
-  next = GST_STATE_NEXT (src);
-  p_kid = &src->new_kid;
-  gst_object_replace ((GstObject **) p_kid, (GstObject *) new_kid);
-  GST_OBJECT_UNLOCK (src);
-  if (new_kid)
-    gst_object_unref (new_kid);
-
-  /* Sometime, it would be lovely to allow src changes even when
-   * already running */
-  /* FIXME: Block the pad and replace the kid when it completes */
-  if (cur > GST_STATE_READY || next == GST_STATE_PAUSED) {
-    GST_DEBUG_OBJECT (src,
-        "Switch-src is already running. Ignoring change of child.");
-    gst_object_unref (new_kid);
-    return TRUE;
-  }
-
-  return gst_switch_src_commit_new_kid (src);
-}
-
-static GstStateChangeReturn
-gst_switch_src_change_state (GstElement * element, GstStateChange transition)
-{
-  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
-  GstSwitchSrc *src = GST_SWITCH_SRC (element);
-
-  ret = GST_CALL_PARENT_WITH_DEFAULT (GST_ELEMENT_CLASS, change_state,
-      (element, transition), GST_STATE_CHANGE_SUCCESS);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_READY_TO_NULL:
-      if (!gst_switch_src_reset (src))
-        ret = GST_STATE_CHANGE_FAILURE;
-      break;
-    default:
-      break;
-  }
-
-  return ret;
-}
diff --git a/ext/gsettings/gstswitchsrc.h b/ext/gsettings/gstswitchsrc.h
deleted file mode 100644
index 6c698a1..0000000
--- a/ext/gsettings/gstswitchsrc.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* GStreamer
- *
- * Copyright (c) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * Copyright (c) 2005 Tim-Philipp Müller <tim centricular net>
- * Copyright (c) 2007 Jan Schmidt <thaytan@mad.scientist.com>
- * Copyright (c) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_SWITCH_SRC_H__
-#define __GST_SWITCH_SRC_H__
-
-#include <gst/gst.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_SWITCH_SRC            (gst_switch_src_get_type ())
-#define GST_SWITCH_SRC(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_SWITCH_SRC, GstSwitchSrc))
-#define GST_SWITCH_SRC_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_SWITCH_SRC, GstSwitchSrcClass))
-#define GST_IS_SWITCH_SRC(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_SWITCH_SRC))
-#define GST_IS_SWITCH_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_SWITCH_SRC))
-
-typedef struct _GstSwitchSrc {
-  GstBin parent;
-
-  GstElement *kid;
-  GstElement *new_kid;
-  GstPad *pad;
-
-  /* If a custom child has been set... */
-  gboolean have_kid;
-} GstSwitchSrc;
-
-typedef struct _GstSwitchSrcClass {
-  GstBinClass parent_class;
-} GstSwitchSrcClass;
-
-GType     gst_switch_src_get_type   (void);
-gboolean  gst_switch_src_set_child  (GstSwitchSrc *ssrc, GstElement *new_kid);
-
-G_END_DECLS
-
-#endif /* __GST_SWITCH_SRC_H__ */
diff --git a/ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml b/ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml
deleted file mode 100644
index ed0c4ce..0000000
--- a/ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<schemalist>
-  <schema id="org.freedesktop.gstreamer-1.0.default-elements" path="/desktop/gstreamer/1.0/default-elements/" gettext-domain="gst-plugins-bad-1.0">
-    <key name="sounds-audiosink" type="s">
-      <default>"autoaudiosink"</default>
-      <summary>default GStreamer sound events audiosink</summary>
-      <description>GStreamer can play audio using any number of
-      output elements. Some possible choices are osssink, pulsesink
-      and alsasink. The audiosink can be a partial pipeline instead
-      of just one element.</description>
-    </key>
-    <key name="sounds-audiosink-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer sound events audiosink</summary>
-      <description>Describes the selected audiosink element.</description>
-    </key>
-    <key name="chat-audiosink" type="s">
-      <default>"autoaudiosink"</default>
-      <summary>default GStreamer audiosink for Audio/Video Conferencing</summary>
-      <description>GStreamer can play audio using any number of
-      output elements. Some possible choices are osssink, pulsesink
-      and alsasink. The audiosink can be a partial pipeline instead
-      of just one element.</description>
-    </key>
-    <key name="chat-audiosink-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer audiosink for Audio/Video Conferencing</summary>
-      <description>Describes the selected audiosink element.</description>
-    </key>
-    <key name="music-audiosink" type="s">
-      <default>"autoaudiosink"</default>
-      <summary>default GStreamer audiosink for Music and Movies</summary>
-      <description>GStreamer can play audio using any number of
-      output elements. Some possible choices are osssink, pulsesink
-      and alsasink. The audiosink can be a partial pipeline instead
-      of just one element.</description>
-    </key>
-    <key name="music-audiosink-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer audiosink for Music and Movies</summary>
-      <description>Describes the selected audiosink element.</description>
-    </key>
-    <key name="videosink" type="s">
-      <default>"autovideosink"</default>
-      <summary>default GStreamer videosink</summary>
-      <description>GStreamer can play video using any number of
-      output elements. Some possible choices are xvimagesink,
-      ximagesink, sdlvideosink and aasink. The videosink can be
-      a partial pipeline instead of just one element.</description>
-    </key>
-    <key name="videosink-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer videosink</summary>
-      <description>Describes the selected videosink element.</description>
-    </key>
-    <key name="audiosrc" type="s">
-      <default>"alsasrc"</default>
-      <summary>default GStreamer audiosrc</summary>
-      <description>GStreamer can record audio using any number of
-      input elements. Some possible choices are osssrc, pulsesrc and
-      alsasrc. The audio source can be a partial pipeline instead of
-      just one element.</description>
-    </key>
-    <key name="audiosrc-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer audiosrc</summary>
-      <description>Describes the selected audiosrc element.</description>
-    </key>
-    <key name="videosrc" type="s">
-      <default>"v4l2src"</default>
-      <summary>default GStreamer videosrc</summary>
-      <description>GStreamer can record video from any number of input elements.
-      Some possible choices are v4lsrc, v4l2src and videotestsrc. The video
-      source can be a partial pipeline instead of just one element.</description>
-    </key>
-    <key name="videosrc-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer videosrc</summary>
-      <description>Describes the selected videosrc element.</description>
-    </key>
-    <key name="visualization" type="s">
-      <default>"goom"</default>
-      <summary>default GStreamer visualization</summary>
-      <description>GStreamer can put visualization plugins in a pipeline to
-      transform audio streams in video frames. Some possible choices are
-      goom, goom2k1 and synaesthesia. The visualization plugin can be a
-      partial pipeline instead of just one element.</description>
-    </key>
-    <key name="visualization-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer visualization</summary>
-      <description>Describes the selected visualization element.</description>
-    </key>
-  </schema>
-</schemalist>
diff --git a/ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in b/ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in
deleted file mode 100644
index 1a13b3a..0000000
--- a/ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in
+++ /dev/null
@@ -1,94 +0,0 @@
-<schemalist>
-  <schema id="org.freedesktop.gstreamer-@GST_API_VERSION@.default-elements" path="/desktop/gstreamer/@GST_API_VERSION@/default-elements/" gettext-domain="@GETTEXT_PACKAGE@">
-    <key name="sounds-audiosink" type="s">
-      <default>"@DEFAULT_AUDIOSINK@"</default>
-      <summary>default GStreamer sound events audiosink</summary>
-      <description>GStreamer can play audio using any number of
-      output elements. Some possible choices are osssink, pulsesink
-      and alsasink. The audiosink can be a partial pipeline instead
-      of just one element.</description>
-    </key>
-    <key name="sounds-audiosink-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer sound events audiosink</summary>
-      <description>Describes the selected audiosink element.</description>
-    </key>
-    <key name="chat-audiosink" type="s">
-      <default>"@DEFAULT_AUDIOSINK@"</default>
-      <summary>default GStreamer audiosink for Audio/Video Conferencing</summary>
-      <description>GStreamer can play audio using any number of
-      output elements. Some possible choices are osssink, pulsesink
-      and alsasink. The audiosink can be a partial pipeline instead
-      of just one element.</description>
-    </key>
-    <key name="chat-audiosink-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer audiosink for Audio/Video Conferencing</summary>
-      <description>Describes the selected audiosink element.</description>
-    </key>
-    <key name="music-audiosink" type="s">
-      <default>"@DEFAULT_AUDIOSINK@"</default>
-      <summary>default GStreamer audiosink for Music and Movies</summary>
-      <description>GStreamer can play audio using any number of
-      output elements. Some possible choices are osssink, pulsesink
-      and alsasink. The audiosink can be a partial pipeline instead
-      of just one element.</description>
-    </key>
-    <key name="music-audiosink-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer audiosink for Music and Movies</summary>
-      <description>Describes the selected audiosink element.</description>
-    </key>
-    <key name="videosink" type="s">
-      <default>"@DEFAULT_VIDEOSINK@"</default>
-      <summary>default GStreamer videosink</summary>
-      <description>GStreamer can play video using any number of
-      output elements. Some possible choices are xvimagesink,
-      ximagesink, sdlvideosink and aasink. The videosink can be
-      a partial pipeline instead of just one element.</description>
-    </key>
-    <key name="videosink-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer videosink</summary>
-      <description>Describes the selected videosink element.</description>
-    </key>
-    <key name="audiosrc" type="s">
-      <default>"@DEFAULT_AUDIOSRC@"</default>
-      <summary>default GStreamer audiosrc</summary>
-      <description>GStreamer can record audio using any number of
-      input elements. Some possible choices are osssrc, pulsesrc and
-      alsasrc. The audio source can be a partial pipeline instead of
-      just one element.</description>
-    </key>
-    <key name="audiosrc-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer audiosrc</summary>
-      <description>Describes the selected audiosrc element.</description>
-    </key>
-    <key name="videosrc" type="s">
-      <default>"@DEFAULT_VIDEOSRC@"</default>
-      <summary>default GStreamer videosrc</summary>
-      <description>GStreamer can record video from any number of input elements.
-      Some possible choices are v4lsrc, v4l2src and videotestsrc. The video
-      source can be a partial pipeline instead of just one element.</description>
-    </key>
-    <key name="videosrc-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer videosrc</summary>
-      <description>Describes the selected videosrc element.</description>
-    </key>
-    <key name="visualization" type="s">
-      <default>"@DEFAULT_VISUALIZER@"</default>
-      <summary>default GStreamer visualization</summary>
-      <description>GStreamer can put visualization plugins in a pipeline to
-      transform audio streams in video frames. Some possible choices are
-      goom, goom2k1 and synaesthesia. The visualization plugin can be a
-      partial pipeline instead of just one element.</description>
-    </key>
-    <key name="visualization-description" type="s">
-      <default>"Default"</default>
-      <summary>description for default GStreamer visualization</summary>
-      <description>Describes the selected visualization element.</description>
-    </key>
-  </schema>
-</schemalist>
diff --git a/ext/gsettings/plugin.c b/ext/gsettings/plugin.c
deleted file mode 100644
index b264967..0000000
--- a/ext/gsettings/plugin.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* GStreamer
- * Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gst/gst.h>
-
-#include "gstgsettingsaudiosrc.h"
-#include "gstgsettingsaudiosink.h"
-#include "gstgsettingsvideosrc.h"
-#include "gstgsettingsvideosink.h"
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
-  if (!gst_element_register (plugin, "gsettingsaudiosink", GST_RANK_NONE,
-          GST_TYPE_GSETTINGS_AUDIO_SINK) ||
-      !gst_element_register (plugin, "gsettingsaudiosrc", GST_RANK_NONE,
-          GST_TYPE_GSETTINGS_AUDIO_SRC) ||
-      !gst_element_register (plugin, "gsettingsvideosink", GST_RANK_NONE,
-          GST_TYPE_GSETTINGS_VIDEO_SINK) ||
-      !gst_element_register (plugin, "gsettingsvideosrc", GST_RANK_NONE,
-          GST_TYPE_GSETTINGS_VIDEO_SRC))
-    return FALSE;
-
-  return TRUE;
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
-    GST_VERSION_MINOR,
-    gsettings,
-    "GSettings plugin",
-    plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/ext/gsm/Makefile.in b/ext/gsm/Makefile.in
index a9f029e..8177cbf 100644
--- a/ext/gsm/Makefile.in
+++ b/ext/gsm/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/gtk/Makefile.in b/ext/gtk/Makefile.in
index 427fe0c..36c2551 100644
--- a/ext/gtk/Makefile.in
+++ b/ext/gtk/Makefile.in
@@ -119,16 +119,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -337,7 +336,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -359,7 +357,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -381,9 +378,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -545,6 +539,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -558,8 +553,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -646,8 +639,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -699,6 +690,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -719,6 +711,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -756,7 +750,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/gtk/gstgtkbasesink.c b/ext/gtk/gstgtkbasesink.c
index e192940..f0019bf 100644
--- a/ext/gtk/gstgtkbasesink.c
+++ b/ext/gtk/gstgtkbasesink.c
@@ -141,9 +141,16 @@
 static void
 gst_gtk_base_sink_finalize (GObject * object)
 {
-  GstGtkBaseSink *gtk_sink = GST_GTK_BASE_SINK (object);;
+  GstGtkBaseSink *gtk_sink = GST_GTK_BASE_SINK (object);
+
+  GST_OBJECT_LOCK (gtk_sink);
+  if (gtk_sink->window && gtk_sink->window_destroy_id)
+    g_signal_handler_disconnect (gtk_sink->window, gtk_sink->window_destroy_id);
+  if (gtk_sink->widget && gtk_sink->widget_destroy_id)
+    g_signal_handler_disconnect (gtk_sink->widget, gtk_sink->widget_destroy_id);
 
   g_clear_object (&gtk_sink->widget);
+  GST_OBJECT_UNLOCK (gtk_sink);
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -194,7 +201,7 @@
   /* Take the floating ref, other wise the destruction of the container will
    * make this widget disapear possibly before we are done. */
   gst_object_ref_sink (gtk_sink->widget);
-  g_signal_connect (gtk_sink->widget, "destroy",
+  gtk_sink->widget_destroy_id = g_signal_connect (gtk_sink->widget, "destroy",
       G_CALLBACK (widget_destroy_cb), gtk_sink);
 
   /* back pointer */
@@ -316,7 +323,7 @@
     gtk_window_set_default_size (GTK_WINDOW (gst_sink->window), 640, 480);
     gtk_window_set_title (GTK_WINDOW (gst_sink->window), klass->window_title);
     gtk_container_add (GTK_CONTAINER (gst_sink->window), toplevel);
-    g_signal_connect (gst_sink->window, "destroy",
+    gst_sink->window_destroy_id = g_signal_connect (gst_sink->window, "destroy",
         G_CALLBACK (window_destroy_cb), gst_sink);
   }
 
diff --git a/ext/gtk/gstgtkbasesink.h b/ext/gtk/gstgtkbasesink.h
index 7260cd5..ef8c284 100644
--- a/ext/gtk/gstgtkbasesink.h
+++ b/ext/gtk/gstgtkbasesink.h
@@ -69,6 +69,8 @@
   GBinding             *bind_ignore_alpha;
 
   GtkWidget            *window;
+  gulong               widget_destroy_id;
+  gulong               window_destroy_id;
 };
 
 /**
diff --git a/ext/gtk/gtkgstglwidget.c b/ext/gtk/gtkgstglwidget.c
index c4d53a2..c9ad0b6 100644
--- a/ext/gtk/gtkgstglwidget.c
+++ b/ext/gtk/gtkgstglwidget.c
@@ -260,6 +260,7 @@
 
     sync_meta = gst_buffer_get_gl_sync_meta (buffer);
     if (sync_meta) {
+      /* XXX: the set_sync() seems to be needed for resizing */
       gst_gl_sync_meta_set_sync_point (sync_meta, priv->context);
       gst_gl_sync_meta_wait (sync_meta, priv->other_context);
     }
diff --git a/ext/hls/Makefile.in b/ext/hls/Makefile.in
index 8e803f6..9661e7f 100644
--- a/ext/hls/Makefile.in
+++ b/ext/hls/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -329,7 +328,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -351,7 +349,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -373,9 +370,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -537,6 +531,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -550,8 +545,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -638,8 +631,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -691,6 +682,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -711,6 +703,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -748,7 +742,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/hls/gsthlsdemux.c b/ext/hls/gsthlsdemux.c
index 6c5468d..cf51d99 100644
--- a/ext/hls/gsthlsdemux.c
+++ b/ext/hls/gsthlsdemux.c
@@ -207,13 +207,10 @@
 gst_hls_demux_create_pad (GstHLSDemux * hlsdemux)
 {
   gchar *name;
-  GstPadTemplate *tmpl;
   GstPad *pad;
 
   name = g_strdup_printf ("src_%u", hlsdemux->srcpad_counter++);
-  tmpl = gst_static_pad_template_get (&srctemplate);
-  pad = gst_ghost_pad_new_no_target_from_template (name, tmpl);
-  gst_object_unref (tmpl);
+  pad = gst_pad_new_from_static_template (&srctemplate, name);
   g_free (name);
 
   return pad;
@@ -247,7 +244,8 @@
   gint64 current_sequence;
   GstM3U8MediaFile *file;
   guint64 bitrate;
-  gboolean snap_before, snap_after, snap_nearest;
+  gboolean snap_before, snap_after, snap_nearest, keyunit;
+  gboolean reverse;
 
   gst_event_parse_seek (seek, &rate, &format, &flags, &start_type, &start,
       &stop_type, &stop);
@@ -304,16 +302,15 @@
   file = GST_M3U8_MEDIA_FILE (hlsdemux->client->current->files->data);
   current_sequence = file->sequence;
   current_pos = 0;
-  target_pos = rate > 0 ? start : stop;
+  reverse = rate < 0;
+  target_pos = reverse ? stop : start;
 
   /* Snap to segment boundary. Improves seek performance on slow machines. */
-  snap_before = snap_after = snap_nearest = FALSE;
-  if ((flags & GST_SEEK_FLAG_SNAP_NEAREST) == GST_SEEK_FLAG_SNAP_NEAREST)
-    snap_nearest = TRUE;
-  else if (flags & GST_SEEK_FLAG_SNAP_BEFORE)
-    snap_before = TRUE;
-  else if (flags & GST_SEEK_FLAG_SNAP_AFTER)
-    snap_after = TRUE;
+  keyunit = ! !(flags & GST_SEEK_FLAG_KEY_UNIT);
+  snap_nearest =
+      (flags & GST_SEEK_FLAG_SNAP_NEAREST) == GST_SEEK_FLAG_SNAP_NEAREST;
+  snap_before = ! !(flags & GST_SEEK_FLAG_SNAP_BEFORE);
+  snap_after = ! !(flags & GST_SEEK_FLAG_SNAP_AFTER);
 
   /* FIXME: Here we need proper discont handling */
   for (walk = hlsdemux->client->current->files; walk; walk = walk->next) {
@@ -321,11 +318,19 @@
 
     current_sequence = file->sequence;
     current_file = walk;
-    if (snap_after || snap_nearest) {
+    if ((!reverse && snap_after) || snap_nearest) {
       if (current_pos >= target_pos)
         break;
       if (snap_nearest && target_pos - current_pos < file->duration / 2)
         break;
+    } else if (reverse && snap_after) {
+      /* check if the next fragment is our target, in this case we want to
+       * start from the previous fragment */
+      GstClockTime next_pos = current_pos + file->duration;
+
+      if (next_pos <= target_pos && target_pos < next_pos + file->duration) {
+        break;
+      }
     } else if (current_pos <= target_pos
         && target_pos < current_pos + file->duration) {
       break;
@@ -346,9 +351,18 @@
   hlsdemux->client->sequence_position = current_pos;
   GST_M3U8_CLIENT_UNLOCK (hlsdemux->client);
 
-  if (snap_before || snap_after || snap_nearest)
-    gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
-        current_pos, stop_type, stop, NULL);
+  /* Play from the end of the current selected segment */
+  if (reverse && (snap_before || snap_after || snap_nearest))
+    current_pos += file->duration;
+
+  if (keyunit || snap_before || snap_after || snap_nearest) {
+    if (!reverse)
+      gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
+          current_pos, stop_type, stop, NULL);
+    else
+      gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
+          start, stop_type, current_pos, NULL);
+  }
 
   return TRUE;
 }
diff --git a/ext/kate/Makefile.in b/ext/kate/Makefile.in
index 8fc3534..650799b 100644
--- a/ext/kate/Makefile.in
+++ b/ext/kate/Makefile.in
@@ -118,16 +118,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -329,7 +328,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -351,7 +349,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -373,9 +370,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -537,6 +531,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -550,8 +545,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -638,8 +631,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -691,6 +682,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -711,6 +703,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -748,7 +742,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/ladspa/Makefile.in b/ext/ladspa/Makefile.in
index 5b6ddaa..9c4f1d5 100644
--- a/ext/ladspa/Makefile.in
+++ b/ext/ladspa/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -328,7 +327,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -350,7 +348,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -372,9 +369,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -536,6 +530,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -549,8 +544,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -637,8 +630,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -690,6 +681,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -710,6 +702,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -747,7 +741,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/ladspa/gstladspafilter.c b/ext/ladspa/gstladspafilter.c
index 69d0e63..2d1ea45 100644
--- a/ext/ladspa/gstladspafilter.c
+++ b/ext/ladspa/gstladspafilter.c
@@ -105,20 +105,19 @@
       g_assert_not_reached ();
   }
 
-  GST_DEBUG_OBJECT (ladspa_debug, "transformed %" GST_PTR_FORMAT, ret);
+  GST_DEBUG_OBJECT (base, "transformed %" GST_PTR_FORMAT, ret);
 
   if (filter) {
     GstCaps *intersection;
 
-    GST_DEBUG_OBJECT (ladspa_debug, "Using filter caps %" GST_PTR_FORMAT,
-        filter);
+    GST_DEBUG_OBJECT (base, "Using filter caps %" GST_PTR_FORMAT, filter);
 
     intersection =
         gst_caps_intersect_full (filter, ret, GST_CAPS_INTERSECT_FIRST);
     gst_caps_unref (ret);
     ret = intersection;
 
-    GST_DEBUG_OBJECT (ladspa_debug, "Intersection %" GST_PTR_FORMAT, ret);
+    GST_DEBUG_OBJECT (base, "Intersection %" GST_PTR_FORMAT, ret);
   }
 
   gst_caps_unref (srccaps);
diff --git a/ext/libde265/Makefile.in b/ext/libde265/Makefile.in
index 85817da..6405abb 100644
--- a/ext/libde265/Makefile.in
+++ b/ext/libde265/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/libmms/Makefile.in b/ext/libmms/Makefile.in
index 65540f5..2a5336c 100644
--- a/ext/libmms/Makefile.in
+++ b/ext/libmms/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/libvisual/Makefile.in b/ext/libvisual/Makefile.in
index 7836d28..c86f3a4 100644
--- a/ext/libvisual/Makefile.in
+++ b/ext/libvisual/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -321,7 +320,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -343,7 +341,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -365,9 +362,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -529,6 +523,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -542,8 +537,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -630,8 +623,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -683,6 +674,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -703,6 +695,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -740,7 +734,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/lv2/Makefile.in b/ext/lv2/Makefile.in
index 37a0992..2004e5b 100644
--- a/ext/lv2/Makefile.in
+++ b/ext/lv2/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/mimic/Makefile.in b/ext/mimic/Makefile.in
index 80c93ff..1454831 100644
--- a/ext/mimic/Makefile.in
+++ b/ext/mimic/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/modplug/Makefile.in b/ext/modplug/Makefile.in
index 1466db5..7e2051a 100644
--- a/ext/modplug/Makefile.in
+++ b/ext/modplug/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/modplug/gstmodplug.cc b/ext/modplug/gstmodplug.cc
index 683fbaa..ff3641d 100644
--- a/ext/modplug/gstmodplug.cc
+++ b/ext/modplug/gstmodplug.cc
@@ -91,7 +91,7 @@
 #define DEFAULT_OVERSAMP         TRUE
 #define DEFAULT_NOISE_REDUCTION  TRUE
 
-#define FORMATS "{ "GST_AUDIO_NE (S32)", "GST_AUDIO_NE (S16)", U8 }"
+#define FORMATS "{ " GST_AUDIO_NE (S32) ", " GST_AUDIO_NE (S16) ", U8 }"
 
 static GstStaticPadTemplate modplug_src_template_factory =
 GST_STATIC_PAD_TEMPLATE ("src",
diff --git a/ext/mpeg2enc/Makefile.in b/ext/mpeg2enc/Makefile.in
index c4c10f0..fdf5aa2 100644
--- a/ext/mpeg2enc/Makefile.in
+++ b/ext/mpeg2enc/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -327,7 +326,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -349,7 +347,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -371,9 +368,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -535,6 +529,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -548,8 +543,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -636,8 +629,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -689,6 +680,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -709,6 +701,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -746,7 +740,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/mpg123/Makefile.am b/ext/mpg123/Makefile.am
deleted file mode 100644
index 6c96207..0000000
--- a/ext/mpg123/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-plugin_LTLIBRARIES = libgstmpg123.la
-
-libgstmpg123_la_SOURCES = gstmpg123audiodec.c
-libgstmpg123_la_CFLAGS = -DGST_USE_UNSTABLE_API \
-	$(GST_PLUGINS_BASE_CFLAGS) \
-	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(MPG123_CFLAGS)
-libgstmpg123_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_API_VERSION@ \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(MPG123_LIBS)
-libgstmpg123_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstmpg123_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-
-noinst_HEADERS = gstmpg123audiodec.h
diff --git a/ext/mpg123/gstmpg123audiodec.c b/ext/mpg123/gstmpg123audiodec.c
deleted file mode 100644
index cfd017e..0000000
--- a/ext/mpg123/gstmpg123audiodec.c
+++ /dev/null
@@ -1,633 +0,0 @@
-/*  MP3 decoding plugin for GStreamer using the mpg123 library
- *  Copyright (C) 2012 Carlos Rafael Giani
- *
- *  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
- */
-
-/**
- * SECTION: element-mpg123audiodec
- * @see_also: lamemp3enc, mad
- *
- * Audio decoder for MPEG-1 layer 1/2/3 audio data.
- *
- * <refsect2>
- * <title>Example pipelines</title>
- * |[
- * gst-launch-1.0 filesrc location=music.mp3 ! mpegaudioparse ! mpg123audiodec ! audioconvert ! audioresample ! autoaudiosink
- * ]| Decode and play the mp3 file
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "gstmpg123audiodec.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-GST_DEBUG_CATEGORY_STATIC (mpg123_debug);
-#define GST_CAT_DEFAULT mpg123_debug
-
-/* Omitted sample formats that mpg123 supports (or at least can support):
- *  - 8bit integer signed
- *  - 8bit integer unsigned
- *  - a-law
- *  - mu-law
- *  - 64bit float
- *
- * The first four formats are not supported by the GstAudioDecoder base class.
- * (The internal gst_audio_format_from_caps_structure() call fails.)
- *
- * The 64bit float issue is tricky. mpg123 actually decodes to "real",
- * not necessarily to "float".
- *
- * "real" can be fixed point, 32bit float, 64bit float. There seems to be
- * no way how to find out which one of them is actually used.
- *
- * However, in all known installations, "real" equals 32bit float, so that's
- * what is used. */
-
-static GstStaticPadTemplate static_sink_template =
-GST_STATIC_PAD_TEMPLATE ("sink",
-    GST_PAD_SINK,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS ("audio/mpeg, "
-        "mpegversion = (int) 1, "
-        "layer = (int) [ 1, 3 ], "
-        "rate = (int) { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 }, "
-        "channels = (int) [ 1, 2 ], " "parsed = (boolean) true ")
-    );
-
-static gboolean gst_mpg123_audio_dec_start (GstAudioDecoder * dec);
-static gboolean gst_mpg123_audio_dec_stop (GstAudioDecoder * dec);
-static GstFlowReturn gst_mpg123_audio_dec_push_decoded_bytes (GstMpg123AudioDec
-    * mpg123_decoder, unsigned char const *decoded_bytes,
-    size_t const num_decoded_bytes);
-static GstFlowReturn gst_mpg123_audio_dec_handle_frame (GstAudioDecoder * dec,
-    GstBuffer * input_buffer);
-static gboolean gst_mpg123_audio_dec_set_format (GstAudioDecoder * dec,
-    GstCaps * input_caps);
-static void gst_mpg123_audio_dec_flush (GstAudioDecoder * dec, gboolean hard);
-
-G_DEFINE_TYPE (GstMpg123AudioDec, gst_mpg123_audio_dec, GST_TYPE_AUDIO_DECODER);
-
-static void
-gst_mpg123_audio_dec_class_init (GstMpg123AudioDecClass * klass)
-{
-  GstAudioDecoderClass *base_class;
-  GstElementClass *element_class;
-  GstPadTemplate *src_template, *sink_template;
-  int error;
-
-  GST_DEBUG_CATEGORY_INIT (mpg123_debug, "mpg123", 0, "mpg123 mp3 decoder");
-
-  base_class = GST_AUDIO_DECODER_CLASS (klass);
-  element_class = GST_ELEMENT_CLASS (klass);
-
-  gst_element_class_set_static_metadata (element_class,
-      "mpg123 mp3 decoder",
-      "Codec/Decoder/Audio",
-      "Decodes mp3 streams using the mpg123 library",
-      "Carlos Rafael Giani <dv@pseudoterminal.org>");
-
-  /* Not using static pad template for srccaps, since the comma-separated list
-   * of formats needs to be created depending on whatever mpg123 supports */
-  {
-    const int *format_list;
-    const long *rates_list;
-    size_t num, i;
-    GString *s;
-    GstCaps *src_template_caps;
-
-    s = g_string_new ("audio/x-raw, ");
-
-    mpg123_encodings (&format_list, &num);
-    g_string_append (s, "format = { ");
-    for (i = 0; i < num; ++i) {
-      switch (format_list[i]) {
-        case MPG123_ENC_SIGNED_16:
-          g_string_append (s, (i > 0) ? ", " : "");
-          g_string_append (s, GST_AUDIO_NE (S16));
-          break;
-        case MPG123_ENC_UNSIGNED_16:
-          g_string_append (s, (i > 0) ? ", " : "");
-          g_string_append (s, GST_AUDIO_NE (U16));
-          break;
-        case MPG123_ENC_SIGNED_24:
-          g_string_append (s, (i > 0) ? ", " : "");
-          g_string_append (s, GST_AUDIO_NE (S24));
-          break;
-        case MPG123_ENC_UNSIGNED_24:
-          g_string_append (s, (i > 0) ? ", " : "");
-          g_string_append (s, GST_AUDIO_NE (U24));
-          break;
-        case MPG123_ENC_SIGNED_32:
-          g_string_append (s, (i > 0) ? ", " : "");
-          g_string_append (s, GST_AUDIO_NE (S32));
-          break;
-        case MPG123_ENC_UNSIGNED_32:
-          g_string_append (s, (i > 0) ? ", " : "");
-          g_string_append (s, GST_AUDIO_NE (U32));
-          break;
-        case MPG123_ENC_FLOAT_32:
-          g_string_append (s, (i > 0) ? ", " : "");
-          g_string_append (s, GST_AUDIO_NE (F32));
-          break;
-        default:
-          GST_DEBUG ("Ignoring mpg123 format %d", format_list[i]);
-          break;
-      }
-    }
-    g_string_append (s, " }, ");
-
-    mpg123_rates (&rates_list, &num);
-    g_string_append (s, "rate = (int) { ");
-    for (i = 0; i < num; ++i) {
-      g_string_append_printf (s, "%s%lu", (i > 0) ? ", " : "", rates_list[i]);
-    }
-    g_string_append (s, "}, ");
-
-    g_string_append (s, "channels = (int) [ 1, 2 ], ");
-    g_string_append (s, "layout = (string) interleaved");
-
-    src_template_caps = gst_caps_from_string (s->str);
-    src_template = gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
-        src_template_caps);
-
-    g_string_free (s, TRUE);
-  }
-
-  sink_template = gst_static_pad_template_get (&static_sink_template);
-
-  gst_element_class_add_pad_template (element_class, sink_template);
-  gst_element_class_add_pad_template (element_class, src_template);
-
-  base_class->start = GST_DEBUG_FUNCPTR (gst_mpg123_audio_dec_start);
-  base_class->stop = GST_DEBUG_FUNCPTR (gst_mpg123_audio_dec_stop);
-  base_class->handle_frame =
-      GST_DEBUG_FUNCPTR (gst_mpg123_audio_dec_handle_frame);
-  base_class->set_format = GST_DEBUG_FUNCPTR (gst_mpg123_audio_dec_set_format);
-  base_class->flush = GST_DEBUG_FUNCPTR (gst_mpg123_audio_dec_flush);
-
-  error = mpg123_init ();
-  if (G_UNLIKELY (error != MPG123_OK))
-    GST_ERROR ("Could not initialize mpg123 library: %s",
-        mpg123_plain_strerror (error));
-  else
-    GST_INFO ("mpg123 library initialized");
-}
-
-
-void
-gst_mpg123_audio_dec_init (GstMpg123AudioDec * mpg123_decoder)
-{
-  mpg123_decoder->handle = NULL;
-  gst_audio_decoder_set_needs_format (GST_AUDIO_DECODER (mpg123_decoder), TRUE);
-  gst_audio_decoder_set_use_default_pad_acceptcaps (GST_AUDIO_DECODER_CAST
-      (mpg123_decoder), TRUE);
-  GST_PAD_SET_ACCEPT_TEMPLATE (GST_AUDIO_DECODER_SINK_PAD (mpg123_decoder));
-}
-
-
-static gboolean
-gst_mpg123_audio_dec_start (GstAudioDecoder * dec)
-{
-  GstMpg123AudioDec *mpg123_decoder;
-  int error;
-
-  mpg123_decoder = GST_MPG123_AUDIO_DEC (dec);
-  error = 0;
-
-  mpg123_decoder->handle = mpg123_new (NULL, &error);
-  mpg123_decoder->has_next_audioinfo = FALSE;
-  mpg123_decoder->frame_offset = 0;
-
-  /* Initially, the mpg123 handle comes with a set of default formats
-   * supported. This clears this set.  This is necessary, since only one
-   * format shall be supported (see set_format for more). */
-  mpg123_format_none (mpg123_decoder->handle);
-
-  /* Built-in mpg123 support for gapless decoding is disabled for now,
-   * since it does not work well with seeking */
-  mpg123_param (mpg123_decoder->handle, MPG123_REMOVE_FLAGS, MPG123_GAPLESS, 0);
-  /* Tells mpg123 to use a small read-ahead buffer for better MPEG sync;
-   * essential for MP3 radio streams */
-  mpg123_param (mpg123_decoder->handle, MPG123_ADD_FLAGS, MPG123_SEEKBUFFER, 0);
-  /* Sets the resync limit to the end of the stream (otherwise mpg123 may give
-   * up on decoding prematurely, especially with mp3 web radios) */
-  mpg123_param (mpg123_decoder->handle, MPG123_RESYNC_LIMIT, -1, 0);
-#if MPG123_API_VERSION >= 36
-  /* The precise API version where MPG123_AUTO_RESAMPLE appeared is
-   * somewhere between 29 and 36 */
-  /* Don't let mpg123 resample output */
-  mpg123_param (mpg123_decoder->handle, MPG123_REMOVE_FLAGS,
-      MPG123_AUTO_RESAMPLE, 0);
-#endif
-  /* Don't let mpg123 print messages to stdout/stderr */
-  mpg123_param (mpg123_decoder->handle, MPG123_ADD_FLAGS, MPG123_QUIET, 0);
-
-  /* Open in feed mode (= encoded data is fed manually into the handle). */
-  error = mpg123_open_feed (mpg123_decoder->handle);
-
-  if (G_UNLIKELY (error != MPG123_OK)) {
-    GST_ELEMENT_ERROR (dec, LIBRARY, INIT, (NULL),
-        ("%s", mpg123_strerror (mpg123_decoder->handle)));
-    mpg123_close (mpg123_decoder->handle);
-    mpg123_delete (mpg123_decoder->handle);
-    mpg123_decoder->handle = NULL;
-    return FALSE;
-  }
-
-  GST_INFO_OBJECT (dec, "mpg123 decoder started");
-
-  return TRUE;
-}
-
-
-static gboolean
-gst_mpg123_audio_dec_stop (GstAudioDecoder * dec)
-{
-  GstMpg123AudioDec *mpg123_decoder = GST_MPG123_AUDIO_DEC (dec);
-
-  if (G_LIKELY (mpg123_decoder->handle != NULL)) {
-    mpg123_close (mpg123_decoder->handle);
-    mpg123_delete (mpg123_decoder->handle);
-    mpg123_decoder->handle = NULL;
-  }
-
-  GST_INFO_OBJECT (dec, "mpg123 decoder stopped");
-
-  return TRUE;
-}
-
-
-static GstFlowReturn
-gst_mpg123_audio_dec_push_decoded_bytes (GstMpg123AudioDec * mpg123_decoder,
-    unsigned char const *decoded_bytes, size_t const num_decoded_bytes)
-{
-  GstBuffer *output_buffer;
-  GstAudioDecoder *dec;
-
-  output_buffer = NULL;
-  dec = GST_AUDIO_DECODER (mpg123_decoder);
-
-  if ((num_decoded_bytes == 0) || (decoded_bytes == NULL)) {
-    /* This occurs in the first few frames, which do not carry data; once
-     * MPG123_AUDIO_DEC_NEW_FORMAT is received, the empty frames stop occurring */
-    GST_DEBUG_OBJECT (mpg123_decoder,
-        "cannot decode yet, need more data -> no output buffer to push");
-    return GST_FLOW_OK;
-  }
-
-  output_buffer = gst_buffer_new_allocate (NULL, num_decoded_bytes, NULL);
-
-  if (output_buffer == NULL) {
-    /* This is necessary to advance playback in time,
-     * even when nothing was decoded. */
-    return gst_audio_decoder_finish_frame (dec, NULL, 1);
-  } else {
-    GstMapInfo info;
-
-    if (gst_buffer_map (output_buffer, &info, GST_MAP_WRITE)) {
-      memcpy (info.data, decoded_bytes, num_decoded_bytes);
-      gst_buffer_unmap (output_buffer, &info);
-    } else {
-      GST_ERROR_OBJECT (mpg123_decoder, "gst_buffer_map() returned NULL");
-      gst_buffer_unref (output_buffer);
-      output_buffer = NULL;
-    }
-
-    return gst_audio_decoder_finish_frame (dec, output_buffer, 1);
-  }
-}
-
-
-static GstFlowReturn
-gst_mpg123_audio_dec_handle_frame (GstAudioDecoder * dec,
-    GstBuffer * input_buffer)
-{
-  GstMpg123AudioDec *mpg123_decoder;
-  int decode_error;
-  unsigned char *decoded_bytes;
-  size_t num_decoded_bytes;
-  GstFlowReturn retval;
-
-  mpg123_decoder = GST_MPG123_AUDIO_DEC (dec);
-
-  g_assert (mpg123_decoder->handle != NULL);
-
-  /* The actual decoding */
-  {
-    /* feed input data (if there is any) */
-    if (G_LIKELY (input_buffer != NULL)) {
-      GstMapInfo info;
-
-      if (gst_buffer_map (input_buffer, &info, GST_MAP_READ)) {
-        mpg123_feed (mpg123_decoder->handle, info.data, info.size);
-        gst_buffer_unmap (input_buffer, &info);
-      } else {
-        GST_AUDIO_DECODER_ERROR (mpg123_decoder, 1, RESOURCE, READ, (NULL),
-            ("gst_memory_map() failed"), retval);
-        return retval;
-      }
-    }
-
-    /* Try to decode a frame */
-    decoded_bytes = NULL;
-    num_decoded_bytes = 0;
-    decode_error = mpg123_decode_frame (mpg123_decoder->handle,
-        &mpg123_decoder->frame_offset, &decoded_bytes, &num_decoded_bytes);
-  }
-
-  retval = GST_FLOW_OK;
-
-  switch (decode_error) {
-    case MPG123_NEW_FORMAT:
-      /* As mentioned in gst_mpg123_audio_dec_set_format(), the next audioinfo
-       * is not set immediately; instead, the code waits for mpg123 to take
-       * note of the new format, and then sets the audioinfo. This fixes glitches
-       * with mp3s containing several format headers (for example, first half
-       * using 44.1kHz, second half 32 kHz) */
-
-      GST_LOG_OBJECT (dec,
-          "mpg123 reported a new format -> setting next srccaps");
-
-      gst_mpg123_audio_dec_push_decoded_bytes (mpg123_decoder, decoded_bytes,
-          num_decoded_bytes);
-
-      /* If there is a next audioinfo, use it, then set has_next_audioinfo to
-       * FALSE, to make sure gst_audio_decoder_set_output_format() isn't called
-       * again until set_format is called by the base class */
-      if (mpg123_decoder->has_next_audioinfo) {
-        if (!gst_audio_decoder_set_output_format (dec,
-                &(mpg123_decoder->next_audioinfo))) {
-          GST_WARNING_OBJECT (dec, "Unable to set output format");
-          retval = GST_FLOW_NOT_NEGOTIATED;
-        }
-        mpg123_decoder->has_next_audioinfo = FALSE;
-      }
-
-      break;
-
-    case MPG123_NEED_MORE:
-    case MPG123_OK:
-      retval = gst_mpg123_audio_dec_push_decoded_bytes (mpg123_decoder,
-          decoded_bytes, num_decoded_bytes);
-      break;
-
-    case MPG123_DONE:
-      /* If this happens, then the upstream parser somehow missed the ending
-       * of the bitstream */
-      GST_LOG_OBJECT (dec, "mpg123 is done decoding");
-      gst_mpg123_audio_dec_push_decoded_bytes (mpg123_decoder, decoded_bytes,
-          num_decoded_bytes);
-      retval = GST_FLOW_EOS;
-      break;
-
-    default:
-    {
-      /* Anything else is considered an error */
-      int errcode;
-      retval = GST_FLOW_ERROR;  /* use error by default */
-      switch (decode_error) {
-        case MPG123_ERR:
-          errcode = mpg123_errcode (mpg123_decoder->handle);
-          break;
-        default:
-          errcode = decode_error;
-      }
-      switch (errcode) {
-        case MPG123_BAD_OUTFORMAT:{
-          GstCaps *input_caps =
-              gst_pad_get_current_caps (GST_AUDIO_DECODER_SINK_PAD (dec));
-          GST_ELEMENT_ERROR (dec, STREAM, FORMAT, (NULL),
-              ("Output sample format could not be used when trying to decode frame. "
-                  "This is typically caused when the input caps (often the sample "
-                  "rate) do not match the actual format of the audio data. "
-                  "Input caps: %" GST_PTR_FORMAT, input_caps)
-              );
-          gst_caps_unref (input_caps);
-          break;
-        }
-        default:{
-          char const *errmsg = mpg123_plain_strerror (errcode);
-          /* GST_AUDIO_DECODER_ERROR sets a new return value according to
-           * its estimations */
-          GST_AUDIO_DECODER_ERROR (mpg123_decoder, 1, STREAM, DECODE, (NULL),
-              ("mpg123 decoding error: %s", errmsg), retval);
-        }
-      }
-    }
-  }
-
-  return retval;
-}
-
-
-static gboolean
-gst_mpg123_audio_dec_set_format (GstAudioDecoder * dec, GstCaps * input_caps)
-{
-  /* "encoding" is the sample format specifier for mpg123 */
-  int encoding;
-  int sample_rate, num_channels;
-  GstAudioFormat format;
-  GstMpg123AudioDec *mpg123_decoder;
-  gboolean retval = FALSE;
-
-  mpg123_decoder = GST_MPG123_AUDIO_DEC (dec);
-
-  g_assert (mpg123_decoder->handle != NULL);
-
-  mpg123_decoder->has_next_audioinfo = FALSE;
-
-  /* Get sample rate and number of channels from input_caps */
-  {
-    GstStructure *structure;
-    gboolean err = FALSE;
-
-    /* Only the first structure is used (multiple
-     * input caps structures don't make sense */
-    structure = gst_caps_get_structure (input_caps, 0);
-
-    if (!gst_structure_get_int (structure, "rate", &sample_rate)) {
-      err = TRUE;
-      GST_ERROR_OBJECT (dec, "Input caps do not have a rate value");
-    }
-    if (!gst_structure_get_int (structure, "channels", &num_channels)) {
-      err = TRUE;
-      GST_ERROR_OBJECT (dec, "Input caps do not have a channel value");
-    }
-
-    if (G_UNLIKELY (err))
-      goto done;
-  }
-
-  /* Get sample format from the allowed src caps */
-  {
-    GstCaps *allowed_srccaps =
-        gst_pad_get_allowed_caps (GST_AUDIO_DECODER_SRC_PAD (dec));
-
-    if (allowed_srccaps == NULL) {
-      /* srcpad is not linked (yet), so no peer information is available;
-       * just use the default sample format (16 bit signed integer) */
-      GST_DEBUG_OBJECT (mpg123_decoder,
-          "srcpad is not linked (yet) -> using S16 sample format");
-      format = GST_AUDIO_FORMAT_S16;
-      encoding = MPG123_ENC_SIGNED_16;
-    } else if (gst_caps_is_empty (allowed_srccaps)) {
-      gst_caps_unref (allowed_srccaps);
-      goto done;
-    } else {
-      gchar const *format_str;
-      GValue const *format_value;
-
-      /* Look at the sample format values from the first structure */
-      GstStructure *structure = gst_caps_get_structure (allowed_srccaps, 0);
-      format_value = gst_structure_get_value (structure, "format");
-
-      if (format_value == NULL) {
-        gst_caps_unref (allowed_srccaps);
-        goto done;
-      } else if (GST_VALUE_HOLDS_LIST (format_value)) {
-        /* if value is a format list, pick the first entry */
-        GValue const *fmt_list_value =
-            gst_value_list_get_value (format_value, 0);
-        format_str = g_value_get_string (fmt_list_value);
-      } else if (G_VALUE_HOLDS_STRING (format_value)) {
-        /* if value is a string, use it directly */
-        format_str = g_value_get_string (format_value);
-      } else {
-        GST_ERROR_OBJECT (mpg123_decoder, "unexpected type for 'format' field "
-            "in caps structure %" GST_PTR_FORMAT, structure);
-        gst_caps_unref (allowed_srccaps);
-        goto done;
-      }
-
-      /* get the format value from the string */
-      format = gst_audio_format_from_string (format_str);
-      gst_caps_unref (allowed_srccaps);
-
-      g_assert (format != GST_AUDIO_FORMAT_UNKNOWN);
-
-      /* convert format to mpg123 encoding */
-      switch (format) {
-        case GST_AUDIO_FORMAT_S16:
-          encoding = MPG123_ENC_SIGNED_16;
-          break;
-        case GST_AUDIO_FORMAT_S24:
-          encoding = MPG123_ENC_SIGNED_24;
-          break;
-        case GST_AUDIO_FORMAT_S32:
-          encoding = MPG123_ENC_SIGNED_32;
-          break;
-        case GST_AUDIO_FORMAT_U16:
-          encoding = MPG123_ENC_UNSIGNED_16;
-          break;
-        case GST_AUDIO_FORMAT_U24:
-          encoding = MPG123_ENC_UNSIGNED_24;
-          break;
-        case GST_AUDIO_FORMAT_U32:
-          encoding = MPG123_ENC_UNSIGNED_32;
-          break;
-        case GST_AUDIO_FORMAT_F32:
-          encoding = MPG123_ENC_FLOAT_32;
-          break;
-        default:
-          g_assert_not_reached ();
-          goto done;
-      }
-    }
-  }
-
-  /* Sample rate, number of channels, and sample format are known at this point.
-   * Set the audioinfo structure's values and the mpg123 format. */
-  {
-    int err;
-
-    /* clear all existing format settings from the mpg123 instance */
-    mpg123_format_none (mpg123_decoder->handle);
-    /* set the chosen format */
-    err =
-        mpg123_format (mpg123_decoder->handle, sample_rate, num_channels,
-        encoding);
-
-    if (err != MPG123_OK) {
-      GST_WARNING_OBJECT (dec,
-          "mpg123_format() failed: %s",
-          mpg123_strerror (mpg123_decoder->handle));
-    } else {
-      gst_audio_info_init (&(mpg123_decoder->next_audioinfo));
-      gst_audio_info_set_format (&(mpg123_decoder->next_audioinfo), format,
-          sample_rate, num_channels, NULL);
-      GST_LOG_OBJECT (dec, "The next audio format is: %s, %u Hz, %u channels",
-          gst_audio_format_to_string (format), sample_rate, num_channels);
-      mpg123_decoder->has_next_audioinfo = TRUE;
-
-      retval = TRUE;
-    }
-  }
-
-done:
-  return retval;
-}
-
-
-static void
-gst_mpg123_audio_dec_flush (GstAudioDecoder * dec, gboolean hard)
-{
-  int error;
-  GstMpg123AudioDec *mpg123_decoder;
-
-  GST_LOG_OBJECT (dec, "Flushing decoder");
-
-  mpg123_decoder = GST_MPG123_AUDIO_DEC (dec);
-
-  g_assert (mpg123_decoder->handle != NULL);
-
-  /* Flush by reopening the feed */
-  mpg123_close (mpg123_decoder->handle);
-  error = mpg123_open_feed (mpg123_decoder->handle);
-
-  if (G_UNLIKELY (error != MPG123_OK)) {
-    GST_ELEMENT_ERROR (dec, LIBRARY, INIT, (NULL),
-        ("Error while reopening mpg123 feed: %s",
-            mpg123_plain_strerror (error)));
-    mpg123_close (mpg123_decoder->handle);
-    mpg123_delete (mpg123_decoder->handle);
-    mpg123_decoder->handle = NULL;
-  }
-
-  if (hard)
-    mpg123_decoder->has_next_audioinfo = FALSE;
-
-  /* opening/closing feeds do not affect the format defined by the
-   * mpg123_format() call that was made in gst_mpg123_audio_dec_set_format(),
-   * and since the up/downstream caps are not expected to change here, no
-   * mpg123_format() calls are done */
-}
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
-  return gst_element_register (plugin, "mpg123audiodec",
-      GST_RANK_MARGINAL, gst_mpg123_audio_dec_get_type ());
-}
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
-    GST_VERSION_MINOR,
-    mpg123, "mp3 decoding based on the mpg123 library",
-    plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/ext/mpg123/gstmpg123audiodec.h b/ext/mpg123/gstmpg123audiodec.h
deleted file mode 100644
index e837a56..0000000
--- a/ext/mpg123/gstmpg123audiodec.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*  MP3 decoding plugin for GStreamer using the mpg123 library
- *  Copyright (C) 2012 Carlos Rafael Giani
- *
- *  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_MPG123_AUDIO_DEC_H__
-#define __GST_MPG123_AUDIO_DEC_H__
-
-#include <gst/gst.h>
-#include <gst/audio/gstaudiodecoder.h>
-#include <mpg123.h>
-
-
-G_BEGIN_DECLS
-
-
-typedef struct _GstMpg123AudioDec GstMpg123AudioDec;
-typedef struct _GstMpg123AudioDecClass GstMpg123AudioDecClass;
-
-
-#define GST_TYPE_MPG123_AUDIO_DEC             (gst_mpg123_audio_dec_get_type())
-#define GST_MPG123_AUDIO_DEC(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_MPG123_AUDIO_DEC,GstMpg123AudioDec))
-#define GST_MPG123_AUDIO_DEC_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_MPG123_AUDIO_DEC,GstMpg123AudioDecClass))
-#define GST_IS_MPG123_AUDIO_DEC(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_MPG123_AUDIO_DEC))
-#define GST_IS_MPG123_AUDIO_DEC_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_MPG123_AUDIO_DEC))
-
-struct _GstMpg123AudioDec
-{
-  GstAudioDecoder parent;
-
-  mpg123_handle *handle;
-
-  GstAudioInfo next_audioinfo;
-  gboolean has_next_audioinfo;
-
-  off_t frame_offset;
-};
-
-
-struct _GstMpg123AudioDecClass
-{
-  GstAudioDecoderClass parent_class;
-};
-
-G_GNUC_INTERNAL GType gst_mpg123_audio_dec_get_type (void);
-
-G_END_DECLS
-
-#endif
diff --git a/ext/mplex/Makefile.in b/ext/mplex/Makefile.in
index 24c9190..b911580 100644
--- a/ext/mplex/Makefile.in
+++ b/ext/mplex/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -327,7 +326,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -349,7 +347,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -371,9 +368,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -535,6 +529,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -548,8 +543,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -636,8 +629,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -689,6 +680,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -709,6 +701,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -746,7 +740,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/musepack/Makefile.in b/ext/musepack/Makefile.in
index e9dc694..506cc5a 100644
--- a/ext/musepack/Makefile.in
+++ b/ext/musepack/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/nas/Makefile.in b/ext/nas/Makefile.in
index a39a6cd..99a1ec1 100644
--- a/ext/nas/Makefile.in
+++ b/ext/nas/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/neon/Makefile.in b/ext/neon/Makefile.in
index 2aefd6d..d597c2f 100644
--- a/ext/neon/Makefile.in
+++ b/ext/neon/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/ofa/Makefile.in b/ext/ofa/Makefile.in
index cc260f5..43b490e 100644
--- a/ext/ofa/Makefile.in
+++ b/ext/ofa/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/openal/Makefile.in b/ext/openal/Makefile.in
index 2a64f94..ac0003f 100644
--- a/ext/openal/Makefile.in
+++ b/ext/openal/Makefile.in
@@ -118,16 +118,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -328,7 +327,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -350,7 +348,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -372,9 +369,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -536,6 +530,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -549,8 +544,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -637,8 +630,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -690,6 +681,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -710,6 +702,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -747,7 +741,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/opencv/Makefile.in b/ext/opencv/Makefile.in
index f26b480..5f2e280 100644
--- a/ext/opencv/Makefile.in
+++ b/ext/opencv/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -346,7 +345,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -368,7 +366,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -390,9 +387,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -554,6 +548,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -567,8 +562,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -655,8 +648,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -708,6 +699,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -728,6 +720,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -765,7 +759,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/opencv/gstcvlaplace.cpp b/ext/opencv/gstcvlaplace.cpp
index 04cd575..c989456 100644
--- a/ext/opencv/gstcvlaplace.cpp
+++ b/ext/opencv/gstcvlaplace.cpp
@@ -67,22 +67,14 @@
 static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("GRAY8"))
+    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("RGB"))
     );
 
-#if G_BYTE_ORDER == G_BIG_ENDIAN
 static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("GRAY16_BE"))
+    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("RGB"))
     );
-#else
-static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
-    GST_PAD_SRC,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("GRAY16_LE"))
-    );
-#endif
 
 /* Filter signals and args */
 enum
@@ -95,12 +87,14 @@
   PROP_0,
   PROP_APERTURE_SIZE,
   PROP_SCALE,
-  PROP_SHIFT
+  PROP_SHIFT,
+  PROP_MASK
 };
 
 #define DEFAULT_APERTURE_SIZE 3
 #define DEFAULT_SCALE_FACTOR 1.0
 #define DEFAULT_SHIFT 0.0
+#define DEFAULT_MASK TRUE
 
 G_DEFINE_TYPE (GstCvLaplace, gst_cv_laplace, GST_TYPE_OPENCV_VIDEO_FILTER);
 
@@ -109,8 +103,8 @@
 static void gst_cv_laplace_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
 
-static GstCaps *gst_cv_laplace_transform_caps (GstBaseTransform * trans,
-    GstPadDirection dir, GstCaps * caps, GstCaps * filter);
+static gboolean gst_cv_laplace_handle_sink_event (GstPad * pad,
+    GstObject * parent, GstEvent * event);
 
 static GstFlowReturn gst_cv_laplace_transform (GstOpencvVideoFilter * filter,
     GstBuffer * buf, IplImage * img, GstBuffer * outbuf, IplImage * outimg);
@@ -125,8 +119,12 @@
 {
   GstCvLaplace *filter = GST_CV_LAPLACE (obj);
 
-  if (filter->intermediary_img)
+  if (filter->intermediary_img) {
     cvReleaseImage (&filter->intermediary_img);
+    cvReleaseImage (&filter->cvGray);
+    cvReleaseImage (&filter->Laplace);
+    cvReleaseImage (&filter->CLaplace);
+  }
 
   G_OBJECT_CLASS (gst_cv_laplace_parent_class)->finalize (obj);
 }
@@ -136,20 +134,16 @@
 gst_cv_laplace_class_init (GstCvLaplaceClass * klass)
 {
   GObjectClass *gobject_class;
-  GstBaseTransformClass *gstbasetransform_class;
   GstOpencvVideoFilterClass *gstopencvbasefilter_class;
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
   gobject_class = (GObjectClass *) klass;
-  gstbasetransform_class = (GstBaseTransformClass *) klass;
   gstopencvbasefilter_class = (GstOpencvVideoFilterClass *) klass;
 
   gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_cv_laplace_finalize);
   gobject_class->set_property = gst_cv_laplace_set_property;
   gobject_class->get_property = gst_cv_laplace_get_property;
 
-  gstbasetransform_class->transform_caps = gst_cv_laplace_transform_caps;
-
   gstopencvbasefilter_class->cv_trans_func = gst_cv_laplace_transform;
   gstopencvbasefilter_class->cv_set_caps = gst_cv_laplace_cv_set_caps;
 
@@ -165,6 +159,10 @@
       g_param_spec_double ("shift", "Shift",
           "Value added to the scaled source array elements", 0.0, G_MAXDOUBLE,
           DEFAULT_SHIFT, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+  g_object_class_install_property (gobject_class, PROP_MASK,
+      g_param_spec_boolean ("mask", "Mask",
+          "Sets whether the detected edges should be used as a mask on the original input or not",
+          DEFAULT_MASK, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
 
   gst_element_class_add_pad_template (element_class,
       gst_static_pad_template_get (&src_factory));
@@ -181,9 +179,13 @@
 static void
 gst_cv_laplace_init (GstCvLaplace * filter)
 {
+  gst_pad_set_event_function (GST_BASE_TRANSFORM_SINK_PAD (filter),
+      GST_DEBUG_FUNCPTR (gst_cv_laplace_handle_sink_event));
+
   filter->aperture_size = DEFAULT_APERTURE_SIZE;
   filter->scale = DEFAULT_SCALE_FACTOR;
   filter->shift = DEFAULT_SHIFT;
+  filter->mask = DEFAULT_MASK;
 
   gst_opencv_video_filter_set_in_place (GST_OPENCV_VIDEO_FILTER_CAST (filter),
       FALSE);
@@ -195,97 +197,17 @@
     gint out_height, gint out_depth, gint out_channels)
 {
   GstCvLaplace *filter = GST_CV_LAPLACE (trans);
-  gint intermediary_depth;
 
-  /* cvLaplace needs an signed output, so we create our intermediary step
-   * image here */
-  switch (out_depth) {
-    case IPL_DEPTH_16U:
-      intermediary_depth = IPL_DEPTH_16S;
-      break;
-    default:
-      GST_WARNING_OBJECT (filter, "Unsupported output depth %d", out_depth);
-      return FALSE;
-  }
   if (filter->intermediary_img) {
     cvReleaseImage (&filter->intermediary_img);
   }
 
-  filter->intermediary_img = cvCreateImage (cvSize (out_width, out_height),
-      intermediary_depth, out_channels);
+  filter->intermediary_img =
+      cvCreateImage (cvSize (out_width, out_height), IPL_DEPTH_16S, 1);
 
   return TRUE;
 }
 
-static GstCaps *
-gst_cv_laplace_transform_caps (GstBaseTransform * trans, GstPadDirection dir,
-    GstCaps * caps, GstCaps * filter)
-{
-  GstCaps *to, *ret;
-  GstCaps *templ;
-  GstStructure *structure;
-  GstPad *other;
-  guint i;
-
-  to = gst_caps_new_empty ();
-
-  for (i = 0; i < gst_caps_get_size (caps); i++) {
-    const GValue *v;
-    GValue list = { 0, };
-    GValue val = { 0, };
-
-    structure = gst_structure_copy (gst_caps_get_structure (caps, i));
-
-    g_value_init (&list, GST_TYPE_LIST);
-
-    g_value_init (&val, G_TYPE_STRING);
-    g_value_set_string (&val, "GRAY8");
-    gst_value_list_append_value (&list, &val);
-    g_value_unset (&val);
-
-    g_value_init (&val, G_TYPE_STRING);
-#if G_BYTE_ORDER == G_BIG_ENDIAN
-    g_value_set_string (&val, "GRAY16_BE");
-#else
-    g_value_set_string (&val, "GRAY16_LE");
-#endif
-    gst_value_list_append_value (&list, &val);
-    g_value_unset (&val);
-
-    v = gst_structure_get_value (structure, "format");
-
-    gst_value_list_merge (&val, v, &list);
-    gst_structure_set_value (structure, "format", &val);
-    g_value_unset (&val);
-    g_value_unset (&list);
-
-    gst_structure_remove_field (structure, "colorimetry");
-    gst_structure_remove_field (structure, "chroma-site");
-
-    gst_caps_append_structure (to, structure);
-
-  }
-
-  /* filter against set allowed caps on the pad */
-  other = (dir == GST_PAD_SINK) ? trans->srcpad : trans->sinkpad;
-  templ = gst_pad_get_pad_template_caps (other);
-  ret = gst_caps_intersect (to, templ);
-  gst_caps_unref (to);
-  gst_caps_unref (templ);
-
-  if (ret && filter) {
-    GstCaps *intersection;
-
-    intersection =
-        gst_caps_intersect_full (filter, ret, GST_CAPS_INTERSECT_FIRST);
-    gst_caps_unref (ret);
-    ret = intersection;
-  }
-
-  return ret;
-
-}
-
 static void
 gst_cv_laplace_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec)
@@ -308,6 +230,9 @@
     case PROP_SHIFT:
       filter->shift = g_value_get_double (value);
       break;
+    case PROP_MASK:
+      filter->mask = g_value_get_boolean (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -330,24 +255,85 @@
     case PROP_SHIFT:
       g_value_set_double (value, filter->shift);
       break;
+    case PROP_MASK:
+      g_value_set_boolean (value, filter->mask);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
   }
 }
 
+static gboolean
+gst_cv_laplace_handle_sink_event (GstPad * pad, GstObject * parent,
+    GstEvent * event)
+{
+  GstCvLaplace *filter;
+  gint width, height;
+  GstStructure *structure;
+  gboolean res = TRUE;
+
+  filter = GST_CV_LAPLACE (parent);
+
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_CAPS:
+    {
+      GstCaps *caps;
+      gst_event_parse_caps (event, &caps);
+
+      structure = gst_caps_get_structure (caps, 0);
+      gst_structure_get_int (structure, "width", &width);
+      gst_structure_get_int (structure, "height", &height);
+
+      if (filter->intermediary_img != NULL) {
+        cvReleaseImage (&filter->intermediary_img);
+        cvReleaseImage (&filter->CLaplace);
+        cvReleaseImage (&filter->cvGray);
+        cvReleaseImage (&filter->Laplace);
+      }
+
+      filter->CLaplace =
+          cvCreateImage (cvSize (width, height), IPL_DEPTH_8U, 3);
+      filter->intermediary_img =
+          cvCreateImage (cvSize (width, height), IPL_DEPTH_16S, 1);
+      filter->cvGray = cvCreateImage (cvSize (width, height), IPL_DEPTH_8U, 1);
+      filter->Laplace = cvCreateImage (cvSize (width, height), IPL_DEPTH_8U, 1);
+      break;
+    }
+    default:
+      break;
+  }
+
+  res = gst_pad_event_default (pad, parent, event);
+
+  return res;
+}
+
 static GstFlowReturn
 gst_cv_laplace_transform (GstOpencvVideoFilter * base, GstBuffer * buf,
     IplImage * img, GstBuffer * outbuf, IplImage * outimg)
 {
   GstCvLaplace *filter = GST_CV_LAPLACE (base);
+  GstMapInfo out_info;
 
   g_assert (filter->intermediary_img);
 
-  cvLaplace (img, filter->intermediary_img, filter->aperture_size);
-  cvConvertScale (filter->intermediary_img, outimg, filter->scale,
+  cvCvtColor (img, filter->cvGray, CV_RGB2GRAY);
+  cvLaplace (filter->cvGray, filter->intermediary_img, filter->aperture_size);
+  cvConvertScale (filter->intermediary_img, filter->Laplace, filter->scale,
       filter->shift);
 
+  cvZero (filter->CLaplace);
+  if (filter->mask) {
+    cvCopy (img, filter->CLaplace, filter->Laplace);
+  } else {
+    cvCvtColor (filter->Laplace, filter->CLaplace, CV_GRAY2RGB);
+  }
+
+  gst_buffer_map (outbuf, &out_info, GST_MAP_WRITE);
+  memcpy (out_info.data, filter->CLaplace->imageData,
+      gst_buffer_get_size (outbuf));
+
   return GST_FLOW_OK;
 }
 
diff --git a/ext/opencv/gstcvlaplace.h b/ext/opencv/gstcvlaplace.h
index 7ac9172..82f237f 100644
--- a/ext/opencv/gstcvlaplace.h
+++ b/ext/opencv/gstcvlaplace.h
@@ -70,8 +70,12 @@
   gint aperture_size;
   gdouble scale;
   gdouble shift;
+  gboolean mask;
 
   IplImage *intermediary_img;
+  IplImage *cvGray;
+  IplImage *Laplace;
+  IplImage *CLaplace;
 };
 
 struct _GstCvLaplaceClass
diff --git a/ext/opencv/gstcvsmooth.cpp b/ext/opencv/gstcvsmooth.cpp
index 648bfec..8715736 100644
--- a/ext/opencv/gstcvsmooth.cpp
+++ b/ext/opencv/gstcvsmooth.cpp
@@ -128,8 +128,6 @@
 
 static GstFlowReturn gst_cv_smooth_transform_ip (GstOpencvVideoFilter *
     filter, GstBuffer * buf, IplImage * img);
-static GstFlowReturn gst_cv_smooth_transform (GstOpencvVideoFilter * filter,
-    GstBuffer * buf, IplImage * img, GstBuffer * outbuf, IplImage * outimg);
 
 /* initialize the cvsmooth's class */
 static void
@@ -148,7 +146,6 @@
   gobject_class->get_property = gst_cv_smooth_get_property;
 
   gstopencvbasefilter_class->cv_trans_ip_func = gst_cv_smooth_transform_ip;
-  gstopencvbasefilter_class->cv_trans_func = gst_cv_smooth_transform;
 
   g_object_class_install_property (gobject_class, PROP_SMOOTH_TYPE,
       g_param_spec_enum ("type",
@@ -216,7 +213,7 @@
   filter->spatialsigma = DEFAULT_SPATIALSIGMA;
 
   gst_opencv_video_filter_set_in_place (GST_OPENCV_VIDEO_FILTER_CAST (filter),
-      FALSE);
+      TRUE);
 }
 
 static void
@@ -313,34 +310,6 @@
 }
 
 static GstFlowReturn
-gst_cv_smooth_transform (GstOpencvVideoFilter * base, GstBuffer * buf,
-    IplImage * img, GstBuffer * outbuf, IplImage * outimg)
-{
-  GstCvSmooth *filter = GST_CV_SMOOTH (base);
-
-  switch (filter->type) {
-    case CV_BLUR:
-      blur (Mat (img), Mat (outimg), Size (filter->width, filter->height),
-          Point (-1, -1));
-      break;
-    case CV_GAUSSIAN:
-      GaussianBlur (Mat (img), Mat (outimg), Size (filter->width,
-              filter->height), filter->colorsigma, filter->colorsigma);
-      break;
-    case CV_MEDIAN:
-      medianBlur (Mat (img), Mat (outimg), filter->width);
-      break;
-    case CV_BILATERAL:
-      bilateralFilter (Mat (img), Mat (outimg), -1, filter->colorsigma, 0.0);
-      break;
-    default:
-      break;
-  }
-
-  return GST_FLOW_OK;
-}
-
-static GstFlowReturn
 gst_cv_smooth_transform_ip (GstOpencvVideoFilter * base, GstBuffer * buf,
     IplImage * img)
 {
diff --git a/ext/opencv/gstcvsobel.cpp b/ext/opencv/gstcvsobel.cpp
index f1f6750..d5c9ef7 100644
--- a/ext/opencv/gstcvsobel.cpp
+++ b/ext/opencv/gstcvsobel.cpp
@@ -67,23 +67,14 @@
 static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("GRAY8"))
+    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("RGB"))
     );
 
-
-#if G_BYTE_ORDER == G_BIG_ENDIAN
 static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
     GST_PAD_SRC,
     GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("GRAY16_BE"))
+    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("RGB"))
     );
-#else
-static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
-    GST_PAD_SRC,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("GRAY16_LE"))
-    );
-#endif
 
 /* Filter signals and args */
 enum
@@ -96,12 +87,14 @@
   PROP_0,
   PROP_X_ORDER,
   PROP_Y_ORDER,
-  PROP_APERTURE_SIZE
+  PROP_APERTURE_SIZE,
+  PROP_MASK
 };
 
 #define DEFAULT_X_ORDER 1
 #define DEFAULT_Y_ORDER 0
 #define DEFAULT_APERTURE_SIZE 3
+#define DEFAULT_MASK TRUE
 
 G_DEFINE_TYPE (GstCvSobel, gst_cv_sobel, GST_TYPE_OPENCV_VIDEO_FILTER);
 
@@ -110,31 +103,46 @@
 static void gst_cv_sobel_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
 
-static GstCaps *gst_cv_sobel_transform_caps (GstBaseTransform * trans,
-    GstPadDirection dir, GstCaps * caps, GstCaps * filter);
-
+static gboolean gst_cv_sobel_handle_sink_event (GstPad * pad,
+    GstObject * parent, GstEvent * event);
 static GstFlowReturn gst_cv_sobel_transform (GstOpencvVideoFilter * filter,
     GstBuffer * buf, IplImage * img, GstBuffer * outbuf, IplImage * outimg);
+static gboolean gst_cv_sobel_set_caps (GstOpencvVideoFilter * transform,
+    gint in_width, gint in_height, gint in_depth, gint in_channels,
+    gint out_width, gint out_height, gint out_depth, gint out_channels);
+
+/* Clean up */
+static void
+gst_cv_sobel_finalize (GObject * obj)
+{
+  GstCvSobel *filter = GST_CV_SOBEL (obj);
+
+  if (filter->cvSobel != NULL) {
+    cvReleaseImage (&filter->cvCSobel);
+    cvReleaseImage (&filter->cvGray);
+    cvReleaseImage (&filter->cvSobel);
+  }
+
+  G_OBJECT_CLASS (gst_cv_sobel_parent_class)->finalize (obj);
+}
 
 /* initialize the cvsobel's class */
 static void
 gst_cv_sobel_class_init (GstCvSobelClass * klass)
 {
   GObjectClass *gobject_class;
-  GstBaseTransformClass *gstbasetransform_class;
   GstOpencvVideoFilterClass *gstopencvbasefilter_class;
 
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
   gobject_class = (GObjectClass *) klass;
-  gstbasetransform_class = (GstBaseTransformClass *) klass;
   gstopencvbasefilter_class = (GstOpencvVideoFilterClass *) klass;
 
+  gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_cv_sobel_finalize);
   gobject_class->set_property = gst_cv_sobel_set_property;
   gobject_class->get_property = gst_cv_sobel_get_property;
 
-  gstbasetransform_class->transform_caps = gst_cv_sobel_transform_caps;
-
   gstopencvbasefilter_class->cv_trans_func = gst_cv_sobel_transform;
+  gstopencvbasefilter_class->cv_set_caps = gst_cv_sobel_set_caps;
 
   g_object_class_install_property (gobject_class, PROP_X_ORDER,
       g_param_spec_int ("x-order", "x order",
@@ -150,6 +158,10 @@
           "Size of the extended Sobel Kernel (1, 3, 5 or 7)", 1, 7,
           DEFAULT_APERTURE_SIZE,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+  g_object_class_install_property (gobject_class, PROP_MASK,
+      g_param_spec_boolean ("mask", "Mask",
+          "Sets whether the detected derivative edges should be used as a mask on the original input or not",
+          DEFAULT_MASK, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
 
   gst_element_class_add_pad_template (element_class,
       gst_static_pad_template_get (&src_factory));
@@ -166,79 +178,74 @@
 static void
 gst_cv_sobel_init (GstCvSobel * filter)
 {
+  gst_pad_set_event_function (GST_BASE_TRANSFORM_SINK_PAD (filter),
+      GST_DEBUG_FUNCPTR (gst_cv_sobel_handle_sink_event));
+
   filter->x_order = DEFAULT_X_ORDER;
   filter->y_order = DEFAULT_Y_ORDER;
   filter->aperture_size = DEFAULT_APERTURE_SIZE;
+  filter->mask = DEFAULT_MASK;
 
   gst_opencv_video_filter_set_in_place (GST_OPENCV_VIDEO_FILTER_CAST (filter),
       FALSE);
 }
 
-static GstCaps *
-gst_cv_sobel_transform_caps (GstBaseTransform * trans, GstPadDirection dir,
-    GstCaps * caps, GstCaps * filter)
+/* this function handles the link with other elements */
+static gboolean
+gst_cv_sobel_set_caps (GstOpencvVideoFilter * transform,
+    gint in_width, gint in_height, gint in_depth, gint in_channels,
+    gint out_width, gint out_height, gint out_depth, gint out_channels)
 {
-  GstCaps *to, *ret;
-  GstCaps *templ;
+  GstCvSobel *filter = GST_CV_SOBEL (transform);
+
+  if (filter->cvGray)
+    cvReleaseImage (&filter->cvGray);
+
+  filter->cvGray =
+      cvCreateImage (cvSize (in_width, in_height), IPL_DEPTH_8U, 1);
+
+  return TRUE;
+}
+
+static gboolean
+gst_cv_sobel_handle_sink_event (GstPad * pad, GstObject * parent,
+    GstEvent * event)
+{
+  GstCvSobel *filter;
+  gint width, height;
   GstStructure *structure;
-  GstPad *other;
-  guint i;
+  gboolean res = TRUE;
 
-  to = gst_caps_new_empty ();
+  filter = GST_CV_SOBEL (parent);
 
-  for (i = 0; i < gst_caps_get_size (caps); i++) {
-    const GValue *v;
-    GValue list = { 0, };
-    GValue val = { 0, };
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_CAPS:
+    {
+      GstCaps *caps;
+      gst_event_parse_caps (event, &caps);
 
-    structure = gst_structure_copy (gst_caps_get_structure (caps, i));
+      structure = gst_caps_get_structure (caps, 0);
+      gst_structure_get_int (structure, "width", &width);
+      gst_structure_get_int (structure, "height", &height);
 
-    g_value_init (&list, GST_TYPE_LIST);
+      if (filter->cvSobel != NULL) {
+        cvReleaseImage (&filter->cvCSobel);
+        cvReleaseImage (&filter->cvGray);
+        cvReleaseImage (&filter->cvSobel);
+      }
 
-    g_value_init (&val, G_TYPE_STRING);
-    g_value_set_string (&val, "GRAY8");
-    gst_value_list_append_value (&list, &val);
-    g_value_unset (&val);
-
-    g_value_init (&val, G_TYPE_STRING);
-#if G_BYTE_ORDER == G_BIG_ENDIAN
-    g_value_set_string (&val, "GRAY16_BE");
-#else
-    g_value_set_string (&val, "GRAY16_LE");
-#endif
-    gst_value_list_append_value (&list, &val);
-    g_value_unset (&val);
-
-    v = gst_structure_get_value (structure, "format");
-
-    gst_value_list_merge (&val, v, &list);
-    gst_structure_set_value (structure, "format", &val);
-    g_value_unset (&val);
-    g_value_unset (&list);
-
-    gst_structure_remove_field (structure, "colorimetry");
-    gst_structure_remove_field (structure, "chroma-site");
-
-    gst_caps_append_structure (to, structure);
-
-  }
-  /* filter against set allowed caps on the pad */
-  other = (dir == GST_PAD_SINK) ? trans->srcpad : trans->sinkpad;
-  templ = gst_pad_get_pad_template_caps (other);
-  ret = gst_caps_intersect (to, templ);
-  gst_caps_unref (to);
-  gst_caps_unref (templ);
-
-  if (ret && filter) {
-    GstCaps *intersection;
-
-    intersection =
-        gst_caps_intersect_full (filter, ret, GST_CAPS_INTERSECT_FIRST);
-    gst_caps_unref (ret);
-    ret = intersection;
+      filter->cvCSobel = cvCreateImage (cvSize (width, height), IPL_DEPTH_8U, 3);
+      filter->cvGray = cvCreateImage (cvSize (width, height), IPL_DEPTH_8U, 1);
+      filter->cvSobel = cvCreateImage (cvSize (width, height), IPL_DEPTH_8U, 1);
+      break;
+    }
+    default:
+      break;
   }
 
-  return ret;
+  res = gst_pad_event_default (pad, parent, event);
+
+  return res;
 }
 
 static void
@@ -263,6 +270,9 @@
         filter->aperture_size = g_value_get_int (value);
     }
       break;
+    case PROP_MASK:
+      filter->mask = g_value_get_boolean (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -285,6 +295,9 @@
     case PROP_APERTURE_SIZE:
       g_value_set_int (value, filter->aperture_size);
       break;
+    case PROP_MASK:
+      g_value_set_boolean (value, filter->mask);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -296,10 +309,23 @@
     IplImage * img, GstBuffer * outbuf, IplImage * outimg)
 {
   GstCvSobel *filter = GST_CV_SOBEL (base);
+  GstMapInfo out_info;
 
-  cvSobel (img, outimg, filter->x_order, filter->y_order,
+  cvCvtColor (img, filter->cvGray, CV_RGB2GRAY);
+  cvSobel (filter->cvGray, filter->cvSobel, filter->x_order, filter->y_order,
       filter->aperture_size);
 
+  cvZero (filter->cvCSobel);
+  if (filter->mask) {
+    cvCopy (img, filter->cvCSobel, filter->cvSobel);
+  } else {
+    cvCvtColor (filter->cvSobel, filter->cvCSobel, CV_GRAY2RGB);
+  }
+
+  gst_buffer_map (outbuf, &out_info, GST_MAP_WRITE);
+  memcpy (out_info.data, filter->cvCSobel->imageData,
+      gst_buffer_get_size (outbuf));
+
   return GST_FLOW_OK;
 }
 
diff --git a/ext/opencv/gstcvsobel.h b/ext/opencv/gstcvsobel.h
index a7f306a..62cabab 100644
--- a/ext/opencv/gstcvsobel.h
+++ b/ext/opencv/gstcvsobel.h
@@ -70,6 +70,11 @@
   gint x_order;
   gint y_order;
   gint aperture_size;
+  gboolean mask;
+
+  IplImage *cvCSobel;
+  IplImage *cvGray;
+  IplImage *cvSobel;
 };
 
 struct _GstCvSobelClass
diff --git a/ext/opencv/gstmotioncells.cpp b/ext/opencv/gstmotioncells.cpp
index a3290f7..e1d412f 100644
--- a/ext/opencv/gstmotioncells.cpp
+++ b/ext/opencv/gstmotioncells.cpp
@@ -1,5 +1,5 @@
 /*
- * GStreamer MotioCells detect areas of motion
+ * GStreamer MotionCells detect areas of motion
  * Copyright (C) 2011 Robert Jobbagy <jobbagy.robert@gmail.com>
  * Copyright (C) 2011 Nicola Murino <nicola.murino@gmail.com>
  *
@@ -204,52 +204,55 @@
 
   g_object_class_install_property (gobject_class, PROP_GRID_X,
       g_param_spec_int ("gridx", "Number of Horizontal Grids",
-          "You can give number of horizontal grid cells.", GRID_MIN, GRID_MAX,
+          "Number of horizontal grid cells.", GRID_MIN, GRID_MAX,
           GRID_DEF,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_GRID_Y,
       g_param_spec_int ("gridy", "Number of Vertical Grids",
-          "You can give number of vertical grid cells.", GRID_MIN, GRID_MAX,
+          "Number of vertical grid cells.", GRID_MIN, GRID_MAX,
           GRID_DEF,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_SENSITIVITY,
       g_param_spec_double ("sensitivity", "Motion Sensitivity",
-          "You can tunning the element motion sensitivity.", SENSITIVITY_MIN,
+          "Motion detection sensitivity.", SENSITIVITY_MIN,
           SENSITIVITY_MAX, SENSITIVITY_DEFAULT,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_THRESHOLD,
       g_param_spec_double ("threshold", "Lower bound of motion cells number",
-          "Threshold value for motion, when motion cells number greater sum cells * threshold, we show motion.",
+          "Threshold value for motion. Filter detects motion when at least "
+          "this fraction of the cells have moved",
           THRESHOLD_MIN, THRESHOLD_MAX, THRESHOLD_DEFAULT,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_GAP,
-      g_param_spec_int ("gap",
-          "Gap is time in second, elapsed time from last motion timestamp. ",
-          "If elapsed time minus form last motion timestamp is greater or equal than gap then we post motion finished bus message. ",
+      g_param_spec_int ("gap", "Motion-finished Threshold",
+          "Interval in seconds after which motion is considered finished "
+          "and a motion finished bus message is posted.",
           GAP_MIN, GAP_MAX, GAP_DEF,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_POSTNOMOTION,
-      g_param_spec_int ("postnomotion", "POSTNOMOTION",
-          "If non 0 post a no_motion event is posted on the bus if no motion is detected for N seconds",
+      g_param_spec_int ("postnomotion", "No-motion Threshold",
+          "If non 0, post a no_motion event on the bus if no motion is "
+          "detected for the given number of seconds",
           POST_NO_MOTION_MIN, POST_NO_MOTION_MAX, POST_NO_MOTION_DEF,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_MINIMUNMOTIONFRAMES,
-      g_param_spec_int ("minimummotionframes", "MINIMUN MOTION FRAMES",
-          "Define the minimum number of motion frames that trigger a motion event",
+      g_param_spec_int ("minimummotionframes", "Minimum Motion Frames",
+          "Minimum number of motion frames triggering a motion event",
           MINIMUM_MOTION_FRAMES_MIN, MINIMUM_MOTION_FRAMES_MAX,
           MINIMUM_MOTION_FRAMES_DEF,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_DISPLAY,
       g_param_spec_boolean ("display", "Display",
-          "Motion Cells visible or not on Current Frame", FALSE,
+          "Toggle display of motion cells on current frame", FALSE,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_POSTALLMOTION,
       g_param_spec_boolean ("postallmotion", "Post All Motion",
-          "Element post bus msg for every motion frame or just motion start and motion stop",
+          "Post bus messages for every motion frame or just motion start and "
+          "motion stop",
           FALSE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_USEALPHA,
       g_param_spec_boolean ("usealpha", "Use alpha",
-          "Use or not alpha blending on frames with motion cells", TRUE,
+          "Toggle usage of alpha blending on frames with motion cells", TRUE,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
 #if 0
   /* FIXME: should not be a long property, make it either gint or gint64
@@ -269,31 +272,33 @@
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_MOTIONMASKCOORD,
       g_param_spec_string ("motionmaskcoords", "Motion Mask with Coordinates",
-          "The upper left x, y and lower right x, y coordinates separated with \":\", "
-          "describe a region. Regions separated with \",\"", NULL,
+          "Describe a region with its upper left and lower right x, y "
+          "coordinates separated with \":\". Pass multiple regions as a "
+          "comma-separated list", NULL,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_MOTIONMASKCELLSPOS,
       g_param_spec_string ("motionmaskcellspos",
           "Motion Mask with Cells Position",
-          "The line and column idx separated with \":\" what cells want we mask-out, "
-          "describe a cell. Cells separated with \",\"", NULL,
+          "Describe a cell with its line and column idx separated with \":\". "
+          "Pass multiple cells as a comma-separated list", NULL,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_CELLSCOLOR,
       g_param_spec_string ("cellscolor", "Color of Motion Cells",
-          "The color of motion cells separated with \",\"", "255,255,0",
+          "Color for motion cells in R,G,B format. Max per channel is 255",
+          "255,255,0",
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_MOTIONCELLSIDX,
       g_param_spec_string ("motioncellsidx", "Motion Cells Of Interest(MOCI)",
-          "The line and column idx separated with \":\", "
-          "describe a cell. Cells separated with \",\"", NULL,
+          "Describe a cell with its line and column idx separated with \":\". "
+          "Pass multiple cells as a comma-separated list", NULL,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_CALCULATEMOTION,
       g_param_spec_boolean ("calculatemotion", "Calculate Motion",
-          "If needs calculate motion on frame you need this property setting true otherwise false",
+          "Toggles motion calculation. If FALSE, this filter does nothing",
           TRUE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
   g_object_class_install_property (gobject_class, PROP_MOTIONCELLTHICKNESS,
       g_param_spec_int ("motioncellthickness", "Motion Cell Thickness",
-          "Motion Cell Border Thickness, if it's -1 then motion cell will be fill",
+          "Motion Cell Border Thickness. Set to -1 to fill motion cell",
           THICKNESS_MIN, THICKNESS_MAX, THICKNESS_DEF,
           (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
 
@@ -331,9 +336,9 @@
   filter->postnomotion = POST_NO_MOTION_DEF;
   filter->minimum_motion_frames = MINIMUM_MOTION_FRAMES_DEF;
 
-  filter->prev_datafile = g_strdup (NULL);
-  filter->cur_datafile = g_strdup (NULL);
-  filter->basename_datafile = g_strdup (NULL);
+  filter->prev_datafile = NULL;
+  filter->cur_datafile = NULL;
+  filter->basename_datafile = NULL;
   filter->datafile_extension = g_strdup (DEF_DATAFILEEXT);
   filter->sensitivity = SENSITIVITY_DEFAULT;
   filter->threshold = THRESHOLD_DEFAULT;
@@ -451,7 +456,7 @@
       filter->basename_datafile = g_value_dup_string (value);
 
       if (strlen (filter->basename_datafile) == 0) {
-        filter->cur_datafile = g_strdup (NULL);
+        filter->cur_datafile = NULL;
         break;
       }
       filter->cur_datafile =
@@ -536,10 +541,13 @@
       tmply = -1;
       break;
     case PROP_CELLSCOLOR:
-      colorstr = g_strsplit (g_value_get_string (value), ",", 255);
+      colorstr = g_strsplit (g_value_get_string (value), ",", 4);
       for (cellscolorscnt = 0; colorstr[cellscolorscnt] != NULL;
           ++cellscolorscnt);
-      if (cellscolorscnt == 3) {
+      if (cellscolorscnt != 3) {
+        GST_WARNING_OBJECT (filter, "Ignoring badly-formatted cellscolor RGB "
+            "string");
+      } else {
         sscanf (colorstr[0], "%d", &r);
         sscanf (colorstr[1], "%d", &g);
         sscanf (colorstr[2], "%d", &b);
@@ -1077,7 +1085,7 @@
     GFREE (motionmaskcellsidx);
     GFREE (motioncellsidx);
   } else {
-    GST_WARNING_OBJECT (filter, "error mapping input buffer");
+    GST_WARNING_OBJECT (filter, "Motion detection disabled");
     GST_OBJECT_UNLOCK (filter);
   }
   return GST_FLOW_OK;
diff --git a/ext/opencv/gstpyramidsegment.cpp b/ext/opencv/gstpyramidsegment.cpp
index 0c9f1e9..d8247c0 100644
--- a/ext/opencv/gstpyramidsegment.cpp
+++ b/ext/opencv/gstpyramidsegment.cpp
@@ -108,8 +108,8 @@
 static void gst_pyramid_segment_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
 
-static GstFlowReturn gst_pyramid_segment_transform (GstOpencvVideoFilter * base,
-    GstBuffer * buf, IplImage * img, GstBuffer * outbuf, IplImage * outimg);
+static GstFlowReturn gst_pyramid_segment_transform_ip (GstOpencvVideoFilter *
+    base, GstBuffer * buf, IplImage * img);
 
 /* Clean up */
 static void
@@ -137,7 +137,8 @@
   gobject_class->set_property = gst_pyramid_segment_set_property;
   gobject_class->get_property = gst_pyramid_segment_get_property;
 
-  gstopencvbasefilter_class->cv_trans_func = gst_pyramid_segment_transform;
+  gstopencvbasefilter_class->cv_trans_ip_func =
+      gst_pyramid_segment_transform_ip;
 
   g_object_class_install_property (gobject_class, PROP_SILENT,
       g_param_spec_boolean ("silent", "Silent", "Produce verbose output ?",
@@ -187,7 +188,7 @@
   filter->level = 4;
 
   gst_opencv_video_filter_set_in_place (GST_OPENCV_VIDEO_FILTER_CAST (filter),
-      FALSE);
+      TRUE);
 }
 
 static void
@@ -244,27 +245,14 @@
  * this function does the actual processing
  */
 static GstFlowReturn
-gst_pyramid_segment_transform (GstOpencvVideoFilter * base, GstBuffer * buf,
-    IplImage * img, GstBuffer * outbuf, IplImage * outimg)
+gst_pyramid_segment_transform_ip (GstOpencvVideoFilter * base, GstBuffer * buf,
+    IplImage * img)
 {
   GstPyramidSegment *filter = GST_PYRAMID_SEGMENT (base);
-  GstMapInfo outinfo;
 
-  filter->cvSegmentedImage = cvCloneImage (img);
-
-  cvPyrSegmentation (img, filter->cvSegmentedImage, filter->storage,
+  cvPyrSegmentation (img, img, filter->storage,
       &(filter->comp), filter->level, filter->threshold1, filter->threshold2);
 
-  /* TODO look if there is a way in opencv to reuse the image data and
-   * delete only the struct headers. Would avoid a memcpy here */
-
-  gst_buffer_map (outbuf, &outinfo, GST_MAP_WRITE);
-  memcpy (outinfo.data, filter->cvSegmentedImage->imageData,
-      gst_buffer_get_size (outbuf));
-
-  cvReleaseImage (&filter->cvSegmentedImage);
-  g_assert (filter->cvSegmentedImage == NULL);
-
   return GST_FLOW_OK;
 }
 
diff --git a/ext/opencv/gstpyramidsegment.h b/ext/opencv/gstpyramidsegment.h
index bb87253..e715766 100644
--- a/ext/opencv/gstpyramidsegment.h
+++ b/ext/opencv/gstpyramidsegment.h
@@ -48,10 +48,7 @@
 
 #include <gstopencvvideofilter.h>
 #include <opencv2/core/version.hpp>
-
-#if CV_MAJOR_VERSION * 100 + CV_MINOR_VERSION >= 204
 #include <opencv2/legacy/legacy.hpp>
-#endif
 
 G_BEGIN_DECLS
 /* #defines don't like whitespacey bits */
@@ -77,8 +74,6 @@
 
   gboolean silent;
 
-  IplImage *cvSegmentedImage;
-
   CvMemStorage *storage;
 
   CvSeq *comp;
diff --git a/ext/opencv/gstskindetect.cpp b/ext/opencv/gstskindetect.cpp
index 8ecb044..aade23c 100644
--- a/ext/opencv/gstskindetect.cpp
+++ b/ext/opencv/gstskindetect.cpp
@@ -314,15 +314,13 @@
 {
   GstSkinDetect *filter = GST_SKIN_DETECT (base);
 
-
-
   filter->cvRGB->imageData = (char *) img->imageData;
   filter->cvSkin->imageData = (char *) outimg->imageData;
 
   /* SKIN COLOUR BLOB DETECTION */
   if (HSV == filter->method) {
     cvCvtColor (filter->cvRGB, filter->cvHSV, CV_RGB2HSV);
-    cvCvtPixToPlane (filter->cvHSV, filter->cvH, filter->cvS, filter->cvV, 0);  /*  Extract the 3 color components. */
+    cvSplit (filter->cvHSV, filter->cvH, filter->cvS, filter->cvV, 0);  /*  Extract the 3 color components. */
 
     /*  Detect which pixels in each of the H, S and V channels are probably skin pixels.
        Assume that skin has a Hue between 0 to 18 (out of 180), and Saturation above 50, and Brightness above 80. */
diff --git a/ext/openexr/Makefile.in b/ext/openexr/Makefile.in
index 8b8d9fb..71abb32 100644
--- a/ext/openexr/Makefile.in
+++ b/ext/openexr/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -343,7 +342,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -365,7 +363,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -387,9 +384,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -551,6 +545,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -564,8 +559,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -652,8 +645,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -705,6 +696,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -725,6 +717,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -762,7 +756,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/openh264/Makefile.in b/ext/openh264/Makefile.in
index c72ede9..18316c1 100644
--- a/ext/openh264/Makefile.in
+++ b/ext/openh264/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -343,7 +342,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -365,7 +363,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -387,9 +384,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -551,6 +545,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -564,8 +559,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -652,8 +645,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -705,6 +696,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -725,6 +717,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -762,7 +756,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/openjpeg/Makefile.in b/ext/openjpeg/Makefile.in
index ccd7ade..d37771a 100644
--- a/ext/openjpeg/Makefile.in
+++ b/ext/openjpeg/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/openni2/Makefile.in b/ext/openni2/Makefile.in
index 5a1f905..4027595 100644
--- a/ext/openni2/Makefile.in
+++ b/ext/openni2/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/opus/Makefile.in b/ext/opus/Makefile.in
index 50ffa36..c0f3f40 100644
--- a/ext/opus/Makefile.in
+++ b/ext/opus/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -328,7 +327,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -350,7 +348,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -372,9 +369,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -536,6 +530,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -549,8 +544,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -637,8 +630,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -690,6 +681,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -710,6 +702,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -747,7 +741,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/opus/gstopusdec.c b/ext/opus/gstopusdec.c
index f2512d1..1470ea3 100644
--- a/ext/opus/gstopusdec.c
+++ b/ext/opus/gstopusdec.c
@@ -133,8 +133,8 @@
       "Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>");
   g_object_class_install_property (gobject_class, PROP_USE_INBAND_FEC,
       g_param_spec_boolean ("use-inband-fec", "Use in-band FEC",
-          "Use forward error correction if available", DEFAULT_USE_INBAND_FEC,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          "Use forward error correction if available (needs PLC enabled)",
+          DEFAULT_USE_INBAND_FEC, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_APPLY_GAIN,
       g_param_spec_boolean ("apply-gain", "Apply gain",
@@ -367,7 +367,7 @@
   GstFlowReturn res = GST_FLOW_OK;
   gsize size;
   guint8 *data;
-  GstBuffer *outbuf;
+  GstBuffer *outbuf, *bufd;
   gint16 *out_data;
   int n, err;
   int samples;
@@ -429,6 +429,9 @@
       && gst_buffer_get_size (dec->last_buffer) >
       0) ? dec->last_buffer : buffer;
 
+  /* That's the buffer we get duration from */
+  bufd = dec->use_inband_fec ? dec->last_buffer : buffer;
+
   if (buf && gst_buffer_get_size (buf) > 0) {
     gst_buffer_map (buf, &map, GST_MAP_READ);
     data = map.data;
@@ -441,10 +444,10 @@
     size = 0;
   }
 
-  if (gst_buffer_get_size (buffer) == 0) {
+  if (gst_buffer_get_size (bufd) == 0) {
     GstClockTime const opus_plc_alignment = 2500 * GST_USECOND;
     GstClockTime aligned_missing_duration;
-    GstClockTime missing_duration = GST_BUFFER_DURATION (buffer);
+    GstClockTime missing_duration = GST_BUFFER_DURATION (bufd);
 
     GST_DEBUG_OBJECT (dec,
         "missing buffer, doing PLC duration %" GST_TIME_FORMAT
@@ -455,9 +458,10 @@
     missing_duration += dec->leftover_plc_duration;
 
     /* align the combined buffer and leftover PLC duration to multiples
-     * of 2.5ms, always rounding down, and store excess duration for later */
+     * of 2.5ms, rounding to nearest, and store excess duration for later */
     aligned_missing_duration =
-        (missing_duration / opus_plc_alignment) * opus_plc_alignment;
+        ((missing_duration +
+            opus_plc_alignment / 2) / opus_plc_alignment) * opus_plc_alignment;
     dec->leftover_plc_duration = missing_duration - aligned_missing_duration;
 
     /* Opus' PLC cannot operate with less than 2.5ms; skip PLC
diff --git a/ext/qt/Makefile.in b/ext/qt/Makefile.in
index 3d700c0..b4293a5 100644
--- a/ext/qt/Makefile.in
+++ b/ext/qt/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -349,7 +348,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -371,7 +369,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -393,9 +390,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -557,6 +551,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -570,8 +565,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -658,8 +651,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -711,6 +702,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -731,6 +723,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -768,7 +762,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/qt/gstqtsink.cc b/ext/qt/gstqtsink.cc
index 6a25793..b6a6fa5 100644
--- a/ext/qt/gstqtsink.cc
+++ b/ext/qt/gstqtsink.cc
@@ -58,8 +58,12 @@
 GST_STATIC_PAD_TEMPLATE ("sink",
     GST_PAD_SINK,
     GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
-        (GST_CAPS_FEATURE_MEMORY_GL_MEMORY, "RGBA")));
+    GST_STATIC_CAPS ("video/x-raw(" GST_CAPS_FEATURE_MEMORY_GL_MEMORY "), "
+    "format = (string) RGBA, "
+    "width = " GST_VIDEO_SIZE_RANGE ", "
+    "height = " GST_VIDEO_SIZE_RANGE ", "
+    "framerate = " GST_VIDEO_FPS_RANGE ", "
+    "texture-target = (string) 2D"));
 
 #define DEFAULT_FORCE_ASPECT_RATIO  TRUE
 #define DEFAULT_PAR_N               0
diff --git a/ext/qt/qtitem.cc b/ext/qt/qtitem.cc
index ca8e535..9dc058a 100644
--- a/ext/qt/qtitem.cc
+++ b/ext/qt/qtitem.cc
@@ -211,6 +211,7 @@
   tex = static_cast<GstQSGTexture *> (texNode->texture());
   tex->setCaps (this->priv->caps);
   tex->setBuffer (this->priv->buffer);
+  texNode->markDirty(QSGNode::DirtyMaterial);
 
   if (this->priv->force_aspect_ratio) {
     src.w = this->priv->display_width;
diff --git a/ext/resindvd/Makefile.in b/ext/resindvd/Makefile.in
index 9df265f..09c023b 100644
--- a/ext/resindvd/Makefile.in
+++ b/ext/resindvd/Makefile.in
@@ -118,16 +118,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -333,7 +332,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -355,7 +353,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -377,9 +374,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -541,6 +535,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -554,8 +549,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -642,8 +635,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -695,6 +686,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -715,6 +707,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -752,7 +746,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/resindvd/resindvdbin.c b/ext/resindvd/resindvdbin.c
index bb33cd7..107f9d6 100644
--- a/ext/resindvd/resindvdbin.c
+++ b/ext/resindvd/resindvdbin.c
@@ -32,7 +32,6 @@
 #include "resindvdbin.h"
 #include "resindvdsrc.h"
 #include "rsninputselector.h"
-// #include "rsnaudiomunge.h"
 #include "rsndec.h"
 #include "rsnparsetter.h"
 
diff --git a/ext/rsvg/Makefile.in b/ext/rsvg/Makefile.in
index 3154ef9..210403a 100644
--- a/ext/rsvg/Makefile.in
+++ b/ext/rsvg/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/rsvg/gstrsvgdec.h b/ext/rsvg/gstrsvgdec.h
index 8d7173b..3770020 100644
--- a/ext/rsvg/gstrsvgdec.h
+++ b/ext/rsvg/gstrsvgdec.h
@@ -27,9 +27,6 @@
 #include <cairo/cairo.h>
 
 #include <librsvg/rsvg.h>
-#ifndef HAVE_RSVG_2_36_2
-#include <librsvg/rsvg-cairo.h>
-#endif
 
 G_BEGIN_DECLS
 
diff --git a/ext/rsvg/gstrsvgoverlay.h b/ext/rsvg/gstrsvgoverlay.h
index 151d094..9cd00fa 100644
--- a/ext/rsvg/gstrsvgoverlay.h
+++ b/ext/rsvg/gstrsvgoverlay.h
@@ -21,9 +21,6 @@
 #define __GST_RSVG_OVERLAY_H__
 
 #include <librsvg/rsvg.h>
-#ifndef HAVE_RSVG_2_36_2
-#include <librsvg/rsvg-cairo.h>
-#endif
 #include <gst/gst.h>
 #include <gst/video/video.h>
 #include <gst/video/gstvideofilter.h>
diff --git a/ext/rtmp/Makefile.in b/ext/rtmp/Makefile.in
index 43cdb8b..d99969a 100644
--- a/ext/rtmp/Makefile.in
+++ b/ext/rtmp/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/rtmp/README b/ext/rtmp/README
index e9860a5..4f6e413 100644
--- a/ext/rtmp/README
+++ b/ext/rtmp/README
@@ -1,6 +1,6 @@
-rtmpsrc:
+rtmpsrc/sink:
 
-This plugin requires librtmp from http://rtmpdump.mplayerhq.hu/
+These plugins require librtmp from http://rtmpdump.mplayerhq.hu/
 
 You have to build librtmp with -fPIC to be able to use it
 with the GStreamer plugin: make XCFLAGS="-fPIC"
diff --git a/ext/rtmp/gstrtmp.c b/ext/rtmp/gstrtmp.c
index 76173f3..935304d 100644
--- a/ext/rtmp/gstrtmp.c
+++ b/ext/rtmp/gstrtmp.c
@@ -50,11 +50,17 @@
     case RTMP_LOGWARNING:
       gst_level = GST_LEVEL_WARNING;
       break;
+    case RTMP_LOGINFO:
+      gst_level = GST_LEVEL_INFO;
+      break;
     case RTMP_LOGDEBUG:
       gst_level = GST_LEVEL_DEBUG;
       break;
+    case RTMP_LOGDEBUG2:
+      gst_level = GST_LEVEL_LOG;
+      break;
     default:
-      gst_level = GST_LEVEL_INFO;
+      gst_level = GST_LEVEL_TRACE;
       break;
   }
 
@@ -68,14 +74,27 @@
 
   RTMP_LogSetCallback (gst_rtmp_log_callback);
   gst_level = gst_debug_category_get_threshold (rtmp_debug);
-  if (gst_level >= GST_LEVEL_LOG)
-    RTMP_LogSetLevel (RTMP_LOGALL);
-  else if (gst_level >= GST_LEVEL_DEBUG)
-    RTMP_LogSetLevel (RTMP_LOGDEBUG);
-  else if (gst_level >= GST_LEVEL_INFO)
-    RTMP_LogSetLevel (RTMP_LOGINFO);
-  else if (gst_level >= GST_LEVEL_WARNING)
-    RTMP_LogSetLevel (RTMP_LOGWARNING);
+
+  switch (gst_level) {
+    case GST_LEVEL_ERROR:
+      RTMP_LogSetLevel (RTMP_LOGERROR);
+      break;
+    case GST_LEVEL_WARNING:
+    case GST_LEVEL_FIXME:
+      RTMP_LogSetLevel (RTMP_LOGWARNING);
+      break;
+    case GST_LEVEL_INFO:
+      RTMP_LogSetLevel (RTMP_LOGINFO);
+      break;
+    case GST_LEVEL_DEBUG:
+      RTMP_LogSetLevel (RTMP_LOGDEBUG);
+      break;
+    case GST_LEVEL_LOG:
+      RTMP_LogSetLevel (RTMP_LOGDEBUG2);
+      break;
+    default:                   /* _TRACE and beyond */
+      RTMP_LogSetLevel (RTMP_LOGALL);
+  }
 }
 #endif
 
diff --git a/ext/rtmp/gstrtmpsink.c b/ext/rtmp/gstrtmpsink.c
index 095c6ef..781f3bf 100644
--- a/ext/rtmp/gstrtmpsink.c
+++ b/ext/rtmp/gstrtmpsink.c
@@ -76,6 +76,7 @@
 static gboolean gst_rtmp_sink_stop (GstBaseSink * sink);
 static gboolean gst_rtmp_sink_start (GstBaseSink * sink);
 static gboolean gst_rtmp_sink_event (GstBaseSink * sink, GstEvent * event);
+static gboolean gst_rtmp_sink_setcaps (GstBaseSink * sink, GstCaps * caps);
 static GstFlowReturn gst_rtmp_sink_render (GstBaseSink * sink, GstBuffer * buf);
 
 #define gst_rtmp_sink_parent_class parent_class
@@ -114,7 +115,8 @@
   gstbasesink_class->start = GST_DEBUG_FUNCPTR (gst_rtmp_sink_start);
   gstbasesink_class->stop = GST_DEBUG_FUNCPTR (gst_rtmp_sink_stop);
   gstbasesink_class->render = GST_DEBUG_FUNCPTR (gst_rtmp_sink_render);
-  gstbasesink_class->event = gst_rtmp_sink_event;
+  gstbasesink_class->set_caps = GST_DEBUG_FUNCPTR (gst_rtmp_sink_setcaps);
+  gstbasesink_class->event = GST_DEBUG_FUNCPTR (gst_rtmp_sink_event);
 
   GST_DEBUG_CATEGORY_INIT (gst_rtmp_sink_debug, "rtmpsink", 0,
       "RTMP server element");
@@ -162,15 +164,17 @@
 
   sink->rtmp_uri = g_strdup (sink->uri);
   sink->rtmp = RTMP_Alloc ();
+
+  if (!sink->rtmp) {
+    GST_ERROR_OBJECT (sink, "Could not allocate librtmp's RTMP context");
+    goto error;
+  }
+
   RTMP_Init (sink->rtmp);
   if (!RTMP_SetupURL (sink->rtmp, sink->rtmp_uri)) {
     GST_ELEMENT_ERROR (sink, RESOURCE, OPEN_WRITE, (NULL),
         ("Failed to setup URL '%s'", sink->uri));
-    RTMP_Free (sink->rtmp);
-    sink->rtmp = NULL;
-    g_free (sink->rtmp_uri);
-    sink->rtmp_uri = NULL;
-    return FALSE;
+    goto error;
   }
 
   GST_DEBUG_OBJECT (sink, "Created RTMP object");
@@ -182,6 +186,15 @@
   sink->have_write_error = FALSE;
 
   return TRUE;
+
+error:
+  if (sink->rtmp) {
+    RTMP_Free (sink->rtmp);
+    sink->rtmp = NULL;
+  }
+  g_free (sink->rtmp_uri);
+  sink->rtmp_uri = NULL;
+  return FALSE;
 }
 
 static gboolean
@@ -189,8 +202,10 @@
 {
   GstRTMPSink *sink = GST_RTMP_SINK (basesink);
 
-  gst_buffer_replace (&sink->cache, NULL);
-
+  if (sink->header) {
+    gst_buffer_unref (sink->header);
+    sink->header = NULL;
+  }
   if (sink->rtmp) {
     RTMP_Close (sink->rtmp);
     RTMP_Free (sink->rtmp);
@@ -208,7 +223,7 @@
 gst_rtmp_sink_render (GstBaseSink * bsink, GstBuffer * buf)
 {
   GstRTMPSink *sink = GST_RTMP_SINK (bsink);
-  GstBuffer *reffed_buf = NULL;
+  gboolean need_unref = FALSE;
   GstMapInfo map = GST_MAP_INFO_INIT;
 
   if (sink->rtmp == NULL) {
@@ -217,6 +232,11 @@
     return GST_FLOW_ERROR;
   }
 
+  /* Ignore buffers that are in the stream headers (caps) */
+  if (GST_BUFFER_FLAG_IS_SET (buf, GST_BUFFER_FLAG_HEADER)) {
+    return GST_FLOW_OK;
+  }
+
   if (sink->first) {
     /* open the connection */
     if (!RTMP_IsConnected (sink->rtmp)) {
@@ -234,21 +254,14 @@
       GST_DEBUG_OBJECT (sink, "Opened connection to %s", sink->rtmp_uri);
     }
 
-    /* FIXME: Parse the first buffer and see if it contains a header plus a packet instead
-     * of just assuming it's only the header */
-    GST_LOG_OBJECT (sink, "Caching first buffer of size %" G_GSIZE_FORMAT
-        " for concatenation", gst_buffer_get_size (buf));
-    gst_buffer_replace (&sink->cache, buf);
-    sink->first = FALSE;
-    return GST_FLOW_OK;
-  }
+    /* Prepend the header from the caps to the first non header buffer */
+    if (sink->header) {
+      buf = gst_buffer_append (gst_buffer_ref (sink->header),
+          gst_buffer_ref (buf));
+      need_unref = TRUE;
+    }
 
-  if (sink->cache) {
-    GST_LOG_OBJECT (sink, "Joining 2nd buffer of size %" G_GSIZE_FORMAT
-        " to cached buf", gst_buffer_get_size (buf));
-    gst_buffer_ref (buf);
-    reffed_buf = buf = gst_buffer_append (sink->cache, buf);
-    sink->cache = NULL;
+    sink->first = FALSE;
   }
 
   if (sink->have_write_error)
@@ -263,8 +276,8 @@
     goto write_failed;
 
   gst_buffer_unmap (buf, &map);
-  if (reffed_buf)
-    gst_buffer_unref (reffed_buf);
+  if (need_unref)
+    gst_buffer_unref (buf);
 
   return GST_FLOW_OK;
 
@@ -273,8 +286,8 @@
   {
     GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, (NULL), ("Failed to write data"));
     gst_buffer_unmap (buf, &map);
-    if (reffed_buf)
-      gst_buffer_unref (reffed_buf);
+    if (need_unref)
+      gst_buffer_unref (buf);
     sink->have_write_error = TRUE;
     return GST_FLOW_ERROR;
   }
@@ -381,6 +394,49 @@
 }
 
 static gboolean
+gst_rtmp_sink_setcaps (GstBaseSink * sink, GstCaps * caps)
+{
+  GstRTMPSink *rtmpsink = GST_RTMP_SINK (sink);
+  GstStructure *s;
+  const GValue *sh;
+  GArray *buffers;
+  gint i;
+
+  GST_DEBUG_OBJECT (sink, "caps set to %" GST_PTR_FORMAT, caps);
+
+  /* Clear our current header buffer */
+  if (rtmpsink->header) {
+    gst_buffer_unref (rtmpsink->header);
+    rtmpsink->header = NULL;
+  }
+
+  rtmpsink->header = gst_buffer_new ();
+
+  s = gst_caps_get_structure (caps, 0);
+
+  sh = gst_structure_get_value (s, "streamheader");
+  buffers = g_value_peek_pointer (sh);
+
+  /* Concatenate all buffers in streamheader into one */
+  for (i = 0; i < buffers->len; ++i) {
+    GValue *val;
+    GstBuffer *buf;
+
+    val = &g_array_index (buffers, GValue, i);
+    buf = g_value_peek_pointer (val);
+
+    gst_buffer_ref (buf);
+
+    rtmpsink->header = gst_buffer_append (rtmpsink->header, buf);
+  }
+
+  GST_DEBUG_OBJECT (rtmpsink, "have %" G_GSIZE_FORMAT " bytes of header data",
+      gst_buffer_get_size (rtmpsink->header));
+
+  return TRUE;
+}
+
+static gboolean
 gst_rtmp_sink_event (GstBaseSink * sink, GstEvent * event)
 {
   GstRTMPSink *rtmpsink = GST_RTMP_SINK (sink);
diff --git a/ext/rtmp/gstrtmpsink.h b/ext/rtmp/gstrtmpsink.h
index 523f5ae..b9072f5 100644
--- a/ext/rtmp/gstrtmpsink.h
+++ b/ext/rtmp/gstrtmpsink.h
@@ -53,7 +53,7 @@
   RTMP *rtmp;
   gchar *rtmp_uri; /* copy of url for librtmp */
 
-  GstBuffer *cache; /* Cached buffer */
+  GstBuffer *header;
   gboolean first;
   gboolean have_write_error;
 };
diff --git a/ext/rtmp/gstrtmpsrc.c b/ext/rtmp/gstrtmpsrc.c
index 46918e7..02cbec1 100644
--- a/ext/rtmp/gstrtmpsrc.c
+++ b/ext/rtmp/gstrtmpsrc.c
@@ -575,13 +575,17 @@
   src->discont = TRUE;
 
   src->rtmp = RTMP_Alloc ();
+
+  if (!src->rtmp) {
+    GST_ERROR_OBJECT (src, "Could not allocate librtmp's RTMP context");
+    goto error;
+  }
+
   RTMP_Init (src->rtmp);
   if (!RTMP_SetupURL (src->rtmp, src->uri)) {
     GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL),
         ("Failed to setup URL '%s'", src->uri));
-    RTMP_Free (src->rtmp);
-    src->rtmp = NULL;
-    return FALSE;
+    goto error;
   }
   src->seekable = !(src->rtmp->Link.lFlags & RTMP_LF_LIVE);
   GST_INFO_OBJECT (src, "seekable %d", src->seekable);
@@ -591,13 +595,18 @@
     if (!RTMP_Connect (src->rtmp, NULL)) {
       GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL),
           ("Could not connect to RTMP stream \"%s\" for reading", src->uri));
-      RTMP_Free (src->rtmp);
-      src->rtmp = NULL;
-      return FALSE;
+      goto error;
     }
   }
 
   return TRUE;
+
+error:
+  if (src->rtmp) {
+    RTMP_Free (src->rtmp);
+    src->rtmp = NULL;
+  }
+  return FALSE;
 }
 
 #undef STR2AVAL
diff --git a/ext/sbc/Makefile.in b/ext/sbc/Makefile.in
index b691b3e..1fbcab3 100644
--- a/ext/sbc/Makefile.in
+++ b/ext/sbc/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/sbc/gstsbcdec.c b/ext/sbc/gstsbcdec.c
index 5031dd9..086fe1f 100644
--- a/ext/sbc/gstsbcdec.c
+++ b/ext/sbc/gstsbcdec.c
@@ -159,13 +159,13 @@
     return FALSE;
 
   if (strcmp (channel_mode, "mono") == 0) {
-    dec->frame_len = 4 + (subbands * 1) / 2 + (blocks * 1 * bitpool) / 8;
+    dec->frame_len = 4 + (subbands * 1) / 2 + ((blocks * 1 * bitpool) + 7) / 8;
   } else if (strcmp (channel_mode, "dual") == 0) {
-    dec->frame_len = 4 + (subbands * 2) / 2 + (blocks * 2 * bitpool) / 8;
+    dec->frame_len = 4 + (subbands * 2) / 2 + ((blocks * 2 * bitpool) + 7) / 8;
   } else if (strcmp (channel_mode, "stereo") == 0) {
-    dec->frame_len = 4 + (subbands * 2) / 2 + (blocks * bitpool) / 8;
+    dec->frame_len = 4 + (subbands * 2) / 2 + ((blocks * bitpool) + 7) / 8;
   } else if (strcmp (channel_mode, "joint") == 0) {
-    dec->frame_len = 4 + (subbands * 2) / 2 + (subbands + blocks * bitpool) / 8;
+    dec->frame_len = 4 + (subbands * 2) / 2 + ((subbands + blocks * bitpool) + 7) / 8;
   } else {
     return FALSE;
   }
diff --git a/ext/schroedinger/Makefile.in b/ext/schroedinger/Makefile.in
index f8f6d6c..6f99e31 100644
--- a/ext/schroedinger/Makefile.in
+++ b/ext/schroedinger/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -326,7 +325,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -348,7 +346,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -370,9 +367,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -534,6 +528,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -547,8 +542,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -635,8 +628,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -688,6 +679,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -708,6 +700,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -745,7 +739,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/sdl/Makefile.in b/ext/sdl/Makefile.in
index 25072e8..9aa7c90 100644
--- a/ext/sdl/Makefile.in
+++ b/ext/sdl/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/smoothstreaming/Makefile.am b/ext/smoothstreaming/Makefile.am
index 5f331f3..4faf9df 100644
--- a/ext/smoothstreaming/Makefile.am
+++ b/ext/smoothstreaming/Makefile.am
@@ -6,7 +6,6 @@
     -DGST_USE_UNSTABLE_API $(LIBXML2_CFLAGS)
 libgstsmoothstreaming_la_LIBADD = \
     $(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$(GST_API_VERSION).la \
-    $(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-$(GST_API_VERSION).la \
     $(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la \
     $(GST_PLUGINS_BASE_LIBS) \
     -lgsttag-$(GST_API_VERSION) \
diff --git a/ext/smoothstreaming/Makefile.in b/ext/smoothstreaming/Makefile.in
index 5932334..77abcae 100644
--- a/ext/smoothstreaming/Makefile.in
+++ b/ext/smoothstreaming/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -165,7 +164,6 @@
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libgstsmoothstreaming_la_DEPENDENCIES = $(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$(GST_API_VERSION).la \
-	$(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-$(GST_API_VERSION).la \
 	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
@@ -330,7 +328,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -352,7 +349,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -374,9 +370,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -538,6 +531,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -551,8 +545,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -639,8 +631,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -692,6 +682,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -712,6 +703,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -749,7 +742,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -796,7 +788,6 @@
 
 libgstsmoothstreaming_la_LIBADD = \
     $(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$(GST_API_VERSION).la \
-    $(top_builddir)/gst-libs/gst/uridownloader/libgsturidownloader-$(GST_API_VERSION).la \
     $(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la \
     $(GST_PLUGINS_BASE_LIBS) \
     -lgsttag-$(GST_API_VERSION) \
diff --git a/ext/smoothstreaming/gstmssdemux.c b/ext/smoothstreaming/gstmssdemux.c
index c6fbd1a..c975e17 100644
--- a/ext/smoothstreaming/gstmssdemux.c
+++ b/ext/smoothstreaming/gstmssdemux.c
@@ -122,9 +122,10 @@
 static GstClockTime gst_mss_demux_get_duration (GstAdaptiveDemux * demux);
 static void gst_mss_demux_reset (GstAdaptiveDemux * demux);
 static GstFlowReturn gst_mss_demux_stream_seek (GstAdaptiveDemuxStream * stream,
-    GstClockTime ts);
-static gboolean
-gst_mss_demux_stream_has_next_fragment (GstAdaptiveDemuxStream * stream);
+    gboolean forward, GstSeekFlags flags, GstClockTime ts,
+    GstClockTime * final_ts);
+static gboolean gst_mss_demux_stream_has_next_fragment (GstAdaptiveDemuxStream *
+    stream);
 static GstFlowReturn
 gst_mss_demux_stream_advance_fragment (GstAdaptiveDemuxStream * stream);
 static gboolean gst_mss_demux_stream_select_bitrate (GstAdaptiveDemuxStream *
@@ -304,11 +305,13 @@
 }
 
 static GstFlowReturn
-gst_mss_demux_stream_seek (GstAdaptiveDemuxStream * stream, GstClockTime ts)
+gst_mss_demux_stream_seek (GstAdaptiveDemuxStream * stream, gboolean forward,
+    GstSeekFlags flags, GstClockTime ts, GstClockTime * final_ts)
 {
   GstMssDemuxStream *mssstream = (GstMssDemuxStream *) stream;
 
-  gst_mss_stream_seek (mssstream->manifest_stream, ts);
+  gst_mss_stream_seek (mssstream->manifest_stream, forward, flags, ts,
+      final_ts);
   return GST_FLOW_OK;
 }
 
@@ -354,8 +357,7 @@
   }
 
   if (tmpl != NULL) {
-    srcpad =
-        GST_PAD_CAST (gst_ghost_pad_new_no_target_from_template (name, tmpl));
+    srcpad = GST_PAD_CAST (gst_pad_new_from_template (tmpl, name));
     g_free (name);
     gst_object_unref (tmpl);
   }
@@ -585,6 +587,10 @@
   return ret;
 }
 
+#define SEEK_UPDATES_PLAY_POSITION(r, start_type, stop_type) \
+  ((r >= 0 && start_type != GST_SEEK_TYPE_NONE) || \
+   (r < 0 && stop_type != GST_SEEK_TYPE_NONE))
+
 static gboolean
 gst_mss_demux_seek (GstAdaptiveDemux * demux, GstEvent * seek)
 {
@@ -602,7 +608,12 @@
       "seek event, rate: %f start: %" GST_TIME_FORMAT " stop: %"
       GST_TIME_FORMAT, rate, GST_TIME_ARGS (start), GST_TIME_ARGS (stop));
 
-  gst_mss_manifest_seek (mssdemux->manifest, start);
+  if (SEEK_UPDATES_PLAY_POSITION (rate, start_type, stop_type)) {
+    if (rate >= 0)
+      gst_mss_manifest_seek (mssdemux->manifest, rate >= 0, start);
+    else
+      gst_mss_manifest_seek (mssdemux->manifest, rate >= 0, stop);
+  }
 
   return TRUE;
 }
diff --git a/ext/smoothstreaming/gstmssdemux.h b/ext/smoothstreaming/gstmssdemux.h
index 5c56e23..f3ea6cf 100644
--- a/ext/smoothstreaming/gstmssdemux.h
+++ b/ext/smoothstreaming/gstmssdemux.h
@@ -29,7 +29,6 @@
 #include <gst/base/gstdataqueue.h>
 #include <gst/gstprotection.h>
 #include "gstmssmanifest.h"
-#include <gst/uridownloader/gsturidownloader.h>
 
 G_BEGIN_DECLS
 
diff --git a/ext/smoothstreaming/gstmssmanifest.c b/ext/smoothstreaming/gstmssmanifest.c
index 09a076b..02e559c 100644
--- a/ext/smoothstreaming/gstmssmanifest.c
+++ b/ext/smoothstreaming/gstmssmanifest.c
@@ -1089,25 +1089,32 @@
 /**
  * Seeks all streams to the fragment that contains the set time
  *
+ * @forward: if this is forward playback
  * @time: time in nanoseconds
  */
 void
-gst_mss_manifest_seek (GstMssManifest * manifest, guint64 time)
+gst_mss_manifest_seek (GstMssManifest * manifest, gboolean forward,
+    guint64 time)
 {
   GSList *iter;
 
   for (iter = manifest->streams; iter; iter = g_slist_next (iter)) {
-    gst_mss_stream_seek (iter->data, time);
+    gst_mss_stream_seek (iter->data, forward, 0, time, NULL);
   }
 }
 
+#define SNAP_AFTER(forward,flags) \
+    ((forward && (flags & GST_SEEK_FLAG_SNAP_AFTER)) || \
+    (!forward && (flags & GST_SEEK_FLAG_SNAP_BEFORE)))
+
 /**
  * Seeks this stream to the fragment that contains the sample at time
  *
  * @time: time in nanoseconds
  */
 void
-gst_mss_stream_seek (GstMssStream * stream, guint64 time)
+gst_mss_stream_seek (GstMssStream * stream, gboolean forward,
+    GstSeekFlags flags, guint64 time, guint64 * final_time)
 {
   GList *iter;
   guint64 timescale;
@@ -1117,37 +1124,60 @@
   time = gst_util_uint64_scale_round (time, timescale, GST_SECOND);
 
   GST_DEBUG ("Stream %s seeking to %" G_GUINT64_FORMAT, stream->url, time);
-
   for (iter = stream->fragments; iter; iter = g_list_next (iter)) {
-    GList *next = g_list_next (iter);
-    if (next) {
-      fragment = next->data;
+    fragment = iter->data;
+    if (fragment->time + fragment->repetitions * fragment->duration > time) {
+      stream->current_fragment = iter;
+      stream->fragment_repetition_index =
+          (time - fragment->time) / fragment->duration;
+      if (((time - fragment->time) % fragment->duration) == 0) {
 
-      if (fragment->time > time) {
-        stream->current_fragment = iter;
-        break;
+        /* for reverse playback, start from the previous fragment when we are
+         * exactly at a limit */
+        if (!forward)
+          stream->fragment_repetition_index--;
+      } else if (SNAP_AFTER (forward, flags))
+        stream->fragment_repetition_index++;
+
+      if (stream->fragment_repetition_index == fragment->repetitions) {
+        /* move to the next one */
+        stream->fragment_repetition_index = 0;
+        stream->current_fragment = g_list_next (iter);
+        fragment =
+            stream->current_fragment ? stream->current_fragment->data : NULL;
+
+      } else if (stream->fragment_repetition_index == -1) {
+        if (g_list_previous (iter)) {
+          stream->current_fragment = g_list_previous (iter);
+          fragment = stream->current_fragment->data;
+          g_assert (fragment);
+          stream->fragment_repetition_index = fragment->repetitions - 1;
+        } else {
+          stream->fragment_repetition_index = 0;
+        }
       }
-    } else {
-      fragment = iter->data;
-      if (fragment->time + fragment->repetitions * fragment->duration > time) {
-        stream->current_fragment = iter;
-      } else {
-        stream->current_fragment = NULL;        /* EOS */
-      }
+
       break;
     }
-  }
 
-  /* position inside the repetitions */
-  if (stream->current_fragment) {
-    fragment = stream->current_fragment->data;
-    stream->fragment_repetition_index =
-        (time - fragment->time) / fragment->duration;
   }
 
   GST_DEBUG ("Stream %s seeked to fragment time %" G_GUINT64_FORMAT
-      " repetition %u", stream->url, fragment->time,
+      " repetition %u", stream->url,
+      fragment ? fragment->time : GST_CLOCK_TIME_NONE,
       stream->fragment_repetition_index);
+  if (final_time) {
+    if (fragment) {
+      *final_time = gst_util_uint64_scale_round (fragment->time +
+          stream->fragment_repetition_index * fragment->duration,
+          GST_SECOND, timescale);
+    } else {
+      GstMssStreamFragment *last_fragment = g_list_last (iter)->data;
+      *final_time = gst_util_uint64_scale_round (last_fragment->time +
+          last_fragment->repetitions * last_fragment->duration,
+          GST_SECOND, timescale);
+    }
+  }
 }
 
 guint64
@@ -1200,7 +1230,9 @@
     g_list_free_full (stream->fragments, g_free);
     stream->fragments = g_list_reverse (builder.fragments);
     stream->current_fragment = stream->fragments;
-    gst_mss_stream_seek (stream, current_gst_time);
+    /* TODO Verify how repositioning here works for reverse
+     * playback - it might start from the wrong fragment */
+    gst_mss_stream_seek (stream, TRUE, 0, current_gst_time, NULL);
   }
 }
 
@@ -1230,8 +1262,6 @@
   xmlNodePtr root;
   GstMapInfo info;
 
-  g_return_if_fail (manifest->is_live);
-
   gst_buffer_map (data, &info, GST_MAP_READ);
 
   xml = xmlReadMemory ((const gchar *) info.data,
diff --git a/ext/smoothstreaming/gstmssmanifest.h b/ext/smoothstreaming/gstmssmanifest.h
index 65330b4..af7419c 100644
--- a/ext/smoothstreaming/gstmssmanifest.h
+++ b/ext/smoothstreaming/gstmssmanifest.h
@@ -44,7 +44,7 @@
 guint64 gst_mss_manifest_get_timescale (GstMssManifest * manifest);
 guint64 gst_mss_manifest_get_duration (GstMssManifest * manifest);
 GstClockTime gst_mss_manifest_get_gst_duration (GstMssManifest * manifest);
-void gst_mss_manifest_seek (GstMssManifest * manifest, guint64 time);
+void gst_mss_manifest_seek (GstMssManifest * manifest, gboolean forward, guint64 time);
 gboolean gst_mss_manifest_change_bitrate (GstMssManifest *manifest, guint64 bitrate);
 guint64 gst_mss_manifest_get_current_bitrate (GstMssManifest * manifest);
 gboolean gst_mss_manifest_is_live (GstMssManifest * manifest);
@@ -67,7 +67,7 @@
 gboolean gst_mss_stream_has_next_fragment (GstMssStream * stream);
 GstFlowReturn gst_mss_stream_advance_fragment (GstMssStream * stream);
 GstFlowReturn gst_mss_stream_regress_fragment (GstMssStream * stream);
-void gst_mss_stream_seek (GstMssStream * stream, guint64 time);
+void gst_mss_stream_seek (GstMssStream * stream, gboolean forward, GstSeekFlags flags, guint64 time, guint64 * final_time);
 const gchar * gst_mss_stream_get_lang (GstMssStream * stream);
 
 const gchar * gst_mss_stream_type_name (GstMssStreamType streamtype);
diff --git a/ext/sndfile/Makefile.in b/ext/sndfile/Makefile.in
index 14b417a..0a42660 100644
--- a/ext/sndfile/Makefile.in
+++ b/ext/sndfile/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/sndio/Makefile.in b/ext/sndio/Makefile.in
index e2d7ab7..5e89c76 100644
--- a/ext/sndio/Makefile.in
+++ b/ext/sndio/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/soundtouch/Makefile.in b/ext/soundtouch/Makefile.in
index 7807ac1..cfa1b09 100644
--- a/ext/soundtouch/Makefile.in
+++ b/ext/soundtouch/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -344,7 +343,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -366,7 +364,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -388,9 +385,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -552,6 +546,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -565,8 +560,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -653,8 +646,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -706,6 +697,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -726,6 +718,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -763,7 +757,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/spandsp/Makefile.am b/ext/spandsp/Makefile.am
index 95ab3d9..405068e 100644
--- a/ext/spandsp/Makefile.am
+++ b/ext/spandsp/Makefile.am
@@ -1,10 +1,10 @@
 plugin_LTLIBRARIES = libgstspandsp.la
 
-libgstspandsp_la_SOURCES = gstspandsp.c gstspanplc.c gstdtmfdetect.c
+libgstspandsp_la_SOURCES = gstspandsp.c gstspanplc.c gstdtmfdetect.c gsttonegeneratesrc.c
 libgstspandsp_la_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(SPANDSP_CFLAGS)
 libgstspandsp_la_LIBADD = $(SPANDSP_LIBS) $(GST_PLUGINS_BASE_LIBS) \
 	 $(GST_BASE_LIBS) $(GST_LIBS)
 libgstspandsp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstspandsp_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 
-noinst_HEADERS = gstspanplc.h gstdtmfdetect.h
+noinst_HEADERS = gstspanplc.h gstdtmfdetect.h gsttonegeneratesrc.h
diff --git a/ext/spandsp/Makefile.in b/ext/spandsp/Makefile.in
index 137bb22..2924b61 100644
--- a/ext/spandsp/Makefile.in
+++ b/ext/spandsp/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -169,7 +168,8 @@
 	$(am__DEPENDENCIES_1)
 am_libgstspandsp_la_OBJECTS = libgstspandsp_la-gstspandsp.lo \
 	libgstspandsp_la-gstspanplc.lo \
-	libgstspandsp_la-gstdtmfdetect.lo
+	libgstspandsp_la-gstdtmfdetect.lo \
+	libgstspandsp_la-gsttonegeneratesrc.lo
 libgstspandsp_la_OBJECTS = $(am_libgstspandsp_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -326,7 +326,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -348,7 +347,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -370,9 +368,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -534,6 +529,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -547,8 +543,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -635,8 +629,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -688,6 +680,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -708,6 +701,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -745,7 +740,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -786,14 +780,14 @@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
 plugin_LTLIBRARIES = libgstspandsp.la
-libgstspandsp_la_SOURCES = gstspandsp.c gstspanplc.c gstdtmfdetect.c
+libgstspandsp_la_SOURCES = gstspandsp.c gstspanplc.c gstdtmfdetect.c gsttonegeneratesrc.c
 libgstspandsp_la_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(SPANDSP_CFLAGS)
 libgstspandsp_la_LIBADD = $(SPANDSP_LIBS) $(GST_PLUGINS_BASE_LIBS) \
 	 $(GST_BASE_LIBS) $(GST_LIBS)
 
 libgstspandsp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstspandsp_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = gstspanplc.h gstdtmfdetect.h
+noinst_HEADERS = gstspanplc.h gstdtmfdetect.h gsttonegeneratesrc.h
 all: all-am
 
 .SUFFIXES:
@@ -875,6 +869,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstspandsp_la-gstdtmfdetect.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstspandsp_la-gstspandsp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstspandsp_la-gstspanplc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstspandsp_la-gsttonegeneratesrc.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -921,6 +916,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 $(libgstspandsp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstspandsp_la_CFLAGS) $(CFLAGS) -c -o libgstspandsp_la-gstdtmfdetect.lo `test -f 'gstdtmfdetect.c' || echo '$(srcdir)/'`gstdtmfdetect.c
 
+libgstspandsp_la-gsttonegeneratesrc.lo: gsttonegeneratesrc.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstspandsp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstspandsp_la_CFLAGS) $(CFLAGS) -MT libgstspandsp_la-gsttonegeneratesrc.lo -MD -MP -MF $(DEPDIR)/libgstspandsp_la-gsttonegeneratesrc.Tpo -c -o libgstspandsp_la-gsttonegeneratesrc.lo `test -f 'gsttonegeneratesrc.c' || echo '$(srcdir)/'`gsttonegeneratesrc.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstspandsp_la-gsttonegeneratesrc.Tpo $(DEPDIR)/libgstspandsp_la-gsttonegeneratesrc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gsttonegeneratesrc.c' object='libgstspandsp_la-gsttonegeneratesrc.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 $(libgstspandsp_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstspandsp_la_CFLAGS) $(CFLAGS) -c -o libgstspandsp_la-gsttonegeneratesrc.lo `test -f 'gsttonegeneratesrc.c' || echo '$(srcdir)/'`gsttonegeneratesrc.c
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
diff --git a/ext/spandsp/gstspandsp.c b/ext/spandsp/gstspandsp.c
index 0fdce79..37a0806 100644
--- a/ext/spandsp/gstspandsp.c
+++ b/ext/spandsp/gstspandsp.c
@@ -26,13 +26,15 @@
 
 #include "gstspanplc.h"
 #include "gstdtmfdetect.h"
+#include "gsttonegeneratesrc.h"
 
 static gboolean
 plugin_init (GstPlugin * plugin)
 {
   return gst_element_register (plugin, "spanplc",
       GST_RANK_PRIMARY, GST_TYPE_SPAN_PLC) &&
-      gst_dtmf_detect_plugin_init (plugin);
+      gst_dtmf_detect_plugin_init (plugin) &&
+      gst_tone_generate_src_plugin_init (plugin);
 }
 
 GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
diff --git a/ext/spandsp/gsttonegeneratesrc.c b/ext/spandsp/gsttonegeneratesrc.c
new file mode 100644
index 0000000..2b0cae7
--- /dev/null
+++ b/ext/spandsp/gsttonegeneratesrc.c
@@ -0,0 +1,415 @@
+/* GStreamer
+ * Copyright (C) 2016 Iskratel d.o.o.
+ *   Author: Okrslar Ales <okrslar@iskratel.si>
+ * Copyright (C) 2016 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gsttonegeneratesrc.h"
+
+#undef IT_DBG
+
+GST_DEBUG_CATEGORY_STATIC (tone_generate_src_debug);
+#define GST_CAT_DEFAULT tone_generate_src_debug
+
+#define DEFAULT_SAMPLES_PER_BUFFER   1024
+#define DEFAULT_FREQ                 0
+#define DEFAULT_VOLUME               0
+#define DEFAULT_ON_TIME              1000
+#define DEFAULT_OFF_TIME             1000
+#define DEFAULT_REPEAT               FALSE
+
+enum
+{
+  PROP_0,
+  PROP_SAMPLES_PER_BUFFER,
+  PROP_FREQ,
+  PROP_VOLUME,
+  PROP_FREQ2,
+  PROP_VOLUME2,
+  PROP_ON_TIME,
+  PROP_OFF_TIME,
+  PROP_ON_TIME2,
+  PROP_OFF_TIME2,
+  PROP_REPEAT,
+  PROP_LAST
+};
+
+static GstStaticPadTemplate gst_tone_generate_src_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw, "
+        "format = (string) " GST_AUDIO_NE (S16) ", "
+        "layout = (string) interleaved, " "rate = (int) 8000, " "channels = 1")
+    );
+
+#define gst_tone_generate_src_parent_class parent_class
+G_DEFINE_TYPE (GstToneGenerateSrc, gst_tone_generate_src, GST_TYPE_PUSH_SRC);
+
+static void gst_tone_generate_src_finalize (GObject * object);
+static void gst_tone_generate_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_tone_generate_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static gboolean gst_tone_generate_src_start (GstBaseSrc * basesrc);
+static gboolean gst_tone_generate_src_stop (GstBaseSrc * basesrc);
+static GstFlowReturn gst_tone_generate_src_fill (GstPushSrc * basesrc,
+    GstBuffer * buffer);
+
+static void
+gst_tone_generate_src_class_init (GstToneGenerateSrcClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+  GstBaseSrcClass *gstbasesrc_class;
+  GstPushSrcClass *gstpushsrc_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+  gstbasesrc_class = (GstBaseSrcClass *) klass;
+  gstpushsrc_class = (GstPushSrcClass *) klass;
+
+  gobject_class->set_property = gst_tone_generate_src_set_property;
+  gobject_class->get_property = gst_tone_generate_src_get_property;
+  gobject_class->finalize = gst_tone_generate_src_finalize;
+
+  g_object_class_install_property (gobject_class, PROP_SAMPLES_PER_BUFFER,
+      g_param_spec_int ("samplesperbuffer", "Samples per buffer",
+          "Number of samples in each outgoing buffer",
+          1, G_MAXINT, DEFAULT_SAMPLES_PER_BUFFER,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_FREQ,
+      g_param_spec_int ("freq", "Frequency", "Frequency of test signal",
+          0, 20000, DEFAULT_FREQ, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_VOLUME,
+      g_param_spec_int ("volume", "Volume",
+          "Volume of first signal",
+          -50, 0, DEFAULT_VOLUME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_FREQ2,
+      g_param_spec_int ("freq2", "Second Frequency",
+          "Frequency of second telephony tone component",
+          0, 20000, DEFAULT_FREQ, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_VOLUME2,
+      g_param_spec_int ("volume2", "Volume2",
+          "Volume of second tone signal",
+          -50, 0, DEFAULT_VOLUME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_ON_TIME,
+      g_param_spec_int ("on-time", "Signal ON time first period",
+          "Time of the first period  when the tone signal is present", 1,
+          G_MAXINT, DEFAULT_ON_TIME, G_PARAM_READWRITE));
+
+  g_object_class_install_property (gobject_class, PROP_OFF_TIME,
+      g_param_spec_int ("off-time", "Signal OFF time first period ",
+          "Time of the first period  when the tone signal is off", 0, G_MAXINT,
+          DEFAULT_OFF_TIME, G_PARAM_READWRITE));
+
+  g_object_class_install_property (gobject_class, PROP_ON_TIME2,
+      g_param_spec_int ("on-time2", "Signal ON time second period",
+          "Time of the second period  when the tone signal is present", 1,
+          G_MAXINT, DEFAULT_ON_TIME, G_PARAM_READWRITE));
+
+  g_object_class_install_property (gobject_class, PROP_OFF_TIME2,
+      g_param_spec_int ("off-time2", "Signal OFF time first period ",
+          "Time of the second period  when the tone signal is off", 0, G_MAXINT,
+          DEFAULT_ON_TIME, G_PARAM_READWRITE));
+
+  g_object_class_install_property (gobject_class, PROP_REPEAT,
+      g_param_spec_boolean ("repeat", "Repeat the specified tone period ",
+          "Whether to repeat specified tone indefinitly", DEFAULT_REPEAT,
+          G_PARAM_READWRITE));
+
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&gst_tone_generate_src_src_template));
+
+  gst_element_class_set_static_metadata (gstelement_class,
+      "Telephony Tone  Generator source", "Source/Audio",
+      "Creates telephony signals of given frequency, volume, cadence",
+      "Iskratel <www.iskratel.com>");
+
+  gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_tone_generate_src_start);
+  gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_tone_generate_src_stop);
+  gstpushsrc_class->fill = GST_DEBUG_FUNCPTR (gst_tone_generate_src_fill);
+}
+
+static void
+gst_tone_generate_src_init (GstToneGenerateSrc * src)
+{
+  src->volume = DEFAULT_VOLUME;
+  src->freq = DEFAULT_FREQ;
+  src->on_time = DEFAULT_ON_TIME;
+  src->off_time = DEFAULT_OFF_TIME;
+  src->volume2 = DEFAULT_VOLUME;
+  src->freq2 = DEFAULT_FREQ;
+  src->on_time2 = DEFAULT_ON_TIME;
+  src->off_time2 = DEFAULT_OFF_TIME;
+  src->repeat = DEFAULT_REPEAT;
+
+  gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
+
+  src->samples_per_buffer = DEFAULT_SAMPLES_PER_BUFFER;
+  gst_base_src_set_blocksize (GST_BASE_SRC (src), 2 * src->samples_per_buffer);
+}
+
+static void
+gst_tone_generate_src_finalize (GObject * object)
+{
+  GstToneGenerateSrc *src = GST_TONE_GENERATE_SRC (object);
+
+  if (src->tone_desc) {
+    tone_gen_descriptor_free (src->tone_desc);
+    src->tone_desc = NULL;
+  }
+
+  if (src->tone_state) {
+    tone_gen_free (src->tone_state);
+    src->tone_state = NULL;
+  }
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static gboolean
+gst_tone_generate_src_start (GstBaseSrc * basesrc)
+{
+  GstToneGenerateSrc *src = GST_TONE_GENERATE_SRC (basesrc);
+
+  GST_OBJECT_LOCK (src);
+  src->properties_changed = FALSE;
+  GST_OBJECT_UNLOCK (src);
+
+  src->next_sample = 0;
+  src->next_time = 0;
+
+  return TRUE;
+}
+
+static gboolean
+gst_tone_generate_src_stop (GstBaseSrc * basesrc)
+{
+  GstToneGenerateSrc *src = GST_TONE_GENERATE_SRC (basesrc);
+
+  GST_OBJECT_LOCK (src);
+  if (src->tone_desc) {
+    tone_gen_descriptor_free (src->tone_desc);
+    src->tone_desc = NULL;
+  }
+
+  if (src->tone_state) {
+    tone_gen_free (src->tone_state);
+    src->tone_state = NULL;
+  }
+  src->properties_changed = FALSE;
+  GST_OBJECT_UNLOCK (src);
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_tone_generate_src_fill (GstPushSrc * basesrc, GstBuffer * buffer)
+{
+  GstToneGenerateSrc *src;
+  GstClockTime next_time;
+  gint64 next_sample;
+  gint bytes, samples;
+  GstMapInfo map;
+  const gint samplerate = 8000, bpf = 2;
+
+  src = GST_TONE_GENERATE_SRC (basesrc);
+
+  bytes = gst_buffer_get_size (buffer);
+  samples = bytes / bpf;
+
+  /* calculate full buffer */
+  next_sample = src->next_sample + samples;
+
+  next_time = gst_util_uint64_scale_int (next_sample, GST_SECOND, samplerate);
+
+  GST_LOG_OBJECT (src, "samplerate %d", samplerate);
+  GST_LOG_OBJECT (src, "next_sample %" G_GINT64_FORMAT ", ts %" GST_TIME_FORMAT,
+      next_sample, GST_TIME_ARGS (next_time));
+
+  GST_BUFFER_OFFSET (buffer) = src->next_sample;
+  GST_BUFFER_OFFSET_END (buffer) = next_sample;
+  GST_BUFFER_TIMESTAMP (buffer) = src->next_time;
+  GST_BUFFER_DURATION (buffer) = next_time - src->next_time;
+
+  gst_object_sync_values (GST_OBJECT (src), GST_BUFFER_TIMESTAMP (buffer));
+
+  src->next_time = next_time;
+  src->next_sample = next_sample;
+
+  GST_LOG_OBJECT (src, "generating %u samples at ts %" GST_TIME_FORMAT,
+      samples, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)));
+
+  gst_buffer_map (buffer, &map, GST_MAP_WRITE);
+
+  GST_OBJECT_LOCK (src);
+  if (!src->tone_state || src->properties_changed) {
+    src->tone_desc = tone_gen_descriptor_init (src->tone_desc,
+        src->freq,
+        src->volume,
+        src->freq2,
+        src->volume2,
+        src->on_time,
+        src->off_time, src->on_time2, src->off_time2, src->repeat);
+
+    src->tone_state = tone_gen_init (src->tone_state, src->tone_desc);
+    src->properties_changed = FALSE;
+  }
+
+  tone_gen (src->tone_state, (int16_t *) map.data, samples);
+  GST_OBJECT_UNLOCK (src);
+
+  gst_buffer_unmap (buffer, &map);
+
+  return GST_FLOW_OK;
+}
+
+static void
+gst_tone_generate_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstToneGenerateSrc *src = GST_TONE_GENERATE_SRC (object);
+
+  switch (prop_id) {
+    case PROP_SAMPLES_PER_BUFFER:
+      src->samples_per_buffer = g_value_get_int (value);
+      gst_base_src_set_blocksize (GST_BASE_SRC_CAST (src),
+          2 * src->samples_per_buffer);
+      break;
+    case PROP_FREQ:
+      GST_OBJECT_LOCK (src);
+      src->freq = g_value_get_int (value);
+      src->properties_changed = TRUE;
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case PROP_VOLUME:
+      GST_OBJECT_LOCK (src);
+      src->volume = g_value_get_int (value);
+      src->properties_changed = TRUE;
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case PROP_FREQ2:
+      GST_OBJECT_LOCK (src);
+      src->freq2 = g_value_get_int (value);
+      src->properties_changed = TRUE;
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case PROP_VOLUME2:
+      GST_OBJECT_LOCK (src);
+      src->volume2 = g_value_get_int (value);
+      src->properties_changed = TRUE;
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case PROP_ON_TIME:
+      GST_OBJECT_LOCK (src);
+      src->on_time = g_value_get_int (value);
+      src->properties_changed = TRUE;
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case PROP_ON_TIME2:
+      GST_OBJECT_LOCK (src);
+      src->on_time2 = g_value_get_int (value);
+      src->properties_changed = TRUE;
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case PROP_OFF_TIME:
+      GST_OBJECT_LOCK (src);
+      src->off_time = g_value_get_int (value);
+      src->properties_changed = TRUE;
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case PROP_OFF_TIME2:
+      GST_OBJECT_LOCK (src);
+      src->off_time2 = g_value_get_int (value);
+      src->properties_changed = TRUE;
+      GST_OBJECT_UNLOCK (src);
+      break;
+    case PROP_REPEAT:
+      GST_OBJECT_LOCK (src);
+      src->repeat = g_value_get_boolean (value);
+      src->properties_changed = TRUE;
+      GST_OBJECT_UNLOCK (src);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_tone_generate_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstToneGenerateSrc *src = GST_TONE_GENERATE_SRC (object);
+
+  switch (prop_id) {
+    case PROP_SAMPLES_PER_BUFFER:
+      g_value_set_int (value, src->samples_per_buffer);
+      break;
+    case PROP_FREQ:
+      g_value_set_int (value, src->freq);
+      break;
+    case PROP_VOLUME:
+      g_value_set_int (value, src->volume);
+      break;
+    case PROP_FREQ2:
+      g_value_set_int (value, src->freq2);
+      break;
+    case PROP_VOLUME2:
+      g_value_set_int (value, src->volume2);
+      break;
+    case PROP_ON_TIME:
+      g_value_set_int (value, src->on_time);
+      break;
+    case PROP_OFF_TIME:
+      g_value_set_int (value, src->off_time);
+      break;
+    case PROP_ON_TIME2:
+      g_value_set_int (value, src->on_time2);
+      break;
+    case PROP_OFF_TIME2:
+      g_value_set_int (value, src->off_time2);
+      break;
+    case PROP_REPEAT:
+      g_value_set_boolean (value, src->repeat);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+gboolean
+gst_tone_generate_src_plugin_init (GstPlugin * plugin)
+{
+  GST_DEBUG_CATEGORY_INIT (tone_generate_src_debug, "tonegeneratesrc", 0,
+      "Telephony Tone Test Source");
+
+  return gst_element_register (plugin, "tonegeneratesrc",
+      GST_RANK_NONE, GST_TYPE_TONE_GENERATE_SRC);
+}
diff --git a/ext/spandsp/gsttonegeneratesrc.h b/ext/spandsp/gsttonegeneratesrc.h
new file mode 100644
index 0000000..200e13d
--- /dev/null
+++ b/ext/spandsp/gsttonegeneratesrc.h
@@ -0,0 +1,89 @@
+/* GStreamer
+ * Copyright (C) 2016 Iskratel d.o.o.
+ *   Author: Okrslar Ales <okrslar@iskratel.si>
+ * Copyright (C) 2016 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_TONE_GENERATE_SRC_H__
+#define __GST_TONE_GENERATE_SRC_H__
+
+
+#include <gst/gst.h>
+#include <gst/base/gstbasesrc.h>
+
+#include <gst/audio/audio.h>
+#include <spandsp.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_TONE_GENERATE_SRC \
+  (gst_tone_generate_src_get_type())
+#define GST_TONE_GENERATE_SRC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_TONE_GENERATE_SRC,GstToneGenerateSrc))
+#define GST_TONE_GENERATE_SRC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_TONE_GENERATE_SRC,GstToneGenerateSrcClass))
+#define GST_IS_TONE_GENERATE_SRC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_TONE_GENERATE_SRC))
+#define GST_IS_TONE_GENERATE_SRC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_TONE_GENERATE_SRC))
+
+typedef struct _GstToneGenerateSrc GstToneGenerateSrc;
+typedef struct _GstToneGenerateSrcClass GstToneGenerateSrcClass;
+
+/**
+ * GstToneGenerateSrc:
+ *
+ * tonegeneratesrc object structure.
+ */
+struct _GstToneGenerateSrc {
+  GstPushSrc parent;
+
+  /* parameters */
+  gint volume;      /* The level of the first frequency, in dBm0 */
+  gint volume2;     /* The level of the second frequency, in dBm0, or the percentage modulation depth for an AM modulated tone. */
+  gint freq;        /* The first frequency, in Hz */
+  gint freq2;       /* 0 for no second frequency, a positive number for the second frequency, in Hz, or a negative number for an AM modulation frequency, in Hz */
+  gint on_time;         /* On time for the first presence of tone signal. */
+  gint off_time;        /* Off time between first and second presence of tone signal. */
+  gint on_time2;        /* On time for the second presence of tone signal. */
+  gint off_time2;       /* Off time after the second presence of tone signal. */
+  gboolean repeat;         /* 0/1 if the tone repeates itself or not. */
+
+  /* audio parameters */
+  gint samples_per_buffer;
+
+  /*< private >*/
+  GstClockTime next_time;               /* next timestamp */
+  gint64 next_sample;                   /* next sample to send */
+
+  /* SpanDSP */
+  tone_gen_state_t *tone_state;
+  tone_gen_descriptor_t *tone_desc;
+  gboolean properties_changed;
+};
+
+struct _GstToneGenerateSrcClass {
+  GstPushSrcClass parent_class;
+};
+
+GType gst_tone_generate_src_get_type (void);
+gboolean gst_tone_generate_src_plugin_init (GstPlugin *plugin);
+
+G_END_DECLS
+
+#endif /* __GST_TONE_GENERATE_SRC_H__ */
diff --git a/ext/spc/Makefile.in b/ext/spc/Makefile.in
index 00818f3..57ae8a2 100644
--- a/ext/spc/Makefile.in
+++ b/ext/spc/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/srtp/Makefile.in b/ext/srtp/Makefile.in
index 5366451..ef2c336 100644
--- a/ext/srtp/Makefile.in
+++ b/ext/srtp/Makefile.in
@@ -123,16 +123,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -333,7 +332,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -355,7 +353,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -377,9 +374,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -541,6 +535,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -554,8 +549,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -642,8 +635,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -695,6 +686,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -715,6 +707,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -752,7 +746,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/teletextdec/Makefile.in b/ext/teletextdec/Makefile.in
index c43f58a..0641041 100644
--- a/ext/teletextdec/Makefile.in
+++ b/ext/teletextdec/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/timidity/Makefile.in b/ext/timidity/Makefile.in
index 4c4c8bc..9544679 100644
--- a/ext/timidity/Makefile.in
+++ b/ext/timidity/Makefile.in
@@ -118,16 +118,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -342,7 +341,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -364,7 +362,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -386,9 +383,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -550,6 +544,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -563,8 +558,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -651,8 +644,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -704,6 +695,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -724,6 +716,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -761,7 +755,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/voaacenc/Makefile.in b/ext/voaacenc/Makefile.in
index 47a57c5..05f2225 100644
--- a/ext/voaacenc/Makefile.in
+++ b/ext/voaacenc/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/voamrwbenc/Makefile.in b/ext/voamrwbenc/Makefile.in
index 553b2d4..9004117 100644
--- a/ext/voamrwbenc/Makefile.in
+++ b/ext/voamrwbenc/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -326,7 +325,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -348,7 +346,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -370,9 +367,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -534,6 +528,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -547,8 +542,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -635,8 +628,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -688,6 +679,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -708,6 +700,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -745,7 +739,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/vulkan/Makefile.am b/ext/vulkan/Makefile.am
new file mode 100644
index 0000000..8c57e34
--- /dev/null
+++ b/ext/vulkan/Makefile.am
@@ -0,0 +1,65 @@
+plugin_LTLIBRARIES = libgstvulkan.la
+
+SUBDIRS =
+DIST_SUBDIRS = xcb
+DISTCLEANFILES = vkconfig.h
+
+libgstvulkan_la_SOURCES = \
+	gstvulkan.c \
+	vkdevice.c \
+	vkdisplay.c \
+	vkerror.c \
+	vkbuffermemory.c \
+	vkimagememory.c \
+	vkbufferpool.c \
+	vkinstance.c \
+	vkmemory.c \
+	vkqueue.c \
+	vksink.c \
+	vkswapper.c \
+	vkupload.c \
+	vkutils.c \
+	vkwindow.c
+
+noinst_HEADERS = \
+	vk.h \
+	vk_fwd.h \
+	vkdevice.h \
+	vkdisplay.h \
+	vkerror.h \
+	vkbuffermemory.h \
+	vkimagememory.h \
+	vkbufferpool.h \
+	vkinstance.h \
+	vkmemory.h \
+	vkqueue.h \
+	vksink.h \
+	vkswapper.h \
+	vkupload.h \
+	vkutils.h \
+	vkutils_private.h \
+	vkwindow.h
+
+libgstvulkan_la_CFLAGS = \
+	-I$(top_srcdir)/gst-libs \
+	-I$(top_builddir)/gst-libs \
+	$(GST_CFLAGS) \
+	$(GST_BASE_CFLAGS) \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(VULKAN_CFLAGS)
+
+libgstvulkan_la_LIBADD = \
+	$(GST_BASE_LIBS) \
+	$(GST_PLUGINS_BASE_LIBS) \
+	-lgstvideo-$(GST_API_VERSION) \
+	$(VULKAN_LIBS)
+
+if USE_XCB
+SUBDIRS += xcb
+libgstvulkan_la_LIBADD += xcb/libgstvulkan-xcb.la
+endif
+
+libgstvulkan_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstvulkan_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
+
+
diff --git a/ext/vulkan/Makefile.in b/ext/vulkan/Makefile.in
new file mode 100644
index 0000000..8dfd1da
--- /dev/null
+++ b/ext/vulkan/Makefile.in
@@ -0,0 +1,1397 @@
+# Makefile.in generated by automake 1.15 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+@USE_XCB_TRUE@am__append_1 = xcb
+@USE_XCB_TRUE@am__append_2 = xcb/libgstvulkan-xcb.la
+subdir = ext/vulkan
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
+	$(top_srcdir)/common/m4/as-auto-alt.m4 \
+	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
+	$(top_srcdir)/common/m4/as-libtool.m4 \
+	$(top_srcdir)/common/m4/as-version.m4 \
+	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
+	$(top_srcdir)/common/m4/ax_pthread.m4 \
+	$(top_srcdir)/common/m4/gst-arch.m4 \
+	$(top_srcdir)/common/m4/gst-args.m4 \
+	$(top_srcdir)/common/m4/gst-check.m4 \
+	$(top_srcdir)/common/m4/gst-default.m4 \
+	$(top_srcdir)/common/m4/gst-dowhile.m4 \
+	$(top_srcdir)/common/m4/gst-error.m4 \
+	$(top_srcdir)/common/m4/gst-feature.m4 \
+	$(top_srcdir)/common/m4/gst-gettext.m4 \
+	$(top_srcdir)/common/m4/gst-glib2.m4 \
+	$(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
+	$(top_srcdir)/common/m4/gst-platform.m4 \
+	$(top_srcdir)/common/m4/gst-plugin-docs.m4 \
+	$(top_srcdir)/common/m4/gst-plugindir.m4 \
+	$(top_srcdir)/common/m4/gst.m4 \
+	$(top_srcdir)/common/m4/gtk-doc.m4 \
+	$(top_srcdir)/common/m4/introspection.m4 \
+	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+	$(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libgstvulkan_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) $(am__append_2)
+am_libgstvulkan_la_OBJECTS = libgstvulkan_la-gstvulkan.lo \
+	libgstvulkan_la-vkdevice.lo libgstvulkan_la-vkdisplay.lo \
+	libgstvulkan_la-vkerror.lo libgstvulkan_la-vkbuffermemory.lo \
+	libgstvulkan_la-vkimagememory.lo \
+	libgstvulkan_la-vkbufferpool.lo libgstvulkan_la-vkinstance.lo \
+	libgstvulkan_la-vkmemory.lo libgstvulkan_la-vkqueue.lo \
+	libgstvulkan_la-vksink.lo libgstvulkan_la-vkswapper.lo \
+	libgstvulkan_la-vkupload.lo libgstvulkan_la-vkutils.lo \
+	libgstvulkan_la-vkwindow.lo
+libgstvulkan_la_OBJECTS = $(am_libgstvulkan_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+libgstvulkan_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	$(CCLD) $(libgstvulkan_la_CFLAGS) $(CFLAGS) \
+	$(libgstvulkan_la_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(libgstvulkan_la_SOURCES)
+DIST_SOURCES = $(libgstvulkan_la_SOURCES)
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+	ctags-recursive dvi-recursive html-recursive info-recursive \
+	install-data-recursive install-dvi-recursive \
+	install-exec-recursive install-html-recursive \
+	install-info-recursive install-pdf-recursive \
+	install-ps-recursive install-recursive installcheck-recursive \
+	installdirs-recursive pdf-recursive ps-recursive \
+	tags-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+HEADERS = $(noinst_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
+	distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
+ACMENC_CFLAGS = @ACMENC_CFLAGS@
+ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+APEXSINK_CFLAGS = @APEXSINK_CFLAGS@
+APEXSINK_LIBS = @APEXSINK_LIBS@
+AR = @AR@
+AS = @AS@
+ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@
+ASSRENDER_LIBS = @ASSRENDER_LIBS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BLUEZ5_CFLAGS = @BLUEZ5_CFLAGS@
+BLUEZ5_LIBS = @BLUEZ5_LIBS@
+BS2B_CFLAGS = @BS2B_CFLAGS@
+BS2B_LIBS = @BS2B_LIBS@
+BZ2_LIBS = @BZ2_LIBS@
+CC = @CC@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHROMAPRINT_CFLAGS = @CHROMAPRINT_CFLAGS@
+CHROMAPRINT_LIBS = @CHROMAPRINT_LIBS@
+CLUTTER_CFLAGS = @CLUTTER_CFLAGS@
+CLUTTER_GLX_CFLAGS = @CLUTTER_GLX_CFLAGS@
+CLUTTER_GLX_LIBS = @CLUTTER_GLX_LIBS@
+CLUTTER_LIBS = @CLUTTER_LIBS@
+CLUTTER_X11_CFLAGS = @CLUTTER_X11_CFLAGS@
+CLUTTER_X11_LIBS = @CLUTTER_X11_LIBS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CUDA_CFLAGS = @CUDA_CFLAGS@
+CUDA_LIBS = @CUDA_LIBS@
+CURL_CFLAGS = @CURL_CFLAGS@
+CURL_LIBS = @CURL_LIBS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DAALA_CFLAGS = @DAALA_CFLAGS@
+DAALA_LIBS = @DAALA_LIBS@
+DCCP_LIBS = @DCCP_LIBS@
+DECKLINK_CXXFLAGS = @DECKLINK_CXXFLAGS@
+DECKLINK_LIBS = @DECKLINK_LIBS@
+DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
+DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
+DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
+DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
+DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
+DIRECT3D_LIBS = @DIRECT3D_LIBS@
+DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@
+DIRECTFB_LIBS = @DIRECTFB_LIBS@
+DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
+DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
+DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DTLS_CFLAGS = @DTLS_CFLAGS@
+DTLS_LIBS = @DTLS_LIBS@
+DTS_LIBS = @DTS_LIBS@
+DUMPBIN = @DUMPBIN@
+DVDNAV_CFLAGS = @DVDNAV_CFLAGS@
+DVDNAV_LIBS = @DVDNAV_LIBS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGL_CFLAGS = @EGL_CFLAGS@
+EGL_LIBS = @EGL_LIBS@
+EGREP = @EGREP@
+ERROR_CFLAGS = @ERROR_CFLAGS@
+ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
+ERROR_OBJCFLAGS = @ERROR_OBJCFLAGS@
+EXEEXT = @EXEEXT@
+EXIF_CFLAGS = @EXIF_CFLAGS@
+EXIF_LIBS = @EXIF_LIBS@
+FAAC_LIBS = @FAAC_LIBS@
+FAAD_LIBS = @FAAD_LIBS@
+FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+FLITE_CFLAGS = @FLITE_CFLAGS@
+FLITE_LIBS = @FLITE_LIBS@
+FLUIDSYNTH_CFLAGS = @FLUIDSYNTH_CFLAGS@
+FLUIDSYNTH_LIBS = @FLUIDSYNTH_LIBS@
+GCOV = @GCOV@
+GCOV_CFLAGS = @GCOV_CFLAGS@
+GCOV_LIBS = @GCOV_LIBS@
+GDBUS_CODEGEN = @GDBUS_CODEGEN@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GIO_CFLAGS = @GIO_CFLAGS@
+GIO_LDFLAGS = @GIO_LDFLAGS@
+GIO_LIBS = @GIO_LIBS@
+GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@
+GIO_UNIX_LIBS = @GIO_UNIX_LIBS@
+GLES2_CFLAGS = @GLES2_CFLAGS@
+GLES2_LIBS = @GLES2_LIBS@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
+GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
+GLIB_LIBS = @GLIB_LIBS@
+GLIB_MKENUMS = @GLIB_MKENUMS@
+GLIB_PREFIX = @GLIB_PREFIX@
+GLIB_REQ = @GLIB_REQ@
+GL_CFLAGS = @GL_CFLAGS@
+GL_LIBS = @GL_LIBS@
+GL_OBJCFLAGS = @GL_OBJCFLAGS@
+GME_LIBS = @GME_LIBS@
+GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@
+GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@
+GMODULE_NO_EXPORT_CFLAGS = @GMODULE_NO_EXPORT_CFLAGS@
+GMODULE_NO_EXPORT_LIBS = @GMODULE_NO_EXPORT_LIBS@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNUSTL_CFLAGS = @GNUSTL_CFLAGS@
+GNUSTL_LIBS = @GNUSTL_LIBS@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
+GREP = @GREP@
+GSM_LIBS = @GSM_LIBS@
+GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
+GSTPB_PREFIX = @GSTPB_PREFIX@
+GST_AGE = @GST_AGE@
+GST_ALLOCATORS_CFLAGS = @GST_ALLOCATORS_CFLAGS@
+GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
+GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
+GST_API_VERSION = @GST_API_VERSION@
+GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
+GST_BASE_LIBS = @GST_BASE_LIBS@
+GST_CFLAGS = @GST_CFLAGS@
+GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
+GST_CHECK_LIBS = @GST_CHECK_LIBS@
+GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
+GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
+GST_CURRENT = @GST_CURRENT@
+GST_CXXFLAGS = @GST_CXXFLAGS@
+GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
+GST_LIBS = @GST_LIBS@
+GST_LIBVERSION = @GST_LIBVERSION@
+GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
+GST_LICENSE = @GST_LICENSE@
+GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
+GST_NET_CFLAGS = @GST_NET_CFLAGS@
+GST_NET_LIBS = @GST_NET_LIBS@
+GST_OBJCFLAGS = @GST_OBJCFLAGS@
+GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
+GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
+GST_OPTION_OBJCFLAGS = @GST_OPTION_OBJCFLAGS@
+GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
+GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
+GST_PBUTILS_CFLAGS = @GST_PBUTILS_CFLAGS@
+GST_PBUTILS_LIBS = @GST_PBUTILS_LIBS@
+GST_PKG_CONFIG_PATH = @GST_PKG_CONFIG_PATH@
+GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
+GST_PLUGINS_BAD_CFLAGS = @GST_PLUGINS_BAD_CFLAGS@
+GST_PLUGINS_BAD_CXXFLAGS = @GST_PLUGINS_BAD_CXXFLAGS@
+GST_PLUGINS_BAD_OBJCFLAGS = @GST_PLUGINS_BAD_OBJCFLAGS@
+GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
+GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
+GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
+GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
+GST_PLUGINS_GOOD_CFLAGS = @GST_PLUGINS_GOOD_CFLAGS@
+GST_PLUGINS_GOOD_DIR = @GST_PLUGINS_GOOD_DIR@
+GST_PLUGINS_GOOD_LIBS = @GST_PLUGINS_GOOD_LIBS@
+GST_PLUGINS_LIBAV_CFLAGS = @GST_PLUGINS_LIBAV_CFLAGS@
+GST_PLUGINS_LIBAV_DIR = @GST_PLUGINS_LIBAV_DIR@
+GST_PLUGINS_LIBAV_LIBS = @GST_PLUGINS_LIBAV_LIBS@
+GST_PLUGINS_NONPORTED = @GST_PLUGINS_NONPORTED@
+GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
+GST_PLUGINS_UGLY_CFLAGS = @GST_PLUGINS_UGLY_CFLAGS@
+GST_PLUGINS_UGLY_DIR = @GST_PLUGINS_UGLY_DIR@
+GST_PLUGINS_UGLY_LIBS = @GST_PLUGINS_UGLY_LIBS@
+GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
+GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
+GST_PREFIX = @GST_PREFIX@
+GST_REVISION = @GST_REVISION@
+GST_TOOLS_DIR = @GST_TOOLS_DIR@
+GST_VIDEO_CFLAGS = @GST_VIDEO_CFLAGS@
+GST_VIDEO_LIBS = @GST_VIDEO_LIBS@
+GTK3_CFLAGS = @GTK3_CFLAGS@
+GTK3_GL_CFLAGS = @GTK3_GL_CFLAGS@
+GTK3_GL_LIBS = @GTK3_GL_LIBS@
+GTK3_LIBS = @GTK3_LIBS@
+GTK3_WAYLAND_CFLAGS = @GTK3_WAYLAND_CFLAGS@
+GTK3_WAYLAND_LIBS = @GTK3_WAYLAND_LIBS@
+GTK3_X11_CFLAGS = @GTK3_X11_CFLAGS@
+GTK3_X11_LIBS = @GTK3_X11_LIBS@
+GTKDOC_CHECK = @GTKDOC_CHECK@
+GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
+GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
+GTKDOC_MKPDF = @GTKDOC_MKPDF@
+GTKDOC_REBASE = @GTKDOC_REBASE@
+GTK_BASE_DIR = @GTK_BASE_DIR@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+GTK_VERSION = @GTK_VERSION@
+G_UDEV_CFLAGS = @G_UDEV_CFLAGS@
+G_UDEV_LIBS = @G_UDEV_LIBS@
+HAVE_CLUTTER = @HAVE_CLUTTER@
+HAVE_CLUTTER_GLX = @HAVE_CLUTTER_GLX@
+HAVE_CLUTTER_X11 = @HAVE_CLUTTER_X11@
+HAVE_CXX = @HAVE_CXX@
+HAVE_DIRECT3D = @HAVE_DIRECT3D@
+HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
+HAVE_DTS = @HAVE_DTS@
+HAVE_EGL = @HAVE_EGL@
+HAVE_FAAC = @HAVE_FAAC@
+HAVE_FAAD = @HAVE_FAAD@
+HAVE_FLITE = @HAVE_FLITE@
+HAVE_GL = @HAVE_GL@
+HAVE_GLES2 = @HAVE_GLES2@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
+HAVE_GSM = @HAVE_GSM@
+HAVE_GTK3 = @HAVE_GTK3@
+HAVE_JPEG = @HAVE_JPEG@
+HAVE_NAS = @HAVE_NAS@
+HAVE_OPENJPEG = @HAVE_OPENJPEG@
+HAVE_PNG = @HAVE_PNG@
+HAVE_SRTP = @HAVE_SRTP@
+HAVE_WASAPI = @HAVE_WASAPI@
+HAVE_WILDMIDI = @HAVE_WILDMIDI@
+HAVE_WINKS = @HAVE_WINKS@
+HAVE_WINSCREENCAP = @HAVE_WINSCREENCAP@
+HAVE_X11 = @HAVE_X11@
+HTML_DIR = @HTML_DIR@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
+INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
+INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
+INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
+INTROSPECTION_INIT = @INTROSPECTION_INIT@
+INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
+INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
+INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
+JPEG_LIBS = @JPEG_LIBS@
+KATE_CFLAGS = @KATE_CFLAGS@
+KATE_LIBS = @KATE_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@
+LIBDC1394_LIBS = @LIBDC1394_LIBS@
+LIBDE265_CFLAGS = @LIBDE265_CFLAGS@
+LIBDE265_LIBS = @LIBDE265_LIBS@
+LIBDIR = @LIBDIR@
+LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
+LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
+LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBMMS_CFLAGS = @LIBMMS_CFLAGS@
+LIBMMS_LIBS = @LIBMMS_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
+LIBPNG_LIBS = @LIBPNG_LIBS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBUDEV_CFLAGS = @LIBUDEV_CFLAGS@
+LIBUDEV_LIBS = @LIBUDEV_LIBS@
+LIBUSB_CFLAGS = @LIBUSB_CFLAGS@
+LIBUSB_LIBS = @LIBUSB_LIBS@
+LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@
+LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
+LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
+LIBXML2_LIBS = @LIBXML2_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOCALEDIR = @LOCALEDIR@
+LRDF_CFLAGS = @LRDF_CFLAGS@
+LRDF_LIBS = @LRDF_LIBS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MIMIC_CFLAGS = @MIMIC_CFLAGS@
+MIMIC_LIBS = @MIMIC_LIBS@
+MJPEG_CFLAGS = @MJPEG_CFLAGS@
+MJPEG_LIBS = @MJPEG_LIBS@
+MKDIR_P = @MKDIR_P@
+MOC = @MOC@
+MODPLUG_CFLAGS = @MODPLUG_CFLAGS@
+MODPLUG_LIBS = @MODPLUG_LIBS@
+MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
+MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
+MPLEX_CFLAGS = @MPLEX_CFLAGS@
+MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
+MPLEX_LIBS = @MPLEX_LIBS@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+MUSEPACK_LIBS = @MUSEPACK_LIBS@
+NAS_CFLAGS = @NAS_CFLAGS@
+NAS_LIBS = @NAS_LIBS@
+NEON_CFLAGS = @NEON_CFLAGS@
+NEON_LIBS = @NEON_LIBS@
+NETTLE_CFLAGS = @NETTLE_CFLAGS@
+NETTLE_LIBS = @NETTLE_LIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+NVENCODE_CFLAGS = @NVENCODE_CFLAGS@
+NVENCODE_LIBS = @NVENCODE_LIBS@
+OBJC = @OBJC@
+OBJCDEPMODE = @OBJCDEPMODE@
+OBJCFLAGS = @OBJCFLAGS@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OFA_CFLAGS = @OFA_CFLAGS@
+OFA_LIBS = @OFA_LIBS@
+OPENAL_CFLAGS = @OPENAL_CFLAGS@
+OPENAL_LIBS = @OPENAL_LIBS@
+OPENCV_CFLAGS = @OPENCV_CFLAGS@
+OPENCV_LIBS = @OPENCV_LIBS@
+OPENCV_PREFIX = @OPENCV_PREFIX@
+OPENEXR_CFLAGS = @OPENEXR_CFLAGS@
+OPENEXR_LIBS = @OPENEXR_LIBS@
+OPENH264_CFLAGS = @OPENH264_CFLAGS@
+OPENH264_LIBS = @OPENH264_LIBS@
+OPENJPEG_CFLAGS = @OPENJPEG_CFLAGS@
+OPENJPEG_LIBS = @OPENJPEG_LIBS@
+OPENNI2_CFLAGS = @OPENNI2_CFLAGS@
+OPENNI2_LIBS = @OPENNI2_LIBS@
+OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
+OPENSSL_LIBS = @OPENSSL_LIBS@
+OPUS_CFLAGS = @OPUS_CFLAGS@
+OPUS_LIBS = @OPUS_LIBS@
+ORCC = @ORCC@
+ORCC_FLAGS = @ORCC_FLAGS@
+ORC_CFLAGS = @ORC_CFLAGS@
+ORC_LIBS = @ORC_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
+PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
+PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
+PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
+PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PLUGINDIR = @PLUGINDIR@
+POSUB = @POSUB@
+PROFILE_CFLAGS = @PROFILE_CFLAGS@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+PVR_CFLAGS = @PVR_CFLAGS@
+PVR_LIBS = @PVR_LIBS@
+PYTHON = @PYTHON@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+QT_ANDROID_CFLAGS = @QT_ANDROID_CFLAGS@
+QT_ANDROID_LIBS = @QT_ANDROID_LIBS@
+QT_CFLAGS = @QT_CFLAGS@
+QT_LIBS = @QT_LIBS@
+QT_MAC_CFLAGS = @QT_MAC_CFLAGS@
+QT_MAC_LIBS = @QT_MAC_LIBS@
+QT_WAYLAND_CFLAGS = @QT_WAYLAND_CFLAGS@
+QT_WAYLAND_LIBS = @QT_WAYLAND_LIBS@
+QT_X11_CFLAGS = @QT_X11_CFLAGS@
+QT_X11_LIBS = @QT_X11_LIBS@
+RANLIB = @RANLIB@
+RCC = @RCC@
+RSVG_CFLAGS = @RSVG_CFLAGS@
+RSVG_LIBS = @RSVG_LIBS@
+RTMP_CFLAGS = @RTMP_CFLAGS@
+RTMP_LIBS = @RTMP_LIBS@
+SBC_CFLAGS = @SBC_CFLAGS@
+SBC_LIBS = @SBC_LIBS@
+SCHRO_CFLAGS = @SCHRO_CFLAGS@
+SCHRO_LIBS = @SCHRO_LIBS@
+SDL_CFLAGS = @SDL_CFLAGS@
+SDL_CLUTTER = @SDL_CLUTTER@
+SDL_CONFIG = @SDL_CONFIG@
+SDL_LIBS = @SDL_LIBS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SHM_LIBS = @SHM_LIBS@
+SLV2_CFLAGS = @SLV2_CFLAGS@
+SLV2_LIBS = @SLV2_LIBS@
+SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
+SNDFILE_LIBS = @SNDFILE_LIBS@
+SNDIO_LIBS = @SNDIO_LIBS@
+SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
+SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
+SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
+SPANDSP_LIBS = @SPANDSP_LIBS@
+SPC_LIBS = @SPC_LIBS@
+SRTP_CFLAGS = @SRTP_CFLAGS@
+SRTP_LIBS = @SRTP_LIBS@
+SSH2_CFLAGS = @SSH2_CFLAGS@
+SSH2_LIBS = @SSH2_LIBS@
+STRIP = @STRIP@
+TELETEXTDEC_CFLAGS = @TELETEXTDEC_CFLAGS@
+TELETEXTDEC_LIBS = @TELETEXTDEC_LIBS@
+TIGER_CFLAGS = @TIGER_CFLAGS@
+TIGER_LIBS = @TIGER_LIBS@
+TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@
+TIMIDITY_LIBS = @TIMIDITY_LIBS@
+UIC = @UIC@
+USE_GLES2 = @USE_GLES2@
+USE_NLS = @USE_NLS@
+USE_OPENGL = @USE_OPENGL@
+VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
+VALGRIND_LIBS = @VALGRIND_LIBS@
+VALGRIND_PATH = @VALGRIND_PATH@
+VDPAU_CFLAGS = @VDPAU_CFLAGS@
+VDPAU_LIBS = @VDPAU_LIBS@
+VERSION = @VERSION@
+VOAACENC_CFLAGS = @VOAACENC_CFLAGS@
+VOAACENC_LIBS = @VOAACENC_LIBS@
+VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
+VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
+WARNING_CFLAGS = @WARNING_CFLAGS@
+WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
+WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
+WASAPI_LIBS = @WASAPI_LIBS@
+WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
+WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
+WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
+WAYLAND_LIBS = @WAYLAND_LIBS@
+WEBP_CFLAGS = @WEBP_CFLAGS@
+WEBP_LIBS = @WEBP_LIBS@
+WGET = @WGET@
+WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
+WILDMIDI_LIBS = @WILDMIDI_LIBS@
+WINKS_LIBS = @WINKS_LIBS@
+WINSCREENCAP_LIBS = @WINSCREENCAP_LIBS@
+WINSOCK2_LIBS = @WINSOCK2_LIBS@
+X11_CFLAGS = @X11_CFLAGS@
+X11_LIBS = @X11_LIBS@
+X265_CFLAGS = @X265_CFLAGS@
+X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
+XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
+XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+XVID_LIBS = @XVID_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_LIBS = @X_LIBS@
+ZBAR_CFLAGS = @ZBAR_CFLAGS@
+ZBAR_LIBS = @ZBAR_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_OBJC = @ac_ct_OBJC@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+plugindir = @plugindir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
+plugin_LTLIBRARIES = libgstvulkan.la
+SUBDIRS = $(am__append_1)
+DIST_SUBDIRS = xcb
+DISTCLEANFILES = vkconfig.h
+libgstvulkan_la_SOURCES = \
+	gstvulkan.c \
+	vkdevice.c \
+	vkdisplay.c \
+	vkerror.c \
+	vkbuffermemory.c \
+	vkimagememory.c \
+	vkbufferpool.c \
+	vkinstance.c \
+	vkmemory.c \
+	vkqueue.c \
+	vksink.c \
+	vkswapper.c \
+	vkupload.c \
+	vkutils.c \
+	vkwindow.c
+
+noinst_HEADERS = \
+	vk.h \
+	vk_fwd.h \
+	vkdevice.h \
+	vkdisplay.h \
+	vkerror.h \
+	vkbuffermemory.h \
+	vkimagememory.h \
+	vkbufferpool.h \
+	vkinstance.h \
+	vkmemory.h \
+	vkqueue.h \
+	vksink.h \
+	vkswapper.h \
+	vkupload.h \
+	vkutils.h \
+	vkutils_private.h \
+	vkwindow.h
+
+libgstvulkan_la_CFLAGS = \
+	-I$(top_srcdir)/gst-libs \
+	-I$(top_builddir)/gst-libs \
+	$(GST_CFLAGS) \
+	$(GST_BASE_CFLAGS) \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(VULKAN_CFLAGS)
+
+libgstvulkan_la_LIBADD = $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
+	-lgstvideo-$(GST_API_VERSION) $(VULKAN_LIBS) $(am__append_2)
+libgstvulkan_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstvulkan_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
+all: all-recursive
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/vulkan/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu ext/vulkan/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+	list2=; for p in $$list; do \
+	  if test -f $$p; then \
+	    list2="$$list2 $$p"; \
+	  else :; fi; \
+	done; \
+	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
+	}
+
+uninstall-pluginLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
+	done
+
+clean-pluginLTLIBRARIES:
+	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
+	@list='$(plugin_LTLIBRARIES)'; \
+	locs=`for p in $$list; do echo $$p; done | \
+	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+	      sort -u`; \
+	test -z "$$locs" || { \
+	  echo rm -f $${locs}; \
+	  rm -f $${locs}; \
+	}
+
+libgstvulkan.la: $(libgstvulkan_la_OBJECTS) $(libgstvulkan_la_DEPENDENCIES) $(EXTRA_libgstvulkan_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libgstvulkan_la_LINK) -rpath $(plugindir) $(libgstvulkan_la_OBJECTS) $(libgstvulkan_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-gstvulkan.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vkbuffermemory.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vkbufferpool.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vkdevice.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vkdisplay.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vkerror.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vkimagememory.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vkinstance.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vkmemory.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vkqueue.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vksink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vkswapper.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vkupload.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vkutils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_la-vkwindow.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+libgstvulkan_la-gstvulkan.lo: gstvulkan.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-gstvulkan.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-gstvulkan.Tpo -c -o libgstvulkan_la-gstvulkan.lo `test -f 'gstvulkan.c' || echo '$(srcdir)/'`gstvulkan.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-gstvulkan.Tpo $(DEPDIR)/libgstvulkan_la-gstvulkan.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstvulkan.c' object='libgstvulkan_la-gstvulkan.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-gstvulkan.lo `test -f 'gstvulkan.c' || echo '$(srcdir)/'`gstvulkan.c
+
+libgstvulkan_la-vkdevice.lo: vkdevice.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vkdevice.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vkdevice.Tpo -c -o libgstvulkan_la-vkdevice.lo `test -f 'vkdevice.c' || echo '$(srcdir)/'`vkdevice.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vkdevice.Tpo $(DEPDIR)/libgstvulkan_la-vkdevice.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkdevice.c' object='libgstvulkan_la-vkdevice.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vkdevice.lo `test -f 'vkdevice.c' || echo '$(srcdir)/'`vkdevice.c
+
+libgstvulkan_la-vkdisplay.lo: vkdisplay.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vkdisplay.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vkdisplay.Tpo -c -o libgstvulkan_la-vkdisplay.lo `test -f 'vkdisplay.c' || echo '$(srcdir)/'`vkdisplay.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vkdisplay.Tpo $(DEPDIR)/libgstvulkan_la-vkdisplay.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkdisplay.c' object='libgstvulkan_la-vkdisplay.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vkdisplay.lo `test -f 'vkdisplay.c' || echo '$(srcdir)/'`vkdisplay.c
+
+libgstvulkan_la-vkerror.lo: vkerror.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vkerror.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vkerror.Tpo -c -o libgstvulkan_la-vkerror.lo `test -f 'vkerror.c' || echo '$(srcdir)/'`vkerror.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vkerror.Tpo $(DEPDIR)/libgstvulkan_la-vkerror.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkerror.c' object='libgstvulkan_la-vkerror.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vkerror.lo `test -f 'vkerror.c' || echo '$(srcdir)/'`vkerror.c
+
+libgstvulkan_la-vkbuffermemory.lo: vkbuffermemory.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vkbuffermemory.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vkbuffermemory.Tpo -c -o libgstvulkan_la-vkbuffermemory.lo `test -f 'vkbuffermemory.c' || echo '$(srcdir)/'`vkbuffermemory.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vkbuffermemory.Tpo $(DEPDIR)/libgstvulkan_la-vkbuffermemory.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkbuffermemory.c' object='libgstvulkan_la-vkbuffermemory.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vkbuffermemory.lo `test -f 'vkbuffermemory.c' || echo '$(srcdir)/'`vkbuffermemory.c
+
+libgstvulkan_la-vkimagememory.lo: vkimagememory.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vkimagememory.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vkimagememory.Tpo -c -o libgstvulkan_la-vkimagememory.lo `test -f 'vkimagememory.c' || echo '$(srcdir)/'`vkimagememory.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vkimagememory.Tpo $(DEPDIR)/libgstvulkan_la-vkimagememory.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkimagememory.c' object='libgstvulkan_la-vkimagememory.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vkimagememory.lo `test -f 'vkimagememory.c' || echo '$(srcdir)/'`vkimagememory.c
+
+libgstvulkan_la-vkbufferpool.lo: vkbufferpool.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vkbufferpool.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vkbufferpool.Tpo -c -o libgstvulkan_la-vkbufferpool.lo `test -f 'vkbufferpool.c' || echo '$(srcdir)/'`vkbufferpool.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vkbufferpool.Tpo $(DEPDIR)/libgstvulkan_la-vkbufferpool.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkbufferpool.c' object='libgstvulkan_la-vkbufferpool.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vkbufferpool.lo `test -f 'vkbufferpool.c' || echo '$(srcdir)/'`vkbufferpool.c
+
+libgstvulkan_la-vkinstance.lo: vkinstance.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vkinstance.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vkinstance.Tpo -c -o libgstvulkan_la-vkinstance.lo `test -f 'vkinstance.c' || echo '$(srcdir)/'`vkinstance.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vkinstance.Tpo $(DEPDIR)/libgstvulkan_la-vkinstance.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkinstance.c' object='libgstvulkan_la-vkinstance.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vkinstance.lo `test -f 'vkinstance.c' || echo '$(srcdir)/'`vkinstance.c
+
+libgstvulkan_la-vkmemory.lo: vkmemory.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vkmemory.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vkmemory.Tpo -c -o libgstvulkan_la-vkmemory.lo `test -f 'vkmemory.c' || echo '$(srcdir)/'`vkmemory.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vkmemory.Tpo $(DEPDIR)/libgstvulkan_la-vkmemory.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkmemory.c' object='libgstvulkan_la-vkmemory.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vkmemory.lo `test -f 'vkmemory.c' || echo '$(srcdir)/'`vkmemory.c
+
+libgstvulkan_la-vkqueue.lo: vkqueue.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vkqueue.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vkqueue.Tpo -c -o libgstvulkan_la-vkqueue.lo `test -f 'vkqueue.c' || echo '$(srcdir)/'`vkqueue.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vkqueue.Tpo $(DEPDIR)/libgstvulkan_la-vkqueue.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkqueue.c' object='libgstvulkan_la-vkqueue.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vkqueue.lo `test -f 'vkqueue.c' || echo '$(srcdir)/'`vkqueue.c
+
+libgstvulkan_la-vksink.lo: vksink.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vksink.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vksink.Tpo -c -o libgstvulkan_la-vksink.lo `test -f 'vksink.c' || echo '$(srcdir)/'`vksink.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vksink.Tpo $(DEPDIR)/libgstvulkan_la-vksink.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vksink.c' object='libgstvulkan_la-vksink.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vksink.lo `test -f 'vksink.c' || echo '$(srcdir)/'`vksink.c
+
+libgstvulkan_la-vkswapper.lo: vkswapper.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vkswapper.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vkswapper.Tpo -c -o libgstvulkan_la-vkswapper.lo `test -f 'vkswapper.c' || echo '$(srcdir)/'`vkswapper.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vkswapper.Tpo $(DEPDIR)/libgstvulkan_la-vkswapper.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkswapper.c' object='libgstvulkan_la-vkswapper.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vkswapper.lo `test -f 'vkswapper.c' || echo '$(srcdir)/'`vkswapper.c
+
+libgstvulkan_la-vkupload.lo: vkupload.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vkupload.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vkupload.Tpo -c -o libgstvulkan_la-vkupload.lo `test -f 'vkupload.c' || echo '$(srcdir)/'`vkupload.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vkupload.Tpo $(DEPDIR)/libgstvulkan_la-vkupload.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkupload.c' object='libgstvulkan_la-vkupload.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vkupload.lo `test -f 'vkupload.c' || echo '$(srcdir)/'`vkupload.c
+
+libgstvulkan_la-vkutils.lo: vkutils.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vkutils.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vkutils.Tpo -c -o libgstvulkan_la-vkutils.lo `test -f 'vkutils.c' || echo '$(srcdir)/'`vkutils.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vkutils.Tpo $(DEPDIR)/libgstvulkan_la-vkutils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkutils.c' object='libgstvulkan_la-vkutils.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vkutils.lo `test -f 'vkutils.c' || echo '$(srcdir)/'`vkutils.c
+
+libgstvulkan_la-vkwindow.lo: vkwindow.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_la-vkwindow.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_la-vkwindow.Tpo -c -o libgstvulkan_la-vkwindow.lo `test -f 'vkwindow.c' || echo '$(srcdir)/'`vkwindow.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_la-vkwindow.Tpo $(DEPDIR)/libgstvulkan_la-vkwindow.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkwindow.c' object='libgstvulkan_la-vkwindow.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 $(libgstvulkan_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_la-vkwindow.lo `test -f 'vkwindow.c' || echo '$(srcdir)/'`vkwindow.c
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run 'make' without going through this Makefile.
+# To change the values of 'make' variables: instead of editing Makefiles,
+# (1) if the variable is set in 'config.status', edit 'config.status'
+#     (which will cause the Makefiles to be regenerated when you run 'make');
+# (2) otherwise, pass the desired values on the 'make' command line.
+$(am__recursive_targets):
+	@fail=; \
+	if $(am__make_keepgoing); then \
+	  failcom='fail=yes'; \
+	else \
+	  failcom='exit 1'; \
+	fi; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	$(am__define_uniq_tagged_files); \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+	$(am__define_uniq_tagged_files); \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
+
+cscopelist-am: $(am__tagged_files)
+	list='$(am__tagged_files)'; \
+	case "$(srcdir)" in \
+	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+	  *) sdir=$(subdir)/$(srcdir) ;; \
+	esac; \
+	for i in $$list; do \
+	  if test -f "$$i"; then \
+	    echo "$(subdir)/$$i"; \
+	  else \
+	    echo "$$sdir/$$i"; \
+	  fi; \
+	done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+installdirs: installdirs-recursive
+installdirs-am:
+	for dir in "$(DESTDIR)$(plugindir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
+	mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pluginLTLIBRARIES
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-pluginLTLIBRARIES
+
+.MAKE: $(am__recursive_targets) install-am install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+	check-am clean clean-generic clean-libtool \
+	clean-pluginLTLIBRARIES cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-pluginLTLIBRARIES \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am \
+	uninstall-pluginLTLIBRARIES
+
+.PRECIOUS: Makefile
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ext/vulkan/gstvulkan.c b/ext/vulkan/gstvulkan.c
new file mode 100644
index 0000000..7158895
--- /dev/null
+++ b/ext/vulkan/gstvulkan.c
@@ -0,0 +1,68 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:plugin-vulkan
+ *
+ * Cross-platform Vulkan plugin.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vksink.h"
+#include "vkupload.h"
+
+#if GST_VULKAN_HAVE_WINDOW_X11
+#include <X11/Xlib.h>
+#endif
+
+#define GST_CAT_DEFAULT gst_gl_gstgl_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+  GST_DEBUG_CATEGORY_INIT (gst_gl_gstgl_debug, "gstvulkan", 0, "gstvulkan");
+
+#if GST_VULKAN_HAVE_WINDOW_X11
+  if (g_getenv ("GST_VULKAN_XINITTHREADS"))
+    XInitThreads ();
+#endif
+
+  if (!gst_element_register (plugin, "vulkansink",
+          GST_RANK_NONE, GST_TYPE_VULKAN_SINK)) {
+    return FALSE;
+  }
+
+  if (!gst_element_register (plugin, "vulkanupload",
+          GST_RANK_NONE, GST_TYPE_VULKAN_UPLOAD)) {
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    vulkan,
+    "Vulkan plugin",
+    plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/ext/vulkan/vk.h b/ext/vulkan/vk.h
new file mode 100644
index 0000000..0225ed3
--- /dev/null
+++ b/ext/vulkan/vk.h
@@ -0,0 +1,41 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _VK_H_
+#define _VK_H_
+
+#include <gst/gst.h>
+
+#include "vkapi.h"
+
+#include "vkerror.h"
+#include "vkinstance.h"
+#include "vkdevice.h"
+#include "vkqueue.h"
+#include "vkdisplay.h"
+#include "vkwindow.h"
+#include "vkswapper.h"
+#include "vkmemory.h"
+#include "vkbuffermemory.h"
+#include "vkimagememory.h"
+#include "vkbufferpool.h"
+#include "vkutils.h"
+
+#endif /* _VK_H_ */
diff --git a/ext/vulkan/vk_fwd.h b/ext/vulkan/vk_fwd.h
new file mode 100644
index 0000000..ed6f024
--- /dev/null
+++ b/ext/vulkan/vk_fwd.h
@@ -0,0 +1,71 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _VK_FWD_H_
+#define _VK_FWD_H_
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GstVulkanInstance GstVulkanInstance;
+typedef struct _GstVulkanInstanceClass GstVulkanInstanceClass;
+typedef struct _GstVulkanInstancePrivate GstVulkanInstancePrivate;
+
+typedef struct _GstVulkanDevice GstVulkanDevice;
+typedef struct _GstVulkanDeviceClass GstVulkanDeviceClass;
+typedef struct _GstVulkanDevicePrivate GstVulkanDevicePrivate;
+
+typedef struct _GstVulkanQueue GstVulkanQueue;
+typedef struct _GstVulkanQueueClass GstVulkanQueueClass;
+
+typedef enum _GstVulkanDisplayType GstVulkanDisplayType;
+
+typedef struct _GstVulkanDisplay GstVulkanDisplay;
+typedef struct _GstVulkanDisplayClass GstVulkanDisplayClass;
+typedef struct _GstVulkanDisplayPrivate GstVulkanDisplayPrivate;
+
+typedef struct _GstVulkanWindow GstVulkanWindow;
+typedef struct _GstVulkanWindowClass GstVulkanWindowClass;
+typedef struct _GstVulkanWindowPrivate GstVulkanWindowPrivate;
+
+typedef struct _GstVulkanSwapper GstVulkanSwapper;
+typedef struct _GstVulkanSwapperClass GstVulkanSwapperClass;
+typedef struct _GstVulkanSwapperPrivate GstVulkanSwapperPrivate;
+
+typedef struct _GstVulkanMemory GstVulkanMemory;
+typedef struct _GstVulkanMemoryAllocator GstVulkanMemoryAllocator;
+typedef struct _GstVulkanMemoryAllocatorClass GstVulkanMemoryAllocatorClass;
+
+typedef struct _GstVulkanBufferMemory GstVulkanBufferMemory;
+typedef struct _GstVulkanBufferMemoryAllocator GstVulkanBufferMemoryAllocator;
+typedef struct _GstVulkanBufferMemoryAllocatorClass GstVulkanBufferMemoryAllocatorClass;
+
+typedef struct _GstVulkanImageMemory GstVulkanImageMemory;
+typedef struct _GstVulkanImageMemoryAllocator GstVulkanImageMemoryAllocator;
+typedef struct _GstVulkanImageMemoryAllocatorClass GstVulkanImageMemoryAllocatorClass;
+
+typedef struct _GstVulkanBufferPool GstVulkanBufferPool;
+typedef struct _GstVulkanBufferPoolClass GstVulkanBufferPoolClass;
+typedef struct _GstVulkanBufferPoolPrivate GstVulkanBufferPoolPrivate;
+
+G_END_DECLS
+
+#endif /* _VK_FWD_H_ */
diff --git a/ext/vulkan/vkbuffermemory.c b/ext/vulkan/vkbuffermemory.c
new file mode 100644
index 0000000..e54d159
--- /dev/null
+++ b/ext/vulkan/vkbuffermemory.c
@@ -0,0 +1,432 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vkbuffermemory.h"
+
+/**
+ * SECTION:vkbuffermemory
+ * @short_description: memory subclass for Vulkan buffer memory
+ * @see_also: #GstMemory, #GstAllocator
+ *
+ * GstVulkanBufferMemory is a #GstMemory subclass providing support for the
+ * mapping of Vulkan device memory.
+ */
+
+#define GST_CAT_DEFUALT GST_CAT_VULKAN_BUFFER_MEMORY
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFUALT);
+
+static GstAllocator *_vulkan_buffer_memory_allocator;
+
+#define GST_VK_BUFFER_CREATE_INFO_INIT GST_VK_STRUCT_8
+#define GST_VK_BUFFER_CREATE_INFO(info, pNext, flags, size, usage, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices ) \
+  G_STMT_START { \
+    VkBufferCreateInfo tmp = GST_VK_BUFFER_CREATE_INFO_INIT (VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, pNext, flags, size, usage, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices); \
+    (info) = tmp; \
+  } G_STMT_END
+
+static gboolean
+_create_info_from_args (VkBufferCreateInfo * info, gsize size,
+    VkBufferUsageFlags usage)
+{
+  /* FIXME: validate these */
+  GST_VK_BUFFER_CREATE_INFO (*info, NULL, 0, size, usage,
+      VK_SHARING_MODE_EXCLUSIVE, 0, NULL);
+
+  return TRUE;
+}
+
+#define GST_VK_BUFFER_VIEW_CREATE_INFO_INIT GST_VK_STRUCT_7
+#define GST_VK_BUFFER_VIEW_CREATE_INFO(info, pNext, flags, buffer, format, offset, range) \
+  G_STMT_START { \
+    VkBufferViewCreateInfo tmp = GST_VK_BUFFER_VIEW_CREATE_INFO_INIT (VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO, pNext, flags, buffer, format, offset, range); \
+    (info) = tmp; \
+  } G_STMT_END
+
+static gboolean
+_create_view_from_args (VkBufferViewCreateInfo * info, VkBuffer buffer,
+    VkFormat format, gsize offset, gsize range)
+{
+  /* FIXME: validate these */
+  g_assert (format != VK_FORMAT_UNDEFINED);
+
+  GST_VK_BUFFER_VIEW_CREATE_INFO (*info, NULL, 0, buffer, format, offset,
+      range);
+
+  return TRUE;
+}
+
+static void
+_vk_buffer_mem_init (GstVulkanBufferMemory * mem, GstAllocator * allocator,
+    GstMemory * parent, GstVulkanDevice * device, VkBufferUsageFlags usage,
+    GstAllocationParams * params, gsize size, gpointer user_data,
+    GDestroyNotify notify)
+{
+  gsize align = gst_memory_alignment, offset = 0, maxsize = size;
+  GstMemoryFlags flags = 0;
+
+  if (params) {
+    flags = params->flags;
+    align |= params->align;
+    offset = params->prefix;
+    maxsize += params->prefix + params->padding + align;
+  }
+
+  gst_memory_init (GST_MEMORY_CAST (mem), flags, allocator, parent, maxsize,
+      align, offset, size);
+
+  mem->device = gst_object_ref (device);
+  mem->wrapped = FALSE;
+  mem->notify = notify;
+  mem->user_data = user_data;
+
+  g_mutex_init (&mem->lock);
+
+  GST_CAT_DEBUG (GST_CAT_VULKAN_BUFFER_MEMORY,
+      "new Vulkan Buffer memory:%p size:%" G_GSIZE_FORMAT, mem, maxsize);
+}
+
+static GstVulkanBufferMemory *
+_vk_buffer_mem_new_alloc (GstAllocator * allocator, GstMemory * parent,
+    GstVulkanDevice * device, VkFormat format, gsize size,
+    VkBufferUsageFlags usage, VkMemoryPropertyFlags mem_prop_flags,
+    gpointer user_data, GDestroyNotify notify)
+{
+  GstVulkanBufferMemory *mem = NULL;
+  GstAllocationParams params = { 0, };
+  VkBufferCreateInfo buffer_info;
+  GError *error = NULL;
+  guint32 type_idx;
+  VkBuffer buffer;
+  VkResult err;
+
+  if (!_create_info_from_args (&buffer_info, size, usage)) {
+    GST_CAT_ERROR (GST_CAT_VULKAN_BUFFER_MEMORY, "Incorrect buffer parameters");
+    goto error;
+  }
+
+  err = vkCreateBuffer (device->device, &buffer_info, NULL, &buffer);
+  if (gst_vulkan_error_to_g_error (err, &error, "vkCreateBuffer") < 0)
+    goto vk_error;
+
+  mem = g_new0 (GstVulkanBufferMemory, 1);
+  vkGetBufferMemoryRequirements (device->device, buffer, &mem->requirements);
+
+  /* XXX: assumes alignment is a power of 2 */
+  params.align = mem->requirements.alignment - 1;
+  _vk_buffer_mem_init (mem, allocator, parent, device, usage, &params,
+      mem->requirements.size, user_data, notify);
+  mem->buffer = buffer;
+
+  if (!gst_vulkan_memory_find_memory_type_index_with_type_properties (device,
+          mem->requirements.memoryTypeBits, mem_prop_flags, &type_idx))
+    goto error;
+
+  mem->vk_mem = (GstVulkanMemory *) gst_vulkan_memory_alloc (device, type_idx,
+      &params, mem->requirements.size, mem_prop_flags);
+  if (!mem->vk_mem)
+    goto error;
+
+  err = vkBindBufferMemory (device->device, buffer, mem->vk_mem->mem_ptr, 0);
+  if (gst_vulkan_error_to_g_error (err, &error, "vkBindBufferMemory") < 0)
+    goto vk_error;
+
+  if (usage & (VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT |
+          VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT |
+          VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT |
+          VK_BUFFER_USAGE_STORAGE_BUFFER_BIT |
+          VK_BUFFER_USAGE_INDEX_BUFFER_BIT |
+          VK_BUFFER_USAGE_VERTEX_BUFFER_BIT |
+          VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT)) {
+    VkBufferViewCreateInfo view_info;
+
+    _create_view_from_args (&view_info, mem->buffer, format, 0,
+        mem->requirements.size);
+    err = vkCreateBufferView (device->device, &view_info, NULL, &mem->view);
+    if (gst_vulkan_error_to_g_error (err, &error, "vkCreateBufferView") < 0)
+      goto vk_error;
+  }
+
+  return mem;
+
+vk_error:
+  {
+    GST_CAT_ERROR (GST_CAT_VULKAN_BUFFER_MEMORY,
+        "Failed to allocate buffer memory %s", error->message);
+    g_clear_error (&error);
+    goto error;
+  }
+
+error:
+  {
+    if (mem)
+      gst_memory_unref ((GstMemory *) mem);
+    return NULL;
+  }
+}
+
+static GstVulkanBufferMemory *
+_vk_buffer_mem_new_wrapped (GstAllocator * allocator, GstMemory * parent,
+    GstVulkanDevice * device, VkBuffer buffer, VkFormat format,
+    VkBufferUsageFlags usage, gpointer user_data, GDestroyNotify notify)
+{
+  GstVulkanBufferMemory *mem = g_new0 (GstVulkanBufferMemory, 1);
+  GstAllocationParams params = { 0, };
+  GError *error = NULL;
+  VkResult err;
+
+  mem->buffer = buffer;
+
+  vkGetBufferMemoryRequirements (device->device, mem->buffer,
+      &mem->requirements);
+
+  params.align = mem->requirements.alignment - 1;
+  params.flags = GST_MEMORY_FLAG_NOT_MAPPABLE;
+  _vk_buffer_mem_init (mem, allocator, parent, device, usage, &params,
+      mem->requirements.size, user_data, notify);
+  mem->wrapped = TRUE;
+
+  /* XXX: we don't actually if the buffer has a vkDeviceMemory bound so
+   * this may fail */
+  if (usage & (VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT |
+          VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT |
+          VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT |
+          VK_BUFFER_USAGE_STORAGE_BUFFER_BIT |
+          VK_BUFFER_USAGE_INDEX_BUFFER_BIT |
+          VK_BUFFER_USAGE_VERTEX_BUFFER_BIT |
+          VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT)) {
+    VkBufferViewCreateInfo view_info;
+
+    _create_view_from_args (&view_info, mem->buffer, format, 0,
+        mem->requirements.size);
+    err = vkCreateBufferView (device->device, &view_info, NULL, &mem->view);
+    if (gst_vulkan_error_to_g_error (err, &error, "vkCreateBufferView") < 0)
+      goto vk_error;
+  }
+
+  return mem;
+
+vk_error:
+  {
+    GST_CAT_ERROR (GST_CAT_VULKAN_BUFFER_MEMORY,
+        "Failed to allocate buffer memory %s", error->message);
+    g_clear_error (&error);
+    goto error;
+  }
+
+error:
+  {
+    gst_memory_unref ((GstMemory *) mem);
+    return NULL;
+  }
+}
+
+static gpointer
+_vk_buffer_mem_map_full (GstVulkanBufferMemory * mem, GstMapInfo * info,
+    gsize size)
+{
+  GstMapInfo *vk_map_info;
+
+  /* FIXME: possible barrier needed */
+  g_mutex_lock (&mem->lock);
+
+  if (!mem->vk_mem) {
+    g_mutex_unlock (&mem->lock);
+    return NULL;
+  }
+
+  vk_map_info = g_new0 (GstMapInfo, 1);
+  info->user_data[0] = vk_map_info;
+  if (!gst_memory_map ((GstMemory *) mem->vk_mem, vk_map_info, info->flags)) {
+    g_free (vk_map_info);
+    g_mutex_unlock (&mem->lock);
+    return NULL;
+  }
+  g_mutex_unlock (&mem->lock);
+
+  return vk_map_info->data;
+}
+
+static void
+_vk_buffer_mem_unmap_full (GstVulkanBufferMemory * mem, GstMapInfo * info)
+{
+  g_mutex_lock (&mem->lock);
+  gst_memory_unmap ((GstMemory *) mem->vk_mem, info->user_data[0]);
+  g_mutex_unlock (&mem->lock);
+
+  g_free (info->user_data[0]);
+}
+
+static GstMemory *
+_vk_buffer_mem_copy (GstVulkanBufferMemory * src, gssize offset, gssize size)
+{
+  return NULL;
+}
+
+static GstMemory *
+_vk_buffer_mem_share (GstVulkanBufferMemory * mem, gssize offset, gssize size)
+{
+  return NULL;
+}
+
+static gboolean
+_vk_buffer_mem_is_span (GstVulkanBufferMemory * mem1,
+    GstVulkanBufferMemory * mem2, gsize * offset)
+{
+  return FALSE;
+}
+
+static GstMemory *
+_vk_buffer_mem_alloc (GstAllocator * allocator, gsize size,
+    GstAllocationParams * params)
+{
+  g_critical ("Subclass should override GstAllocatorClass::alloc() function");
+
+  return NULL;
+}
+
+static void
+_vk_buffer_mem_free (GstAllocator * allocator, GstMemory * memory)
+{
+  GstVulkanBufferMemory *mem = (GstVulkanBufferMemory *) memory;
+
+  GST_CAT_TRACE (GST_CAT_VULKAN_BUFFER_MEMORY, "freeing buffer memory:%p "
+      "id:%" G_GUINT64_FORMAT, mem, (guint64) mem->buffer);
+
+  if (mem->buffer && !mem->wrapped)
+    vkDestroyBuffer (mem->device->device, mem->buffer, NULL);
+
+  if (mem->view)
+    vkDestroyBufferView (mem->device->device, mem->view, NULL);
+
+  if (mem->vk_mem)
+    gst_memory_unref ((GstMemory *) mem->vk_mem);
+
+  if (mem->notify)
+    mem->notify (mem->user_data);
+
+  gst_object_unref (mem->device);
+}
+
+/**
+ * gst_vulkan_buffer_memory_alloc:
+ * @device:a #GstVulkanDevice
+ * @memory_type_index: the Vulkan memory type index
+ * @params: a #GstAllocationParams
+ * @size: the size to allocate
+ *
+ * Allocated a new #GstVulkanBufferMemory.
+ *
+ * Returns: a #GstMemory object backed by a vulkan device memory
+ */
+GstMemory *
+gst_vulkan_buffer_memory_alloc (GstVulkanDevice * device, VkFormat format,
+    gsize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags mem_prop_flags)
+{
+  GstVulkanBufferMemory *mem;
+
+  mem = _vk_buffer_mem_new_alloc (_vulkan_buffer_memory_allocator, NULL, device,
+      format, size, usage, mem_prop_flags, NULL, NULL);
+
+  return (GstMemory *) mem;
+}
+
+GstMemory *
+gst_vulkan_buffer_memory_wrapped (GstVulkanDevice * device, VkBuffer buffer,
+    VkFormat format, VkBufferUsageFlags usage, gpointer user_data,
+    GDestroyNotify notify)
+{
+  GstVulkanBufferMemory *mem;
+
+  mem =
+      _vk_buffer_mem_new_wrapped (_vulkan_buffer_memory_allocator, NULL, device,
+      buffer, format, usage, user_data, notify);
+
+  return (GstMemory *) mem;
+}
+
+G_DEFINE_TYPE (GstVulkanBufferMemoryAllocator,
+    gst_vulkan_buffer_memory_allocator, GST_TYPE_ALLOCATOR);
+
+static void
+    gst_vulkan_buffer_memory_allocator_class_init
+    (GstVulkanBufferMemoryAllocatorClass * klass)
+{
+  GstAllocatorClass *allocator_class = (GstAllocatorClass *) klass;
+
+  allocator_class->alloc = _vk_buffer_mem_alloc;
+  allocator_class->free = _vk_buffer_mem_free;
+}
+
+static void
+gst_vulkan_buffer_memory_allocator_init (GstVulkanBufferMemoryAllocator *
+    allocator)
+{
+  GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator);
+
+  alloc->mem_type = GST_VULKAN_BUFFER_MEMORY_ALLOCATOR_NAME;
+  alloc->mem_map_full = (GstMemoryMapFullFunction) _vk_buffer_mem_map_full;
+  alloc->mem_unmap_full =
+      (GstMemoryUnmapFullFunction) _vk_buffer_mem_unmap_full;
+  alloc->mem_copy = (GstMemoryCopyFunction) _vk_buffer_mem_copy;
+  alloc->mem_share = (GstMemoryShareFunction) _vk_buffer_mem_share;
+  alloc->mem_is_span = (GstMemoryIsSpanFunction) _vk_buffer_mem_is_span;
+}
+
+/**
+ * gst_vulkan_buffer_memory_init_once:
+ *
+ * Initializes the Vulkan memory allocator. It is safe to call this function
+ * multiple times.  This must be called before any other #GstVulkanBufferMemory operation.
+ */
+void
+gst_vulkan_buffer_memory_init_once (void)
+{
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_VULKAN_BUFFER_MEMORY, "vulkanbuffermemory",
+        0, "Vulkan Buffer Memory");
+
+    _vulkan_buffer_memory_allocator =
+        g_object_new (gst_vulkan_buffer_memory_allocator_get_type (), NULL);
+
+    gst_allocator_register (GST_VULKAN_BUFFER_MEMORY_ALLOCATOR_NAME,
+        gst_object_ref (_vulkan_buffer_memory_allocator));
+    g_once_init_leave (&_init, 1);
+  }
+}
+
+/**
+ * gst_is_vulkan_buffer_memory:
+ * @mem:a #GstMemory
+ * 
+ * Returns: whether the memory at @mem is a #GstVulkanBufferMemory
+ */
+gboolean
+gst_is_vulkan_buffer_memory (GstMemory * mem)
+{
+  return mem != NULL && mem->allocator != NULL &&
+      g_type_is_a (G_OBJECT_TYPE (mem->allocator),
+      GST_TYPE_VULKAN_BUFFER_MEMORY_ALLOCATOR);
+}
diff --git a/ext/vulkan/vkbuffermemory.h b/ext/vulkan/vkbuffermemory.h
new file mode 100644
index 0000000..3b58282
--- /dev/null
+++ b/ext/vulkan/vkbuffermemory.h
@@ -0,0 +1,102 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _VK_BUFFER_MEMORY_H_
+#define _VK_BUFFER_MEMORY_H_
+
+#include <gst/gst.h>
+#include <gst/gstallocator.h>
+#include <gst/gstmemory.h>
+
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_VULKAN_BUFFER_MEMORY_ALLOCATOR (gst_vulkan_buffer_memory_allocator_get_type())
+GType gst_vulkan_buffer_memory_allocator_get_type(void);
+
+#define GST_IS_VULKAN_BUFFER_MEMORY_ALLOCATOR(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_VULKAN_BUFFER_MEMORY_ALLOCATOR))
+#define GST_IS_VULKAN_BUFFER_MEMORY_ALLOCATOR_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_VULKAN_BUFFER_MEMORY_ALLOCATOR))
+#define GST_VULKAN_BUFFER_MEMORY_ALLOCATOR_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_VULKAN_MEMORY_ALLOCATOR, GstVulkanBufferMemoryAllocatorClass))
+#define GST_VULKAN_BUFFER_MEMORY_ALLOCATOR(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_VULKAN_MEMORY_ALLOCATOR, GstVulkanBufferMemoryAllocator))
+#define GST_VULKAN_BUFFER_MEMORY_ALLOCATOR_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_VULKAN_MEMORY_ALLOCATOR, GstVulkanBufferMemoryAllocatorClass))
+#define GST_VULKAN_BUFFER_MEMORY_ALLOCATOR_CAST(obj)            ((GstVulkanBufferMemoryAllocator *)(obj))
+
+#define GST_VULKAN_BUFFER_MEMORY_ALLOCATOR_NAME "VulkanBuffer"
+#define GST_CAPS_FEATURE_MEMORY_VULKAN_BUFFER "memory:" GST_VULKAN_BUFFER_MEMORY_ALLOCATOR_NAME
+
+struct _GstVulkanBufferMemory
+{
+  GstMemory parent;
+
+  GstVulkanDevice * device;
+
+  VkBuffer buffer;
+  VkBufferView view;
+  GstVulkanMemory *vk_mem;
+
+  VkMemoryRequirements requirements;
+  VkBufferUsageFlags usage;
+
+  GMutex lock;
+  gboolean wrapped;
+  GDestroyNotify notify;
+  gpointer user_data;
+};
+
+/**
+ * GstVulkanBufferMemoryAllocator
+ *
+ * Opaque #GstVulkanBufferMemoryAllocator struct
+ */
+struct _GstVulkanBufferMemoryAllocator
+{
+  GstAllocator parent;
+};
+
+/**
+ * GstVulkanBufferMemoryAllocatorClass:
+ *
+ * The #GstVulkanBufferMemoryAllocatorClass only contains private data
+ */
+struct _GstVulkanBufferMemoryAllocatorClass
+{
+  GstAllocatorClass parent_class;
+};
+
+void            gst_vulkan_buffer_memory_init_once       (void);
+gboolean        gst_is_vulkan_buffer_memory              (GstMemory * mem);
+
+GstMemory *     gst_vulkan_buffer_memory_alloc           (GstVulkanDevice * device,
+                                                         VkFormat format,
+                                                         gsize size,
+                                                         VkBufferUsageFlags usage,
+                                                         VkMemoryPropertyFlags mem_prop_flags);
+
+GstMemory *     gst_vulkan_buffer_memory_wrapped         (GstVulkanDevice * device,
+                                                         VkBuffer buffer,
+                                                         VkFormat format,
+                                                         VkBufferUsageFlags usage,
+                                                         gpointer user_data,
+                                                         GDestroyNotify notify);
+
+G_END_DECLS
+
+#endif /* _VK_BUFFER_MEMORY_H_ */
diff --git a/ext/vulkan/vkbufferpool.c b/ext/vulkan/vkbufferpool.c
new file mode 100644
index 0000000..01fb2fb
--- /dev/null
+++ b/ext/vulkan/vkbufferpool.c
@@ -0,0 +1,256 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vkbufferpool.h"
+
+/**
+ * SECTION:vkbufferpool
+ * @short_description: buffer pool for #GstVulkanBufferMemory objects
+ * @see_also: #GstBufferPool, #GstVulkanBufferMemory
+ *
+ * a #GstVulkanBufferPool is an object that allocates buffers with #GstVulkanBufferMemory
+ *
+ * A #GstVulkanBufferPool is created with gst_vulkan_buffer_pool_new()
+ *
+ * #GstVulkanBufferPool implements the VideoMeta buffer pool option 
+ * #GST_BUFFER_POOL_OPTION_VIDEO_META
+ */
+
+/* bufferpool */
+struct _GstVulkanBufferPoolPrivate
+{
+  GstCaps *caps;
+  GstVideoInfo v_info;
+  gboolean add_videometa;
+  gsize alloc_sizes[GST_VIDEO_MAX_PLANES];
+};
+
+static void gst_vulkan_buffer_pool_finalize (GObject * object);
+
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_VULKAN_BUFFER_POOL);
+#define GST_CAT_DEFAULT GST_CAT_VULKAN_BUFFER_POOL
+
+#define GST_VULKAN_BUFFER_POOL_GET_PRIVATE(obj)  \
+   (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_VULKAN_BUFFER_POOL, GstVulkanBufferPoolPrivate))
+
+#define gst_vulkan_buffer_pool_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstVulkanBufferPool, gst_vulkan_buffer_pool,
+    GST_TYPE_BUFFER_POOL, GST_DEBUG_CATEGORY_INIT (GST_CAT_VULKAN_BUFFER_POOL,
+        "vulkanbufferpool", 0, "Vulkan Buffer Pool"));
+
+static const gchar **
+gst_vulkan_buffer_pool_get_options (GstBufferPool * pool)
+{
+  static const gchar *options[] = { GST_BUFFER_POOL_OPTION_VIDEO_META,
+    NULL
+  };
+
+  return options;
+}
+
+static gboolean
+gst_vulkan_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
+{
+  GstVulkanBufferPool *vk_pool = GST_VULKAN_BUFFER_POOL_CAST (pool);
+  GstVulkanBufferPoolPrivate *priv = vk_pool->priv;
+  guint min_buffers, max_buffers;
+  GstCaps *caps = NULL;
+  gboolean ret = TRUE;
+  guint i;
+
+  if (!gst_buffer_pool_config_get_params (config, &caps, NULL, &min_buffers,
+          &max_buffers))
+    goto wrong_config;
+
+  if (caps == NULL)
+    goto no_caps;
+
+  /* now parse the caps from the config */
+  if (!gst_video_info_from_caps (&priv->v_info, caps))
+    goto wrong_caps;
+
+  GST_LOG_OBJECT (pool, "%dx%d, caps %" GST_PTR_FORMAT, priv->v_info.width,
+      priv->v_info.height, caps);
+
+  gst_caps_replace (&priv->caps, caps);
+
+  /* get the size of the buffer to allocate */
+  for (i = 0; i < GST_VIDEO_INFO_N_PLANES (&priv->v_info); i++) {
+    GstVideoFormat v_format = GST_VIDEO_INFO_FORMAT (&priv->v_info);
+    GstVulkanImageMemory *img_mem;
+    guint width, height;
+    VkFormat vk_format;
+
+    vk_format = gst_vulkan_format_from_video_format (v_format, i);
+    width = GST_VIDEO_INFO_WIDTH (&priv->v_info);
+    height = GST_VIDEO_INFO_HEIGHT (&priv->v_info);
+
+    img_mem = (GstVulkanImageMemory *)
+        gst_vulkan_image_memory_alloc (vk_pool->device, vk_format, width,
+        height, VK_IMAGE_TILING_OPTIMAL,
+        VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
+        VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
+
+    priv->alloc_sizes[i] = img_mem->requirements.size;
+
+    gst_memory_unref (GST_MEMORY_CAST (img_mem));
+  }
+
+  priv->add_videometa = gst_buffer_pool_config_has_option (config,
+      GST_BUFFER_POOL_OPTION_VIDEO_META);
+
+  gst_buffer_pool_config_set_params (config, caps,
+      priv->v_info.size, min_buffers, max_buffers);
+
+  return GST_BUFFER_POOL_CLASS (parent_class)->set_config (pool, config) && ret;
+
+  /* ERRORS */
+wrong_config:
+  {
+    GST_WARNING_OBJECT (pool, "invalid config");
+    return FALSE;
+  }
+no_caps:
+  {
+    GST_WARNING_OBJECT (pool, "no caps in config");
+    return FALSE;
+  }
+wrong_caps:
+  {
+    GST_WARNING_OBJECT (pool,
+        "failed getting geometry from caps %" GST_PTR_FORMAT, caps);
+    return FALSE;
+  }
+}
+
+/* This function handles GstBuffer creation */
+static GstFlowReturn
+gst_vulkan_buffer_pool_alloc (GstBufferPool * pool, GstBuffer ** buffer,
+    GstBufferPoolAcquireParams * params)
+{
+  GstVulkanBufferPool *vk_pool = GST_VULKAN_BUFFER_POOL_CAST (pool);
+  GstVulkanBufferPoolPrivate *priv = vk_pool->priv;
+  GstBuffer *buf;
+  guint i;
+
+  if (!(buf = gst_buffer_new ())) {
+    goto no_buffer;
+  }
+
+  for (i = 0; i < GST_VIDEO_INFO_N_PLANES (&priv->v_info); i++) {
+    GstVideoFormat v_format = GST_VIDEO_INFO_FORMAT (&priv->v_info);
+    VkFormat vk_format;
+    GstMemory *mem;
+
+    vk_format = gst_vulkan_format_from_video_format (v_format, i);
+
+    mem = gst_vulkan_buffer_memory_alloc (vk_pool->device,
+        vk_format, priv->alloc_sizes[i],
+        VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT,
+        VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT);
+    if (!mem) {
+      gst_buffer_unref (buf);
+      goto mem_create_failed;
+    }
+
+    gst_buffer_append_memory (buf, mem);
+  }
+
+  *buffer = buf;
+
+  return GST_FLOW_OK;
+
+  /* ERROR */
+no_buffer:
+  {
+    GST_WARNING_OBJECT (pool, "can't create image");
+    return GST_FLOW_ERROR;
+  }
+mem_create_failed:
+  {
+    GST_WARNING_OBJECT (pool, "Could not create Vulkan Memory");
+    return GST_FLOW_ERROR;
+  }
+}
+
+/**
+ * gst_vulkan_buffer_pool_new:
+ * @context: the #GstGLContext to use
+ *
+ * Returns: a #GstBufferPool that allocates buffers with #GstGLMemory
+ */
+GstBufferPool *
+gst_vulkan_buffer_pool_new (GstVulkanDevice * device)
+{
+  GstVulkanBufferPool *pool;
+
+  pool = g_object_new (GST_TYPE_VULKAN_BUFFER_POOL, NULL);
+  pool->device = gst_object_ref (device);
+
+  GST_LOG_OBJECT (pool, "new Vulkan buffer pool for device %" GST_PTR_FORMAT,
+      device);
+
+  return GST_BUFFER_POOL_CAST (pool);
+}
+
+static void
+gst_vulkan_buffer_pool_class_init (GstVulkanBufferPoolClass * klass)
+{
+  GObjectClass *gobject_class = (GObjectClass *) klass;
+  GstBufferPoolClass *gstbufferpool_class = (GstBufferPoolClass *) klass;
+
+  g_type_class_add_private (klass, sizeof (GstVulkanBufferPoolPrivate));
+
+  gobject_class->finalize = gst_vulkan_buffer_pool_finalize;
+
+  gstbufferpool_class->get_options = gst_vulkan_buffer_pool_get_options;
+  gstbufferpool_class->set_config = gst_vulkan_buffer_pool_set_config;
+  gstbufferpool_class->alloc_buffer = gst_vulkan_buffer_pool_alloc;
+}
+
+static void
+gst_vulkan_buffer_pool_init (GstVulkanBufferPool * pool)
+{
+  pool->priv = GST_VULKAN_BUFFER_POOL_GET_PRIVATE (pool);
+}
+
+static void
+gst_vulkan_buffer_pool_finalize (GObject * object)
+{
+  GstVulkanBufferPool *pool = GST_VULKAN_BUFFER_POOL_CAST (object);
+  GstVulkanBufferPoolPrivate *priv = pool->priv;
+
+  GST_LOG_OBJECT (pool, "finalize Vulkan buffer pool %p", pool);
+
+  if (priv->caps)
+    gst_caps_unref (priv->caps);
+
+  G_OBJECT_CLASS (gst_vulkan_buffer_pool_parent_class)->finalize (object);
+
+  /* only release the context once all our memory have been deleted */
+  if (pool->device) {
+    gst_object_unref (pool->device);
+    pool->device = NULL;
+  }
+}
diff --git a/ext/vulkan/vkbufferpool.h b/ext/vulkan/vkbufferpool.h
new file mode 100644
index 0000000..5dd4baf
--- /dev/null
+++ b/ext/vulkan/vkbufferpool.h
@@ -0,0 +1,67 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _GST_VULKAN_BUFFER_POOL_H_
+#define _GST_VULKAN_BUFFER_POOL_H_
+
+#include <gst/video/video.h>
+#include <gst/video/gstvideometa.h>
+#include <gst/video/gstvideopool.h>
+
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+/* buffer pool functions */
+GType gst_vulkan_buffer_pool_get_type (void);
+#define GST_TYPE_VULKAN_BUFFER_POOL      (gst_vulkan_buffer_pool_get_type())
+#define GST_IS_VULKAN_BUFFER_POOL(obj)   (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_VULKAN_BUFFER_POOL))
+#define GST_VULKAN_BUFFER_POOL(obj)      (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_VULKAN_BUFFER_POOL, GstVulkanBufferPool))
+#define GST_VULKAN_BUFFER_POOL_CAST(obj) ((GstVulkanBufferPool*)(obj))
+
+/**
+ * GstVulkanBufferPool:
+ *
+ * Opaque GstVulkanBufferPool struct
+ */
+struct _GstVulkanBufferPool
+{
+  GstBufferPool bufferpool;
+
+  GstVulkanDevice *device;
+
+  GstVulkanBufferPoolPrivate *priv;
+};
+
+/**
+ * GstVulkanBufferPoolClass:
+ *
+ * The #GstVulkanBufferPoolClass structure contains only private data
+ */
+struct _GstVulkanBufferPoolClass
+{
+  GstBufferPoolClass parent_class;
+};
+
+GstBufferPool *gst_vulkan_buffer_pool_new (GstVulkanDevice * device);
+
+G_END_DECLS
+
+#endif /* _GST_VULKAN_BUFFER_POOL_H_ */
diff --git a/ext/vulkan/vkdevice.c b/ext/vulkan/vkdevice.c
new file mode 100644
index 0000000..a7d9d04
--- /dev/null
+++ b/ext/vulkan/vkdevice.c
@@ -0,0 +1,550 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vkdevice.h"
+#include "vkutils_private.h"
+
+#include <string.h>
+
+static const char *device_validation_layers[] = {
+  "VK_LAYER_LUNARG_threading",
+  "VK_LAYER_LUNARG_mem_tracker",
+  "VK_LAYER_LUNARG_object_tracker",
+  "VK_LAYER_LUNARG_draw_state",
+  "VK_LAYER_LUNARG_param_checker",
+  "VK_LAYER_LUNARG_swapchain",
+  "VK_LAYER_LUNARG_device_limits",
+  "VK_LAYER_LUNARG_image",
+};
+
+#define GST_CAT_DEFAULT gst_vulkan_device_debug
+GST_DEBUG_CATEGORY (GST_CAT_DEFAULT);
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_CONTEXT);
+
+#define gst_vulkan_device_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstVulkanDevice, gst_vulkan_device, GST_TYPE_OBJECT,
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "vulkandevice", 0,
+        "Vulkan Device");
+    GST_DEBUG_CATEGORY_GET (GST_CAT_CONTEXT, "GST_CONTEXT"));
+
+static void gst_vulkan_device_finalize (GObject * object);
+
+struct _GstVulkanDevicePrivate
+{
+  gboolean opened;
+};
+
+GstVulkanDevice *
+gst_vulkan_device_new (GstVulkanInstance * instance)
+{
+  GstVulkanDevice *device = g_object_new (GST_TYPE_VULKAN_DEVICE, NULL);
+
+  device->instance = gst_object_ref (instance);
+  /* FIXME: select this externally */
+  device->device_index = 0;
+
+  return device;
+}
+
+static void
+gst_vulkan_device_init (GstVulkanDevice * device)
+{
+  device->priv = G_TYPE_INSTANCE_GET_PRIVATE ((device),
+      GST_TYPE_VULKAN_DEVICE, GstVulkanDevicePrivate);
+}
+
+static void
+gst_vulkan_device_class_init (GstVulkanDeviceClass * device_class)
+{
+  GObjectClass *gobject_class = (GObjectClass *) device_class;
+
+  g_type_class_add_private (device_class, sizeof (GstVulkanDevicePrivate));
+
+  gobject_class->finalize = gst_vulkan_device_finalize;
+}
+
+static void
+gst_vulkan_device_finalize (GObject * object)
+{
+  GstVulkanDevice *device = GST_VULKAN_DEVICE (object);
+
+  g_free (device->queue_family_props);
+  device->queue_family_props = NULL;
+
+  if (device->cmd_pool)
+    vkDestroyCommandPool (device->device, device->cmd_pool, NULL);
+  device->cmd_pool = VK_NULL_HANDLE;
+
+  if (device->device) {
+    vkDeviceWaitIdle (device->device);
+    vkDestroyDevice (device->device, NULL);
+  }
+  device->device = VK_NULL_HANDLE;
+
+  if (device->instance)
+    gst_object_unref (device->instance);
+  device->instance = VK_NULL_HANDLE;
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static const gchar *
+_device_type_to_string (VkPhysicalDeviceType type)
+{
+  switch (type) {
+    case VK_PHYSICAL_DEVICE_TYPE_OTHER:
+      return "other";
+    case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:
+      return "integrated";
+    case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:
+      return "discrete";
+    case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:
+      return "virtual";
+    case VK_PHYSICAL_DEVICE_TYPE_CPU:
+      return "CPU";
+    default:
+      return "unknown";
+  }
+}
+
+static gboolean
+_physical_device_info (GstVulkanDevice * device, GError ** error)
+{
+  VkPhysicalDeviceProperties props;
+  VkPhysicalDevice gpu;
+
+  gpu = gst_vulkan_device_get_physical_device (device);
+  if (!gpu) {
+    g_set_error (error, GST_VULKAN_ERROR, VK_ERROR_INITIALIZATION_FAILED,
+        "Failed to retrieve physical device");
+    return FALSE;
+  }
+
+  vkGetPhysicalDeviceProperties (gpu, &props);
+
+  GST_INFO_OBJECT (device, "device name %s type %s api version %u, "
+      "driver version %u vendor ID 0x%x, device ID 0x%x", props.deviceName,
+      _device_type_to_string (props.deviceType), props.apiVersion,
+      props.driverVersion, props.vendorID, props.deviceID);
+
+  return TRUE;
+}
+
+gboolean
+gst_vulkan_device_open (GstVulkanDevice * device, GError ** error)
+{
+  const char *extension_names[64];
+  uint32_t enabled_extension_count = 0;
+  uint32_t device_extension_count = 0;
+  VkExtensionProperties *device_extensions = NULL;
+  uint32_t enabled_layer_count = 0;
+  uint32_t device_layer_count = 0;
+  VkLayerProperties *device_layers;
+  gboolean have_swapchain_ext;
+  gboolean validation_found;
+  VkPhysicalDevice gpu;
+  VkResult err;
+  guint i;
+
+  g_return_val_if_fail (GST_IS_VULKAN_DEVICE (device), FALSE);
+
+  GST_OBJECT_LOCK (device);
+
+  if (device->priv->opened) {
+    GST_OBJECT_UNLOCK (device);
+    return TRUE;
+  }
+
+  if (!_physical_device_info (device, error))
+    goto error;
+
+  gpu = gst_vulkan_device_get_physical_device (device);
+
+  /* Look for validation layers */
+  err = vkEnumerateDeviceLayerProperties (gpu, &device_layer_count, NULL);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "vkEnumerateDeviceLayerProperties") < 0)
+    goto error;
+
+  device_layers = g_new0 (VkLayerProperties, device_layer_count);
+  err =
+      vkEnumerateDeviceLayerProperties (gpu, &device_layer_count,
+      device_layers);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "vkEnumerateDeviceLayerProperties") < 0) {
+    g_free (device_layers);
+    goto error;
+  }
+
+  validation_found =
+      _check_for_all_layers (G_N_ELEMENTS (device_validation_layers),
+      device_validation_layers, device_layer_count, device_layers);
+  g_free (device_layers);
+  device_layers = NULL;
+  if (!validation_found) {
+    g_error ("vkEnumerateDeviceLayerProperties failed to find"
+        "a required validation layer.\n\n"
+        "Please look at the Getting Started guide for additional "
+        "information.\nvkCreateDevice Failure");
+    goto error;
+  }
+  enabled_layer_count = G_N_ELEMENTS (device_validation_layers);
+
+  err =
+      vkEnumerateDeviceExtensionProperties (gpu, NULL,
+      &device_extension_count, NULL);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "vkEnumerateDeviceExtensionProperties") < 0)
+    goto error;
+  GST_DEBUG_OBJECT (device, "Found %u extensions", device_extension_count);
+
+  have_swapchain_ext = 0;
+  enabled_extension_count = 0;
+  memset (extension_names, 0, sizeof (extension_names));
+  device_extensions = g_new0 (VkExtensionProperties, device_extension_count);
+  err = vkEnumerateDeviceExtensionProperties (gpu, NULL,
+      &device_extension_count, device_extensions);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "vkEnumerateDeviceExtensionProperties") < 0) {
+    g_free (device_extensions);
+    goto error;
+  }
+
+  for (uint32_t i = 0; i < device_extension_count; i++) {
+    GST_TRACE_OBJECT (device, "checking device extension %s",
+        device_extensions[i].extensionName);
+    if (!strcmp (VK_KHR_SWAPCHAIN_EXTENSION_NAME,
+            device_extensions[i].extensionName)) {
+      have_swapchain_ext = TRUE;
+      extension_names[enabled_extension_count++] =
+          (gchar *) VK_KHR_SWAPCHAIN_EXTENSION_NAME;
+    }
+    g_assert (enabled_extension_count < 64);
+  }
+  if (!have_swapchain_ext) {
+    g_error ("vkEnumerateDeviceExtensionProperties failed to find the \""
+        VK_KHR_SWAPCHAIN_EXTENSION_NAME
+        "\" extension.\n\nDo you have a compatible "
+        "Vulkan installable client driver (ICD) installed?\nPlease "
+        "look at the Getting Started guide for additional "
+        "information.\nvkCreateInstance Failure");
+  }
+  g_free (device_extensions);
+
+  vkGetPhysicalDeviceProperties (gpu, &device->gpu_props);
+  vkGetPhysicalDeviceMemoryProperties (gpu, &device->memory_properties);
+  vkGetPhysicalDeviceFeatures (gpu, &device->gpu_features);
+
+  vkGetPhysicalDeviceQueueFamilyProperties (gpu, &device->n_queue_families,
+      NULL);
+  g_assert (device->n_queue_families >= 1);
+
+  device->queue_family_props =
+      g_new0 (VkQueueFamilyProperties, device->n_queue_families);
+  vkGetPhysicalDeviceQueueFamilyProperties (gpu, &device->n_queue_families,
+      device->queue_family_props);
+
+  /* FIXME: allow overriding/selecting */
+  for (i = 0; i < device->n_queue_families; i++) {
+    if (device->queue_family_props[i].queueFlags & VK_QUEUE_GRAPHICS_BIT)
+      break;
+  }
+  if (i >= device->n_queue_families) {
+    g_set_error (error, GST_VULKAN_ERROR, VK_ERROR_INITIALIZATION_FAILED,
+        "Failed to find a compatible queue family");
+    goto error;
+  }
+  device->queue_family_id = i;
+  device->n_queues = 1;
+
+  {
+    VkDeviceQueueCreateInfo queue_info = { 0, };
+    VkDeviceCreateInfo device_info = { 0, };
+    gfloat queue_priority = 0.5;
+
+    queue_info.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
+    queue_info.pNext = NULL;
+    queue_info.queueFamilyIndex = device->queue_family_id;
+    queue_info.queueCount = device->n_queues;
+    queue_info.pQueuePriorities = &queue_priority;
+
+    device_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
+    device_info.pNext = NULL;
+    device_info.queueCreateInfoCount = 1;
+    device_info.pQueueCreateInfos = &queue_info;
+    device_info.enabledLayerCount = enabled_layer_count;
+    device_info.ppEnabledLayerNames =
+        (const char *const *) device_validation_layers;
+    device_info.enabledExtensionCount = enabled_extension_count;
+    device_info.ppEnabledExtensionNames = (const char *const *) extension_names;
+    device_info.pEnabledFeatures = NULL;
+
+    err = vkCreateDevice (gpu, &device_info, NULL, &device->device);
+    if (gst_vulkan_error_to_g_error (err, error, "vkCreateDevice") < 0)
+      goto error;
+  }
+  {
+    VkCommandPoolCreateInfo cmd_pool_info = { 0, };
+
+    cmd_pool_info.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
+    cmd_pool_info.pNext = NULL;
+    cmd_pool_info.queueFamilyIndex = device->queue_family_id;
+    cmd_pool_info.flags = 0;
+
+    err =
+        vkCreateCommandPool (device->device, &cmd_pool_info, NULL,
+        &device->cmd_pool);
+    if (gst_vulkan_error_to_g_error (err, error, "vkCreateCommandPool") < 0)
+      goto error;
+  }
+
+  GST_OBJECT_UNLOCK (device);
+  return TRUE;
+
+error:
+  {
+    GST_OBJECT_UNLOCK (device);
+    return FALSE;
+  }
+}
+
+GstVulkanQueue *
+gst_vulkan_device_get_queue (GstVulkanDevice * device, guint32 queue_family,
+    guint32 queue_i)
+{
+  GstVulkanQueue *ret;
+
+  g_return_val_if_fail (GST_IS_VULKAN_DEVICE (device), NULL);
+  g_return_val_if_fail (device->device != NULL, NULL);
+  g_return_val_if_fail (queue_family < device->n_queues, NULL);
+  g_return_val_if_fail (queue_i <
+      device->queue_family_props[queue_family].queueCount, NULL);
+
+  ret = g_object_new (GST_TYPE_VULKAN_QUEUE, NULL);
+  ret->device = gst_object_ref (device);
+  ret->family = queue_family;
+  ret->index = queue_i;
+
+  vkGetDeviceQueue (device->device, queue_family, queue_i, &ret->queue);
+
+  return ret;
+}
+
+void
+gst_vulkan_device_foreach_queue (GstVulkanDevice * device,
+    GstVulkanDeviceForEachQueueFunc func, gpointer user_data)
+{
+  gboolean done = FALSE;
+  guint i;
+
+  for (i = 0; i < device->n_queues; i++) {
+    GstVulkanQueue *queue =
+        queue =
+        gst_vulkan_device_get_queue (device, device->queue_family_id, i);
+
+    if (!func (device, queue, user_data))
+      done = TRUE;
+
+    gst_object_unref (queue);
+
+    if (done)
+      break;
+  }
+}
+
+gpointer
+gst_vulkan_device_get_proc_address (GstVulkanDevice * device,
+    const gchar * name)
+{
+  g_return_val_if_fail (GST_IS_VULKAN_DEVICE (device), NULL);
+  g_return_val_if_fail (device->device != NULL, NULL);
+  g_return_val_if_fail (name != NULL, NULL);
+
+  GST_TRACE_OBJECT (device, "%s", name);
+
+  return vkGetDeviceProcAddr (device->device, name);
+}
+
+GstVulkanInstance *
+gst_vulkan_device_get_instance (GstVulkanDevice * device)
+{
+  g_return_val_if_fail (GST_IS_VULKAN_DEVICE (device), NULL);
+
+  return device->instance ? gst_object_ref (device->instance) : NULL;
+}
+
+VkPhysicalDevice
+gst_vulkan_device_get_physical_device (GstVulkanDevice * device)
+{
+  g_return_val_if_fail (GST_IS_VULKAN_DEVICE (device), NULL);
+
+  if (device->instance->physical_devices == NULL)
+    return NULL;
+  if (device->device_index >= device->instance->n_physical_devices)
+    return NULL;
+
+  return device->instance->physical_devices[device->device_index];
+}
+
+gboolean
+gst_vulkan_device_create_cmd_buffer (GstVulkanDevice * device,
+    VkCommandBuffer * cmd, GError ** error)
+{
+  VkResult err;
+  VkCommandBufferAllocateInfo cmd_info = { 0, };
+
+  cmd_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
+  cmd_info.pNext = NULL;
+  cmd_info.commandPool = device->cmd_pool;
+  cmd_info.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
+  cmd_info.commandBufferCount = 1;
+
+  err = vkAllocateCommandBuffers (device->device, &cmd_info, cmd);
+  if (gst_vulkan_error_to_g_error (err, error, "vkCreateCommandBuffer") < 0)
+    return FALSE;
+
+  GST_LOG_OBJECT (device, "created cmd buffer %p", cmd);
+
+  return TRUE;
+}
+
+/**
+ * gst_context_set_vulkan_device:
+ * @context: a #GstContext
+ * @device: a #GstVulkanDevice
+ *
+ * Sets @device on @context
+ *
+ * Since: 1.10
+ */
+void
+gst_context_set_vulkan_device (GstContext * context, GstVulkanDevice * device)
+{
+  GstStructure *s;
+
+  g_return_if_fail (context != NULL);
+  g_return_if_fail (gst_context_is_writable (context));
+
+  if (device)
+    GST_CAT_LOG (GST_CAT_CONTEXT,
+        "setting GstVulkanDevice(%" GST_PTR_FORMAT ") on context(%"
+        GST_PTR_FORMAT ")", device, context);
+
+  s = gst_context_writable_structure (context);
+  gst_structure_set (s, GST_VULKAN_DEVICE_CONTEXT_TYPE_STR,
+      GST_TYPE_VULKAN_DEVICE, device, NULL);
+}
+
+/**
+ * gst_context_get_vulkan_device:
+ * @context: a #GstContext
+ * @device: resulting #GstVulkanDevice
+ *
+ * Returns: Whether @device was in @context
+ *
+ * Since: 1.10
+ */
+gboolean
+gst_context_get_vulkan_device (GstContext * context, GstVulkanDevice ** device)
+{
+  const GstStructure *s;
+  gboolean ret;
+
+  g_return_val_if_fail (device != NULL, FALSE);
+  g_return_val_if_fail (context != NULL, FALSE);
+
+  s = gst_context_get_structure (context);
+  ret = gst_structure_get (s, GST_VULKAN_DEVICE_CONTEXT_TYPE_STR,
+      GST_TYPE_VULKAN_DEVICE, device, NULL);
+
+  GST_CAT_LOG (GST_CAT_CONTEXT, "got GstVulkanDevice(%" GST_PTR_FORMAT
+      ") from context(%" GST_PTR_FORMAT ")", *device, context);
+
+  return ret;
+}
+
+gboolean
+gst_vulkan_device_handle_context_query (GstElement * element, GstQuery * query,
+    GstVulkanDevice ** device)
+{
+  gboolean res = FALSE;
+  const gchar *context_type;
+  GstContext *context, *old_context;
+
+  g_return_val_if_fail (element != NULL, FALSE);
+  g_return_val_if_fail (query != NULL, FALSE);
+  g_return_val_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_CONTEXT, FALSE);
+  g_return_val_if_fail (device != NULL, FALSE);
+
+  gst_query_parse_context_type (query, &context_type);
+
+  if (g_strcmp0 (context_type, GST_VULKAN_DEVICE_CONTEXT_TYPE_STR) == 0) {
+    gst_query_parse_context (query, &old_context);
+
+    if (old_context)
+      context = gst_context_copy (old_context);
+    else
+      context = gst_context_new (GST_VULKAN_DEVICE_CONTEXT_TYPE_STR, TRUE);
+
+    gst_context_set_vulkan_device (context, *device);
+    gst_query_set_context (query, context);
+    gst_context_unref (context);
+
+    res = *device != NULL;
+  }
+
+  return res;
+}
+
+gboolean
+gst_vulkan_device_run_context_query (GstElement * element,
+    GstVulkanDevice ** device)
+{
+  GstQuery *query;
+
+  g_return_val_if_fail (GST_IS_ELEMENT (element), FALSE);
+  g_return_val_if_fail (device != NULL, FALSE);
+
+  if (*device && GST_IS_VULKAN_DEVICE (*device))
+    return TRUE;
+
+  if ((query =
+          gst_vulkan_local_context_query (element,
+              GST_VULKAN_DEVICE_CONTEXT_TYPE_STR, FALSE))) {
+    GstContext *context;
+
+    gst_query_parse_context (query, &context);
+    if (context)
+      gst_context_get_vulkan_device (context, device);
+  }
+
+  GST_DEBUG_OBJECT (element, "found device %p", *device);
+
+  gst_query_unref (query);
+
+  if (*device)
+    return TRUE;
+
+  return FALSE;
+}
diff --git a/ext/vulkan/vkdevice.h b/ext/vulkan/vkdevice.h
new file mode 100644
index 0000000..b2b1065
--- /dev/null
+++ b/ext/vulkan/vkdevice.h
@@ -0,0 +1,99 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _VK_DEVICE_H_
+#define _VK_DEVICE_H_
+
+#include <gst/gst.h>
+#include "vk.h"
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_VULKAN_DEVICE         (gst_vulkan_device_get_type())
+#define GST_VULKAN_DEVICE(o)           (G_TYPE_CHECK_INSTANCE_CAST((o), GST_TYPE_VULKAN_DEVICE, GstVulkanDevice))
+#define GST_VULKAN_DEVICE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GST_TYPE_VULKAN_DEVICE, GstVulkanDeviceClass))
+#define GST_IS_VULKAN_DEVICE(o)        (G_TYPE_CHECK_INSTANCE_TYPE((o), GST_TYPE_VULKAN_DEVICE))
+#define GST_IS_VULKAN_DEVICE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE((k), GST_TYPE_VULKAN_DEVICE))
+#define GST_VULKAN_DEVICE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), GST_TYPE_VULKAN_DEVICE, GstVulkanDeviceClass))
+GType gst_vulkan_device_get_type       (void);
+
+#define GST_VULKAN_DEVICE_CONTEXT_TYPE_STR "gst.vulkan.device"
+
+typedef gboolean (*GstVulkanDeviceForEachQueueFunc) (GstVulkanDevice * device, GstVulkanQueue * queue, gpointer user_data);
+
+struct _GstVulkanDevice
+{
+  GstObject parent;
+
+  GstVulkanInstance *instance;
+
+  guint device_index;
+  VkDevice device; /* hides a pointer */
+  VkPhysicalDeviceProperties gpu_props;
+  VkPhysicalDeviceFeatures gpu_features;
+  VkPhysicalDeviceMemoryProperties memory_properties;
+
+  VkQueueFamilyProperties *queue_family_props;
+  guint32 n_queue_families;
+
+  guint32 queue_family_id;
+  guint32 n_queues;
+
+  VkCommandPool cmd_pool;
+
+  GstVulkanDevicePrivate *priv;
+};
+
+struct _GstVulkanDeviceClass
+{
+  GstObjectClass parent_class;
+};
+
+GstVulkanDevice *   gst_vulkan_device_new                   (GstVulkanInstance * instance);
+GstVulkanInstance * gst_vulkan_device_get_instance           (GstVulkanDevice * device);
+gboolean            gst_vulkan_device_open                  (GstVulkanDevice * device,
+                                                             GError ** error);
+
+gpointer            gst_vulkan_device_get_proc_address      (GstVulkanDevice * device,
+                                                             const gchar * name);
+void                gst_vulkan_device_foreach_queue         (GstVulkanDevice * device,
+                                                             GstVulkanDeviceForEachQueueFunc func,
+                                                             gpointer user_data);
+GstVulkanQueue *    gst_vulkan_device_get_queue             (GstVulkanDevice * device,
+                                                             guint32 queue_family,
+                                                             guint32 queue_i);
+VkPhysicalDevice    gst_vulkan_device_get_physical_device   (GstVulkanDevice * device);
+gboolean            gst_vulkan_device_create_cmd_buffer     (GstVulkanDevice * device,
+                                                             VkCommandBuffer * cmd,
+                                                             GError ** error);
+
+void                gst_context_set_vulkan_device           (GstContext * context,
+                                                             GstVulkanDevice * device);
+gboolean            gst_context_get_vulkan_device           (GstContext * context,
+                                                             GstVulkanDevice ** device);
+gboolean            gst_vulkan_device_handle_context_query  (GstElement * element,
+                                                             GstQuery * query,
+                                                             GstVulkanDevice ** device);
+gboolean            gst_vulkan_device_run_context_query     (GstElement * element,
+                                                             GstVulkanDevice ** device);
+
+G_END_DECLS
+
+#endif /* _VK_DEVICE_H_ */
diff --git a/ext/vulkan/vkdisplay.c b/ext/vulkan/vkdisplay.c
new file mode 100644
index 0000000..a066821
--- /dev/null
+++ b/ext/vulkan/vkdisplay.c
@@ -0,0 +1,466 @@
+/*
+ * GStreamer
+ * Copyright (C) 2007 David A. Schleef <ds@schleef.org>
+ * Copyright (C) 2008 Julien Isorce <julien.isorce@gmail.com>
+ * Copyright (C) 2008 Filippo Argiolas <filippo.argiolas@gmail.com>
+ * Copyright (C) 2013 Matthew Waters <ystreet00@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vkdisplay.h"
+
+#if GST_VULKAN_HAVE_WINDOW_X11
+#include "x11/vkdisplay_x11.h"
+#endif
+#if GST_VULKAN_HAVE_WINDOW_XCB
+#include "xcb/vkdisplay_xcb.h"
+#endif
+
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_CONTEXT);
+#define GST_CAT_DEFAULT gst_vulkan_display_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+static void
+_init_debug (void)
+{
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "vulkandisplay", 0,
+        "Vulkan display");
+    GST_DEBUG_CATEGORY_GET (GST_CAT_CONTEXT, "GST_CONTEXT");
+    g_once_init_leave (&_init, 1);
+  }
+}
+
+G_DEFINE_TYPE_WITH_CODE (GstVulkanDisplay, gst_vulkan_display, GST_TYPE_OBJECT,
+    _init_debug ());
+
+#define GST_VULKAN_DISPLAY_GET_PRIVATE(o) \
+  (G_TYPE_INSTANCE_GET_PRIVATE((o), GST_TYPE_VULKAN_DISPLAY, GstVulkanDisplayPrivate))
+
+enum
+{
+  SIGNAL_0,
+  CREATE_CONTEXT,
+  LAST_SIGNAL
+};
+
+/* static guint gst_vulkan_display_signals[LAST_SIGNAL] = { 0 }; */
+
+static void gst_vulkan_display_finalize (GObject * object);
+static gpointer gst_vulkan_display_default_get_handle (GstVulkanDisplay *
+    display);
+static GstVulkanWindow
+    * gst_vulkan_display_default_create_window (GstVulkanDisplay * display);
+
+struct _GstVulkanDisplayPrivate
+{
+  GThread *event_thread;
+
+  GMutex thread_lock;
+  GCond thread_cond;
+};
+
+static gpointer
+_event_thread_main (GstVulkanDisplay * display)
+{
+  g_mutex_lock (&display->priv->thread_lock);
+
+  display->main_context = g_main_context_new ();
+  display->main_loop = g_main_loop_new (display->main_context, FALSE);
+
+  g_cond_broadcast (&display->priv->thread_cond);
+  g_mutex_unlock (&display->priv->thread_lock);
+
+  g_main_loop_run (display->main_loop);
+
+  g_mutex_lock (&display->priv->thread_lock);
+
+  g_main_loop_unref (display->main_loop);
+  g_main_context_unref (display->main_context);
+
+  display->main_loop = NULL;
+  display->main_context = NULL;
+
+  g_cond_broadcast (&display->priv->thread_cond);
+  g_mutex_unlock (&display->priv->thread_lock);
+
+  return NULL;
+}
+
+static void
+gst_vulkan_display_class_init (GstVulkanDisplayClass * klass)
+{
+  g_type_class_add_private (klass, sizeof (GstVulkanDisplayPrivate));
+
+  klass->get_handle = gst_vulkan_display_default_get_handle;
+  klass->create_window = gst_vulkan_display_default_create_window;
+
+  G_OBJECT_CLASS (klass)->finalize = gst_vulkan_display_finalize;
+}
+
+static void
+gst_vulkan_display_init (GstVulkanDisplay * display)
+{
+  display->priv = GST_VULKAN_DISPLAY_GET_PRIVATE (display);
+  display->type = GST_VULKAN_DISPLAY_TYPE_ANY;
+
+  g_mutex_init (&display->priv->thread_lock);
+  g_cond_init (&display->priv->thread_cond);
+
+  display->priv->event_thread = g_thread_new ("vkdisplay-event",
+      (GThreadFunc) _event_thread_main, display);
+
+  g_mutex_lock (&display->priv->thread_lock);
+  while (!display->main_loop)
+    g_cond_wait (&display->priv->thread_cond, &display->priv->thread_lock);
+  g_mutex_unlock (&display->priv->thread_lock);
+}
+
+static void
+gst_vulkan_display_finalize (GObject * object)
+{
+  GstVulkanDisplay *display = GST_VULKAN_DISPLAY (object);
+
+  g_mutex_lock (&display->priv->thread_lock);
+  if (display->main_context && display->event_source) {
+    g_source_destroy (display->event_source);
+    g_source_unref (display->event_source);
+  }
+  display->event_source = NULL;
+
+  if (display->main_loop)
+    g_main_loop_quit (display->main_loop);
+
+  while (display->main_loop)
+    g_cond_wait (&display->priv->thread_cond, &display->priv->thread_lock);
+
+  if (display->priv->event_thread)
+    g_thread_unref (display->priv->event_thread);
+  display->priv->event_thread = NULL;
+  g_mutex_unlock (&display->priv->thread_lock);
+
+  if (display->instance) {
+    gst_object_unref (display->instance);
+  }
+
+  G_OBJECT_CLASS (gst_vulkan_display_parent_class)->finalize (object);
+}
+
+GstVulkanDisplay *
+gst_vulkan_display_new_with_type (GstVulkanInstance * instance,
+    GstVulkanDisplayType type)
+{
+  GstVulkanDisplay *display = NULL;
+
+  _init_debug ();
+
+#if GST_VULKAN_HAVE_WINDOW_XCB
+  if (!display && type & GST_VULKAN_DISPLAY_TYPE_XCB) {
+    display = GST_VULKAN_DISPLAY (gst_vulkan_display_xcb_new (NULL));
+  }
+#endif
+
+  if (display)
+    display->instance = gst_object_ref (instance);
+
+  return display;
+}
+
+/**
+ * gst_vulkan_display_new:
+ *
+ * Returns: (transfer full): a new #GstVulkanDisplay
+ *
+ * Since: 1.10
+ */
+GstVulkanDisplay *
+gst_vulkan_display_new (GstVulkanInstance * instance)
+{
+  GstVulkanDisplayType type;
+  GstVulkanDisplay *display = NULL;
+
+  type = gst_vulkan_display_choose_type (instance);
+  display = gst_vulkan_display_new_with_type (instance, type);
+
+  if (!display) {
+    /* subclass returned a NULL display */
+    GST_FIXME ("creating dummy display");
+
+    display = g_object_new (GST_TYPE_VULKAN_DISPLAY, NULL);
+    display->instance = gst_object_ref (instance);
+  }
+
+  return display;
+}
+
+/**
+ * gst_vulkan_display_get_handle:
+ * @display: a #GstVulkanDisplay
+ *
+ * Returns: the winsys specific handle of @display
+ *
+ * Since: 1.10
+ */
+gpointer
+gst_vulkan_display_get_handle (GstVulkanDisplay * display)
+{
+  GstVulkanDisplayClass *klass;
+
+  g_return_val_if_fail (GST_IS_VULKAN_DISPLAY (display), NULL);
+  klass = GST_VULKAN_DISPLAY_GET_CLASS (display);
+  g_return_val_if_fail (klass->get_handle != NULL, NULL);
+
+  return klass->get_handle (display);
+}
+
+static gpointer
+gst_vulkan_display_default_get_handle (GstVulkanDisplay * display)
+{
+  return 0;
+}
+
+/**
+ * gst_vulkan_display_get_handle_type:
+ * @display: a #GstVulkanDisplay
+ *
+ * Returns: the #GstVulkanDisplayType of @display
+ *
+ * Since: 1.10
+ */
+GstVulkanDisplayType
+gst_vulkan_display_get_handle_type (GstVulkanDisplay * display)
+{
+  g_return_val_if_fail (GST_IS_VULKAN_DISPLAY (display),
+      GST_VULKAN_DISPLAY_TYPE_NONE);
+
+  return display->type;
+}
+
+/**
+ * gst_vulkan_display_create_window:
+ * @display: a #GstVulkanDisplay
+ *
+ * Returns: a new #GstVulkanWindow for @display or %NULL.
+ */
+GstVulkanWindow *
+gst_vulkan_display_create_window (GstVulkanDisplay * display)
+{
+  GstVulkanDisplayClass *klass;
+  GstVulkanWindow *window;
+
+  g_return_val_if_fail (GST_IS_VULKAN_DISPLAY (display), NULL);
+  klass = GST_VULKAN_DISPLAY_GET_CLASS (display);
+  g_return_val_if_fail (klass->create_window != NULL, NULL);
+
+  window = klass->create_window (display);
+
+  if (window) {
+    GST_OBJECT_LOCK (display);
+    display->windows = g_list_prepend (display->windows, window);
+    GST_OBJECT_UNLOCK (display);
+  }
+
+  return window;
+}
+
+static GstVulkanWindow *
+gst_vulkan_display_default_create_window (GstVulkanDisplay * display)
+{
+  return gst_vulkan_window_new (display);
+}
+
+gboolean
+gst_vulkan_display_remove_window (GstVulkanDisplay * display,
+    GstVulkanWindow * window)
+{
+  gboolean ret = FALSE;
+  GList *l;
+
+  GST_OBJECT_LOCK (display);
+  l = g_list_find (display->windows, window);
+  if (l) {
+    display->windows = g_list_delete_link (display->windows, l);
+    ret = TRUE;
+  }
+  GST_OBJECT_UNLOCK (display);
+
+  return ret;
+}
+
+/**
+ * gst_context_set_vulkan_display:
+ * @context: a #GstContext
+ * @display: a #GstVulkanDisplay
+ *
+ * Sets @display on @context
+ *
+ * Since: 1.10
+ */
+void
+gst_context_set_vulkan_display (GstContext * context,
+    GstVulkanDisplay * display)
+{
+  GstStructure *s;
+
+  g_return_if_fail (context != NULL);
+  g_return_if_fail (gst_context_is_writable (context));
+
+  if (display)
+    GST_CAT_LOG (GST_CAT_CONTEXT,
+        "setting GstVulkanDisplay(%" GST_PTR_FORMAT ") on context(%"
+        GST_PTR_FORMAT ")", display, context);
+
+  s = gst_context_writable_structure (context);
+  gst_structure_set (s, GST_VULKAN_DISPLAY_CONTEXT_TYPE_STR,
+      GST_TYPE_VULKAN_DISPLAY, display, NULL);
+}
+
+/**
+ * gst_context_get_vulkan_display:
+ * @context: a #GstContext
+ * @display: resulting #GstVulkanDisplay
+ *
+ * Returns: Whether @display was in @context
+ *
+ * Since: 1.10
+ */
+gboolean
+gst_context_get_vulkan_display (GstContext * context,
+    GstVulkanDisplay ** display)
+{
+  const GstStructure *s;
+  gboolean ret;
+
+  g_return_val_if_fail (display != NULL, FALSE);
+  g_return_val_if_fail (context != NULL, FALSE);
+
+  s = gst_context_get_structure (context);
+  ret = gst_structure_get (s, GST_VULKAN_DISPLAY_CONTEXT_TYPE_STR,
+      GST_TYPE_VULKAN_DISPLAY, display, NULL);
+
+  GST_CAT_LOG (GST_CAT_CONTEXT, "got GstVulkanDisplay(%" GST_PTR_FORMAT
+      ") from context(%" GST_PTR_FORMAT ")", *display, context);
+
+  return ret;
+}
+
+GstVulkanDisplayType
+gst_vulkan_display_choose_type (GstVulkanInstance * instance)
+{
+  const gchar *window_str;
+  GstVulkanDisplayType type = GST_VULKAN_DISPLAY_TYPE_NONE;
+  GstVulkanDisplayType first_supported = GST_VULKAN_DISPLAY_TYPE_NONE;
+
+  window_str = g_getenv ("GST_VULKAN_WINDOW");
+
+  /* FIXME: enumerate instance extensions for the supported winsys' */
+
+#define CHOOSE_WINSYS(lname,uname) \
+  G_STMT_START { \
+    if (!type && g_strcmp0 (window_str, G_STRINGIFY (lname)) == 0) { \
+      type = G_PASTE(GST_VULKAN_DISPLAY_TYPE_,uname); \
+    } \
+    if (!first_supported) \
+      first_supported = G_PASTE(GST_VULKAN_DISPLAY_TYPE_,uname); \
+  } G_STMT_END
+
+#if GST_VULKAN_HAVE_WINDOW_XCB
+  CHOOSE_WINSYS (xcb, XCB);
+#endif
+
+#undef CHOOSE_WINSYS
+
+  if (type)
+    return type;
+
+  if (first_supported)
+    return first_supported;
+
+  return GST_VULKAN_DISPLAY_TYPE_NONE;
+}
+
+const gchar *
+gst_vulkan_display_type_to_extension_string (GstVulkanDisplayType type)
+{
+  if (type == GST_VULKAN_DISPLAY_TYPE_NONE)
+    return NULL;
+
+  if (type & GST_VULKAN_DISPLAY_TYPE_XCB)
+    return VK_KHR_XCB_SURFACE_EXTENSION_NAME;
+
+  return NULL;
+}
+
+gboolean
+gst_vulkan_display_handle_context_query (GstElement * element, GstQuery * query,
+    GstVulkanDisplay ** display)
+{
+  gboolean res = FALSE;
+  const gchar *context_type;
+  GstContext *context, *old_context;
+
+  g_return_val_if_fail (element != NULL, FALSE);
+  g_return_val_if_fail (query != NULL, FALSE);
+  g_return_val_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_CONTEXT, FALSE);
+  g_return_val_if_fail (display != NULL, FALSE);
+
+  gst_query_parse_context_type (query, &context_type);
+
+  if (g_strcmp0 (context_type, GST_VULKAN_DISPLAY_CONTEXT_TYPE_STR) == 0) {
+    gst_query_parse_context (query, &old_context);
+
+    if (old_context)
+      context = gst_context_copy (old_context);
+    else
+      context = gst_context_new (GST_VULKAN_DISPLAY_CONTEXT_TYPE_STR, TRUE);
+
+    gst_context_set_vulkan_display (context, *display);
+    gst_query_set_context (query, context);
+    gst_context_unref (context);
+
+    res = *display != NULL;
+  }
+
+  return res;
+}
+
+gboolean
+gst_vulkan_display_run_context_query (GstElement * element,
+    GstVulkanDisplay ** display)
+{
+  g_return_val_if_fail (GST_IS_ELEMENT (element), FALSE);
+  g_return_val_if_fail (display != NULL, FALSE);
+
+  if (*display && GST_IS_VULKAN_DISPLAY (*display))
+    return TRUE;
+
+  gst_vulkan_global_context_query (element,
+      GST_VULKAN_DISPLAY_CONTEXT_TYPE_STR);
+
+  GST_DEBUG_OBJECT (element, "found display %p", *display);
+
+  if (*display)
+    return TRUE;
+
+  return FALSE;
+}
diff --git a/ext/vulkan/vkdisplay.h b/ext/vulkan/vkdisplay.h
new file mode 100644
index 0000000..b0bbb4f
--- /dev/null
+++ b/ext/vulkan/vkdisplay.h
@@ -0,0 +1,116 @@
+/*
+ * GStreamer
+ * Copyright (C) 2007 David A. Schleef <ds@schleef.org>
+ * Copyright (C) 2008 Julien Isorce <julien.isorce@gmail.com>
+ * Copyright (C) 2008 Filippo Argiolas <filippo.argiolas@gmail.com>
+ * Copyright (C) 2013 Matthew Waters <ystreet00@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_VULKAN_DISPLAY_H__
+#define __GST_VULKAN_DISPLAY_H__
+
+#include <gst/gst.h>
+
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_VULKAN_DISPLAY             (gst_vulkan_display_get_type())
+#define GST_VULKAN_DISPLAY(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VULKAN_DISPLAY,GstVulkanDisplay))
+#define GST_VULKAN_DISPLAY_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_VULKAN_DISPLAY,GstVulkanDisplayClass))
+#define GST_IS_VULKAN_DISPLAY(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VULKAN_DISPLAY))
+#define GST_IS_VULKAN_DISPLAY_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_VULKAN_DISPLAY))
+#define GST_VULKAN_DISPLAY_CAST(obj)        ((GstVulkanDisplay*)(obj))
+#define GST_VULKAN_DISPLAY_GET_CLASS(o)     (G_TYPE_INSTANCE_GET_CLASS((o), GST_TYPE_VULKAN_DISPLAY, GstVulkanDisplayClass))
+GType gst_vulkan_display_get_type (void);
+
+#define GST_VULKAN_DISPLAY_CONTEXT_TYPE_STR "gst.vulkan.display"
+
+enum _GstVulkanDisplayType
+{
+  GST_VULKAN_DISPLAY_TYPE_NONE = 0,
+  GST_VULKAN_DISPLAY_TYPE_X11 = (1 << 0),
+  GST_VULKAN_DISPLAY_TYPE_XCB = (1 << 1),
+  GST_VULKAN_DISPLAY_TYPE_WAYLAND = (1 << 2),
+  GST_VULKAN_DISPLAY_TYPE_MIR = (1 << 3),
+  GST_VULKAN_DISPLAY_TYPE_WIN32 = (1 << 4),
+
+  GST_VULKAN_DISPLAY_TYPE_ANY = G_MAXUINT32
+};
+
+/**
+ * GstVulkanDisplay:
+ *
+ * The contents of a #GstVulkanDisplay are private and should only be accessed
+ * through the provided API
+ */
+struct _GstVulkanDisplay
+{
+  /* <private> */
+  GstObject                 object;
+
+  GstVulkanDisplayType      type;
+
+  GstVulkanInstance        *instance;
+
+  /* <protected> */
+  GList                    *windows;        /* OBJECT lock */
+  GMainContext             *main_context;
+  GMainLoop                *main_loop;
+  GSource                  *event_source;
+
+  /* <private> */
+  GstVulkanDisplayPrivate  *priv;
+};
+
+struct _GstVulkanDisplayClass
+{
+  GstObjectClass object_class;
+
+  gpointer          (*get_handle)           (GstVulkanDisplay * display);
+  GstVulkanWindow * (*create_window)        (GstVulkanDisplay * display);
+};
+
+GstVulkanDisplay *      gst_vulkan_display_new                      (GstVulkanInstance *instance);
+GstVulkanDisplay *      gst_vulkan_display_new_with_type            (GstVulkanInstance *instance,
+                                                                     GstVulkanDisplayType type);
+GstVulkanDisplayType    gst_vulkan_display_choose_type              (GstVulkanInstance *instance);
+const gchar *           gst_vulkan_display_type_to_extension_string (GstVulkanDisplayType type);
+
+
+gpointer                gst_vulkan_display_get_handle               (GstVulkanDisplay * display);
+GstVulkanDisplayType    gst_vulkan_display_get_handle_type          (GstVulkanDisplay * display);
+GstVulkanWindow *       gst_vulkan_display_create_window            (GstVulkanDisplay * display);
+
+gboolean                gst_context_get_vulkan_display              (GstContext * context,
+                                                                     GstVulkanDisplay ** display);
+void                    gst_context_set_vulkan_display              (GstContext * context,
+                                                                     GstVulkanDisplay * display);
+gboolean                gst_vulkan_display_handle_context_query     (GstElement * element,
+                                                                     GstQuery * query,
+                                                                     GstVulkanDisplay ** display);
+gboolean                gst_vulkan_display_run_context_query        (GstElement * element,
+                                                                     GstVulkanDisplay ** display);
+
+/* GstVulkanWindow usage only */
+gboolean                gst_vulkan_display_remove_window            (GstVulkanDisplay * display, GstVulkanWindow * window);
+
+
+G_END_DECLS
+
+#endif /* __GST_VULKAN_DISPLAY_H__ */
diff --git a/ext/vulkan/vkerror.c b/ext/vulkan/vkerror.c
new file mode 100644
index 0000000..3fec27e
--- /dev/null
+++ b/ext/vulkan/vkerror.c
@@ -0,0 +1,100 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <glib/gprintf.h>
+
+#include "vkerror.h"
+
+/* *INDENT-OFF* */
+static const struct 
+{
+  VkResult result;
+  const char *str;
+} vk_result_string_map[] = {
+  {VK_ERROR_OUT_OF_HOST_MEMORY, "Out Of host memory"},
+  {VK_ERROR_OUT_OF_DEVICE_MEMORY, "Out of device memory"},
+  {VK_ERROR_INITIALIZATION_FAILED, "Initialization failed"},
+  {VK_ERROR_DEVICE_LOST, "Device lost"},
+  {VK_ERROR_MEMORY_MAP_FAILED, "Map failed"},
+  {VK_ERROR_LAYER_NOT_PRESENT, "Layer not present"},
+  {VK_ERROR_EXTENSION_NOT_PRESENT, "Extension not present"},
+  {VK_ERROR_FEATURE_NOT_PRESENT, "Feature not present"},
+  {VK_ERROR_INCOMPATIBLE_DRIVER, "Incompatible driver"},
+  {VK_ERROR_TOO_MANY_OBJECTS, "Too many objects"},
+  {VK_ERROR_FORMAT_NOT_SUPPORTED, "format not supported"},
+  {VK_ERROR_SURFACE_LOST_KHR, "Surface lost"},
+  {VK_ERROR_OUT_OF_DATE_KHR, "out of date"},
+  {VK_ERROR_INCOMPATIBLE_DISPLAY_KHR, "Incompatible display"},
+  {VK_ERROR_NATIVE_WINDOW_IN_USE_KHR, "Native window in use"},
+};
+/* *INDENT-ON* */
+
+GQuark
+gst_vulkan_error_quark (void)
+{
+  return g_quark_from_static_string ("gst-vulkan-error");
+}
+
+static const char *
+_vk_result_to_string (VkResult result)
+{
+  int i;
+
+  if (result >= 0)
+    return NULL;
+  if (result < VK_RESULT_BEGIN_RANGE)
+    return "Unknown Error";
+
+  for (i = 0; i < G_N_ELEMENTS (vk_result_string_map); i++) {
+    if (result == vk_result_string_map[i].result)
+      return vk_result_string_map[i].str;
+  }
+
+  return "Unknown Error";
+}
+
+VkResult
+gst_vulkan_error_to_g_error (VkResult result, GError ** error,
+    const char *format, ...)
+{
+  const char *result_str;
+  gchar *string;
+  va_list args;
+
+  if (error == NULL)
+    /* we don't have an error to set */
+    return result;
+
+  result_str = _vk_result_to_string (result);
+  if (result_str == NULL)
+    return result;
+
+  va_start (args, format);
+  g_vasprintf (&string, format, args);
+  va_end (args);
+
+  g_set_error (error, GST_VULKAN_ERROR, result, "%s: %s", result_str, string);
+
+  return result;
+}
diff --git a/ext/vulkan/vkerror.h b/ext/vulkan/vkerror.h
new file mode 100644
index 0000000..788e66d
--- /dev/null
+++ b/ext/vulkan/vkerror.h
@@ -0,0 +1,37 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _VK_ERROR_H_
+#define _VK_ERROR_H_
+
+#include <gst/gst.h>
+#include <vulkan/vulkan.h>
+
+G_BEGIN_DECLS
+
+#define GST_VULKAN_ERROR (gst_vulkan_error_quark ())
+GQuark gst_vulkan_error_quark (void);
+
+/* only fills error iff error != NULL and result < 0 */
+VkResult gst_vulkan_error_to_g_error (VkResult result, GError ** error, const char * format, ...) G_GNUC_PRINTF (3, 4);
+
+G_END_DECLS
+
+#endif /* _VK_INSTANCE_H_ */
diff --git a/ext/vulkan/vkimagememory.c b/ext/vulkan/vkimagememory.c
new file mode 100644
index 0000000..b1263b0
--- /dev/null
+++ b/ext/vulkan/vkimagememory.c
@@ -0,0 +1,569 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vkimagememory.h"
+
+/**
+ * SECTION:vkimagememory
+ * @short_description: memory subclass for Vulkan image memory
+ * @see_also: #GstMemory, #GstAllocator
+ *
+ * GstVulkanImageMemory is a #GstMemory subclass providing support for the
+ * mapping of Vulkan device memory.
+ */
+
+#define GST_CAT_DEFUALT GST_CAT_VULKAN_IMAGE_MEMORY
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFUALT);
+
+static GstAllocator *_vulkan_image_memory_allocator;
+
+VkFormat
+gst_vulkan_format_from_video_format (GstVideoFormat v_format, guint plane)
+{
+  guint n_plane_components;
+
+  switch (v_format) {
+    case GST_VIDEO_FORMAT_RGBx:
+    case GST_VIDEO_FORMAT_BGRx:
+    case GST_VIDEO_FORMAT_xRGB:
+    case GST_VIDEO_FORMAT_xBGR:
+    case GST_VIDEO_FORMAT_RGBA:
+    case GST_VIDEO_FORMAT_BGRA:
+    case GST_VIDEO_FORMAT_ARGB:
+    case GST_VIDEO_FORMAT_ABGR:
+    case GST_VIDEO_FORMAT_AYUV:
+      n_plane_components = 4;
+      break;
+    case GST_VIDEO_FORMAT_RGB:
+    case GST_VIDEO_FORMAT_BGR:
+      n_plane_components = 3;
+      break;
+    case GST_VIDEO_FORMAT_RGB16:
+    case GST_VIDEO_FORMAT_BGR16:
+      return GST_VIDEO_GL_TEXTURE_TYPE_RGB16;
+    case GST_VIDEO_FORMAT_GRAY16_BE:
+    case GST_VIDEO_FORMAT_GRAY16_LE:
+    case GST_VIDEO_FORMAT_YUY2:
+    case GST_VIDEO_FORMAT_UYVY:
+      n_plane_components = 2;
+      break;
+    case GST_VIDEO_FORMAT_NV12:
+    case GST_VIDEO_FORMAT_NV21:
+      n_plane_components = plane == 0 ? 1 : 2;
+      break;
+    case GST_VIDEO_FORMAT_GRAY8:
+    case GST_VIDEO_FORMAT_Y444:
+    case GST_VIDEO_FORMAT_Y42B:
+    case GST_VIDEO_FORMAT_Y41B:
+    case GST_VIDEO_FORMAT_I420:
+    case GST_VIDEO_FORMAT_YV12:
+      n_plane_components = 1;
+      break;
+    default:
+      n_plane_components = 4;
+      g_assert_not_reached ();
+      break;
+  }
+
+  switch (n_plane_components) {
+    case 4:
+      return VK_FORMAT_R8G8B8A8_UNORM;
+    case 3:
+      return VK_FORMAT_R8G8B8_UNORM;
+    case 2:
+      return VK_FORMAT_R8G8_UNORM;
+    case 1:
+      return VK_FORMAT_R8_UNORM;
+    default:
+      g_assert_not_reached ();
+      return VK_FORMAT_R8G8B8A8_UNORM;
+  }
+}
+
+static void
+_view_create_info (VkImage image, VkFormat format, VkImageViewCreateInfo * info)
+{
+  info->sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
+  info->pNext = NULL;
+  info->image = image;
+  info->format = format;
+  info->viewType = VK_IMAGE_VIEW_TYPE_2D;
+  info->flags = 0;
+
+  GST_VK_COMPONENT_MAPPING (info->components, VK_COMPONENT_SWIZZLE_R,
+      VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A);
+  GST_VK_IMAGE_SUBRESOURCE_RANGE (info->subresourceRange,
+      VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1);
+}
+
+static gboolean
+_create_info_from_args (VkImageCreateInfo * info, VkFormat format, gsize width,
+    gsize height, VkImageTiling tiling, VkImageUsageFlags usage)
+{
+  /* FIXME: validate these */
+
+  info->sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
+  info->pNext = NULL;
+  info->flags = 0;
+  info->imageType = VK_IMAGE_TYPE_2D;
+  info->format = format;
+  GST_VK_EXTENT3D (info->extent, width, height, 1);
+  info->mipLevels = 1;
+  info->arrayLayers = 1;
+  info->samples = VK_SAMPLE_COUNT_1_BIT;
+  info->tiling = tiling;
+  info->usage = usage;
+  info->sharingMode = VK_SHARING_MODE_EXCLUSIVE;
+  info->queueFamilyIndexCount = 0;
+  info->pQueueFamilyIndices = NULL;
+  info->initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
+
+  return TRUE;
+}
+
+static void
+_vk_image_mem_init (GstVulkanImageMemory * mem, GstAllocator * allocator,
+    GstMemory * parent, GstVulkanDevice * device, VkImageUsageFlags usage,
+    GstAllocationParams * params, gsize size, gpointer user_data,
+    GDestroyNotify notify)
+{
+  gsize align = gst_memory_alignment, offset = 0, maxsize = size;
+  GstMemoryFlags flags = 0;
+
+  if (params) {
+    flags = params->flags;
+    align |= params->align;
+    offset = params->prefix;
+    maxsize += params->prefix + params->padding + align;
+  }
+
+  gst_memory_init (GST_MEMORY_CAST (mem), flags, allocator, parent, maxsize,
+      align, offset, size);
+
+  mem->device = gst_object_ref (device);
+  mem->image_layout = VK_IMAGE_LAYOUT_UNDEFINED;
+  mem->usage = usage;
+  mem->wrapped = FALSE;
+  mem->notify = notify;
+  mem->user_data = user_data;
+
+  g_mutex_init (&mem->lock);
+
+  GST_CAT_DEBUG (GST_CAT_VULKAN_IMAGE_MEMORY,
+      "new Vulkan Image memory:%p size:%" G_GSIZE_FORMAT, mem, maxsize);
+}
+
+static GstVulkanImageMemory *
+_vk_image_mem_new_alloc (GstAllocator * allocator, GstMemory * parent,
+    GstVulkanDevice * device, VkFormat format, gsize width, gsize height,
+    VkImageTiling tiling, VkImageUsageFlags usage,
+    VkMemoryPropertyFlags mem_prop_flags, gpointer user_data,
+    GDestroyNotify notify)
+{
+  GstVulkanImageMemory *mem = NULL;
+  GstAllocationParams params = { 0, };
+  VkImageViewCreateInfo view_info;
+  VkImageCreateInfo image_info;
+  VkPhysicalDevice gpu;
+  GError *error = NULL;
+  guint32 type_idx;
+  VkImage image;
+  VkResult err;
+
+  gpu = gst_vulkan_device_get_physical_device (device);
+  if (!_create_info_from_args (&image_info, format, width, height, tiling,
+          usage)) {
+    GST_CAT_ERROR (GST_CAT_VULKAN_IMAGE_MEMORY, "Incorrect image parameters");
+    goto error;
+  }
+
+  err = vkCreateImage (device->device, &image_info, NULL, &image);
+  if (gst_vulkan_error_to_g_error (err, &error, "vkCreateImage") < 0)
+    goto vk_error;
+
+  mem = g_new0 (GstVulkanImageMemory, 1);
+  _vk_image_mem_init (mem, allocator, parent, device, usage, &params,
+      mem->requirements.size, user_data, notify);
+  mem->create_info = image_info;
+  mem->image = image;
+
+  vkGetImageMemoryRequirements (device->device, image, &mem->requirements);
+  err = vkGetPhysicalDeviceImageFormatProperties (gpu, format, VK_IMAGE_TYPE_2D,
+      tiling, usage, 0, &mem->format_properties);
+  if (gst_vulkan_error_to_g_error (err, &error,
+          "vkGetPhysicalDeviceImageFormatProperties") < 0)
+    goto vk_error;
+
+  if (!gst_vulkan_memory_find_memory_type_index_with_type_properties (device,
+          mem->requirements.memoryTypeBits, mem_prop_flags, &type_idx))
+    goto error;
+
+  /* XXX: assumes alignment is a power of 2 */
+  params.align = mem->requirements.alignment - 1;
+  mem->vk_mem = (GstVulkanMemory *) gst_vulkan_memory_alloc (device, type_idx,
+      &params, mem->requirements.size, mem_prop_flags);
+  if (!mem->vk_mem)
+    goto error;
+
+  err = vkBindImageMemory (device->device, image, mem->vk_mem->mem_ptr, 0);
+  if (gst_vulkan_error_to_g_error (err, &error, "vkBindImageMemory") < 0)
+    goto vk_error;
+
+  if (usage & (VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT |
+          VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT)) {
+    _view_create_info (mem->image, format, &view_info);
+    err = vkCreateImageView (device->device, &view_info, NULL, &mem->view);
+    if (gst_vulkan_error_to_g_error (err, &error, "vkCreateImageView") < 0)
+      goto vk_error;
+  }
+
+  return mem;
+
+vk_error:
+  {
+    GST_CAT_ERROR (GST_CAT_VULKAN_IMAGE_MEMORY,
+        "Failed to allocate image memory %s", error->message);
+    g_clear_error (&error);
+    goto error;
+  }
+
+error:
+  {
+    if (mem)
+      gst_memory_unref ((GstMemory *) mem);
+    return NULL;
+  }
+}
+
+static GstVulkanImageMemory *
+_vk_image_mem_new_wrapped (GstAllocator * allocator, GstMemory * parent,
+    GstVulkanDevice * device, VkImage image, VkFormat format, gsize width,
+    gsize height, VkImageTiling tiling, VkImageUsageFlags usage,
+    gpointer user_data, GDestroyNotify notify)
+{
+  GstVulkanImageMemory *mem = g_new0 (GstVulkanImageMemory, 1);
+  GstAllocationParams params = { 0, };
+  VkImageViewCreateInfo view_info;
+  VkPhysicalDevice gpu;
+  GError *error = NULL;
+  VkResult err;
+
+  gpu = gst_vulkan_device_get_physical_device (device);
+  mem->image = image;
+
+  vkGetImageMemoryRequirements (device->device, mem->image, &mem->requirements);
+
+  /* XXX: assumes alignment is a power of 2 */
+  params.align = mem->requirements.alignment - 1;
+  params.flags = GST_MEMORY_FLAG_NOT_MAPPABLE;
+  _vk_image_mem_init (mem, allocator, parent, device, usage, &params,
+      mem->requirements.size, user_data, notify);
+  mem->wrapped = TRUE;
+
+  if (!_create_info_from_args (&mem->create_info, format, width, height, tiling,
+          usage)) {
+    GST_CAT_ERROR (GST_CAT_VULKAN_IMAGE_MEMORY, "Incorrect image parameters");
+    goto error;
+  }
+
+  err = vkGetPhysicalDeviceImageFormatProperties (gpu, format, VK_IMAGE_TYPE_2D,
+      tiling, usage, 0, &mem->format_properties);
+  if (gst_vulkan_error_to_g_error (err, &error,
+          "vkGetPhysicalDeviceImageFormatProperties") < 0)
+    goto vk_error;
+
+  /* XXX: we don't actually if the image has a vkDeviceMemory bound so
+   * this may fail */
+  if (usage & (VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT |
+          VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT)) {
+    _view_create_info (mem->image, format, &view_info);
+    err = vkCreateImageView (device->device, &view_info, NULL, &mem->view);
+    if (gst_vulkan_error_to_g_error (err, &error, "vkCreateImageView") < 0)
+      goto vk_error;
+  }
+
+  return mem;
+
+vk_error:
+  {
+    GST_CAT_ERROR (GST_CAT_VULKAN_IMAGE_MEMORY,
+        "Failed to allocate image memory %s", error->message);
+    g_clear_error (&error);
+    goto error;
+  }
+
+error:
+  {
+    gst_memory_unref ((GstMemory *) mem);
+    return NULL;
+  }
+}
+
+static gpointer
+_vk_image_mem_map_full (GstVulkanImageMemory * mem, GstMapInfo * info,
+    gsize size)
+{
+  GstMapInfo *vk_map_info;
+
+  /* FIXME: possible layout transformation needed */
+  g_mutex_lock (&mem->lock);
+
+  if (!mem->vk_mem) {
+    g_mutex_unlock (&mem->lock);
+    return NULL;
+  }
+
+  vk_map_info = g_new0 (GstMapInfo, 1);
+  info->user_data[0] = vk_map_info;
+  if (!gst_memory_map ((GstMemory *) mem->vk_mem, vk_map_info, info->flags)) {
+    g_free (vk_map_info);
+    g_mutex_unlock (&mem->lock);
+    return NULL;
+  }
+  g_mutex_unlock (&mem->lock);
+
+  return vk_map_info->data;
+}
+
+static void
+_vk_image_mem_unmap_full (GstVulkanImageMemory * mem, GstMapInfo * info)
+{
+  g_mutex_lock (&mem->lock);
+  gst_memory_unmap ((GstMemory *) mem->vk_mem, info->user_data[0]);
+  g_mutex_unlock (&mem->lock);
+
+  g_free (info->user_data[0]);
+}
+
+static GstMemory *
+_vk_image_mem_copy (GstVulkanImageMemory * src, gssize offset, gssize size)
+{
+  return NULL;
+}
+
+static GstMemory *
+_vk_image_mem_share (GstVulkanImageMemory * mem, gssize offset, gssize size)
+{
+  return NULL;
+}
+
+static gboolean
+_vk_image_mem_is_span (GstVulkanImageMemory * mem1, GstVulkanImageMemory * mem2,
+    gsize * offset)
+{
+  return FALSE;
+}
+
+static GstMemory *
+_vk_image_mem_alloc (GstAllocator * allocator, gsize size,
+    GstAllocationParams * params)
+{
+  g_critical ("Subclass should override GstAllocatorClass::alloc() function");
+
+  return NULL;
+}
+
+static void
+_vk_image_mem_free (GstAllocator * allocator, GstMemory * memory)
+{
+  GstVulkanImageMemory *mem = (GstVulkanImageMemory *) memory;
+
+  GST_CAT_TRACE (GST_CAT_VULKAN_IMAGE_MEMORY, "freeing image memory:%p "
+      "id:%" G_GUINT64_FORMAT, mem, (guint64) mem->image);
+
+  if (mem->image && !mem->wrapped)
+    vkDestroyImage (mem->device->device, mem->image, NULL);
+
+  if (mem->view)
+    vkDestroyImageView (mem->device->device, mem->view, NULL);
+
+  if (mem->vk_mem)
+    gst_memory_unref ((GstMemory *) mem->vk_mem);
+
+  if (mem->notify)
+    mem->notify (mem->user_data);
+
+  gst_object_unref (mem->device);
+
+  g_free (mem);
+}
+
+static VkAccessFlags
+_access_flags_from_layout (VkImageLayout image_layout)
+{
+  if (image_layout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL)
+    return VK_ACCESS_TRANSFER_WRITE_BIT;
+
+  if (image_layout == VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL)
+    return VK_ACCESS_TRANSFER_READ_BIT;
+
+  if (image_layout == VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL)
+    return VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
+
+  if (image_layout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL)
+    return VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
+
+  if (image_layout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL)
+    return VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_INPUT_ATTACHMENT_READ_BIT;
+
+  return 0;
+}
+
+gboolean
+gst_vulkan_image_memory_set_layout (GstVulkanImageMemory * vk_mem,
+    VkImageLayout image_layout, VkImageMemoryBarrier * barrier)
+{
+  /* validate vk_mem->usage with image_layout */
+
+  barrier->sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
+  barrier->pNext = NULL;
+  barrier->dstAccessMask = _access_flags_from_layout (image_layout);
+  barrier->srcAccessMask = _access_flags_from_layout (vk_mem->image_layout);
+  barrier->oldLayout = vk_mem->image_layout;
+  barrier->newLayout = image_layout;
+  barrier->image = vk_mem->image;
+  GST_VK_IMAGE_SUBRESOURCE_RANGE (barrier->subresourceRange,
+      VK_IMAGE_ASPECT_COLOR_BIT, 0, 1, 0, 1);
+
+  /* FIXME: what if the barrier is never submitted or is submitted out of order? */
+  vk_mem->image_layout = image_layout;
+
+  return TRUE;
+}
+
+/**
+ * gst_vulkan_image_memory_alloc:
+ *
+ * Allocated a new #GstVulkanImageMemory.
+ *
+ * Returns: a #GstMemory object backed by a vulkan device memory
+ */
+GstMemory *
+gst_vulkan_image_memory_alloc (GstVulkanDevice * device, VkFormat format,
+    gsize width, gsize height, VkImageTiling tiling, VkImageUsageFlags usage,
+    VkMemoryPropertyFlags mem_prop_flags)
+{
+  GstVulkanImageMemory *mem;
+
+  mem = _vk_image_mem_new_alloc (_vulkan_image_memory_allocator, NULL, device,
+      format, width, height, tiling, usage, mem_prop_flags, NULL, NULL);
+
+  return (GstMemory *) mem;
+}
+
+GstMemory *
+gst_vulkan_image_memory_wrapped (GstVulkanDevice * device, VkImage image,
+    VkFormat format, gsize width, gsize height, VkImageTiling tiling,
+    VkImageUsageFlags usage, gpointer user_data, GDestroyNotify notify)
+{
+  GstVulkanImageMemory *mem;
+
+  mem = _vk_image_mem_new_wrapped (_vulkan_image_memory_allocator, NULL, device,
+      image, format, width, height, tiling, usage, user_data, notify);
+
+  return (GstMemory *) mem;
+}
+
+guint32
+gst_vulkan_image_memory_get_width (GstVulkanImageMemory * image)
+{
+  g_return_val_if_fail (gst_is_vulkan_image_memory (GST_MEMORY_CAST (image)),
+      0);
+
+  return image->create_info.extent.width;
+}
+
+guint32
+gst_vulkan_image_memory_get_height (GstVulkanImageMemory * image)
+{
+  g_return_val_if_fail (gst_is_vulkan_image_memory (GST_MEMORY_CAST (image)),
+      0);
+
+  return image->create_info.extent.height;
+}
+
+G_DEFINE_TYPE (GstVulkanImageMemoryAllocator, gst_vulkan_image_memory_allocator,
+    GST_TYPE_ALLOCATOR);
+
+static void
+gst_vulkan_image_memory_allocator_class_init (GstVulkanImageMemoryAllocatorClass
+    * klass)
+{
+  GstAllocatorClass *allocator_class = (GstAllocatorClass *) klass;
+
+  allocator_class->alloc = _vk_image_mem_alloc;
+  allocator_class->free = _vk_image_mem_free;
+}
+
+static void
+gst_vulkan_image_memory_allocator_init (GstVulkanImageMemoryAllocator *
+    allocator)
+{
+  GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator);
+
+  alloc->mem_type = GST_VULKAN_IMAGE_MEMORY_ALLOCATOR_NAME;
+  alloc->mem_map_full = (GstMemoryMapFullFunction) _vk_image_mem_map_full;
+  alloc->mem_unmap_full = (GstMemoryUnmapFullFunction) _vk_image_mem_unmap_full;
+  alloc->mem_copy = (GstMemoryCopyFunction) _vk_image_mem_copy;
+  alloc->mem_share = (GstMemoryShareFunction) _vk_image_mem_share;
+  alloc->mem_is_span = (GstMemoryIsSpanFunction) _vk_image_mem_is_span;
+}
+
+/**
+ * gst_vulkan_image_memory_init_once:
+ *
+ * Initializes the Vulkan memory allocator. It is safe to call this function
+ * multiple times.  This must be called before any other #GstVulkanImageMemory operation.
+ */
+void
+gst_vulkan_image_memory_init_once (void)
+{
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_VULKAN_IMAGE_MEMORY, "vulkanimagememory",
+        0, "Vulkan Image Memory");
+
+    _vulkan_image_memory_allocator =
+        g_object_new (gst_vulkan_image_memory_allocator_get_type (), NULL);
+
+    gst_allocator_register (GST_VULKAN_IMAGE_MEMORY_ALLOCATOR_NAME,
+        gst_object_ref (_vulkan_image_memory_allocator));
+    g_once_init_leave (&_init, 1);
+  }
+}
+
+/**
+ * gst_is_vulkan_image_memory:
+ * @mem:a #GstMemory
+ * 
+ * Returns: whether the memory at @mem is a #GstVulkanImageMemory
+ */
+gboolean
+gst_is_vulkan_image_memory (GstMemory * mem)
+{
+  return mem != NULL && mem->allocator != NULL &&
+      g_type_is_a (G_OBJECT_TYPE (mem->allocator),
+      GST_TYPE_VULKAN_IMAGE_MEMORY_ALLOCATOR);
+}
diff --git a/ext/vulkan/vkimagememory.h b/ext/vulkan/vkimagememory.h
new file mode 100644
index 0000000..aa6cad6
--- /dev/null
+++ b/ext/vulkan/vkimagememory.h
@@ -0,0 +1,122 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _VK_IMAGE_MEMORY_H_
+#define _VK_IMAGE_MEMORY_H_
+
+#include <gst/gst.h>
+#include <gst/gstallocator.h>
+#include <gst/gstmemory.h>
+
+#include <gst/video/video.h>
+
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_VULKAN_IMAGE_MEMORY_ALLOCATOR (gst_vulkan_image_memory_allocator_get_type())
+GType gst_vulkan_image_memory_allocator_get_type(void);
+
+#define GST_IS_VULKAN_IMAGE_MEMORY_ALLOCATOR(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_VULKAN_IMAGE_MEMORY_ALLOCATOR))
+#define GST_IS_VULKAN_IMAGE_MEMORY_ALLOCATOR_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_VULKAN_IMAGE_MEMORY_ALLOCATOR))
+#define GST_VULKAN_IMAGE_MEMORY_ALLOCATOR_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_VULKAN_MEMORY_ALLOCATOR, GstVulkanImageMemoryAllocatorClass))
+#define GST_VULKAN_IMAGE_MEMORY_ALLOCATOR(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_VULKAN_MEMORY_ALLOCATOR, GstVulkanImageMemoryAllocator))
+#define GST_VULKAN_IMAGE_MEMORY_ALLOCATOR_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_VULKAN_MEMORY_ALLOCATOR, GstVulkanImageMemoryAllocatorClass))
+#define GST_VULKAN_IMAGE_MEMORY_ALLOCATOR_CAST(obj)            ((GstVulkanImageMemoryAllocator *)(obj))
+
+#define GST_VULKAN_IMAGE_MEMORY_ALLOCATOR_NAME "VulkanImage"
+#define GST_CAPS_FEATURE_MEMORY_VULKAN_IMAGE "memory:" GST_VULKAN_IMAGE_MEMORY_ALLOCATOR_NAME
+
+struct _GstVulkanImageMemory
+{
+  GstMemory parent;
+
+  GstVulkanDevice * device;
+
+  VkImage image;
+  VkImageLayout image_layout;
+  VkImageView view;
+  GstVulkanMemory *vk_mem;
+
+  VkImageCreateInfo create_info;
+  VkMemoryRequirements requirements;
+  VkImageFormatProperties format_properties;
+  VkImageUsageFlags usage;
+
+  GMutex lock;
+  gboolean wrapped;
+  GDestroyNotify notify;
+  gpointer user_data;
+};
+
+/**
+ * GstVulkanImageMemoryAllocator
+ *
+ * Opaque #GstVulkanImageMemoryAllocator struct
+ */
+struct _GstVulkanImageMemoryAllocator
+{
+  GstAllocator parent;
+};
+
+/**
+ * GstVulkanImageMemoryAllocatorClass:
+ *
+ * The #GstVulkanImageMemoryAllocatorClass only contains private data
+ */
+struct _GstVulkanImageMemoryAllocatorClass
+{
+  GstAllocatorClass parent_class;
+};
+
+void            gst_vulkan_image_memory_init_once       (void);
+gboolean        gst_is_vulkan_image_memory              (GstMemory * mem);
+
+GstMemory *     gst_vulkan_image_memory_alloc           (GstVulkanDevice * device,
+                                                         VkFormat format,
+                                                         gsize width,
+                                                         gsize height,
+                                                         VkImageTiling tiling,
+                                                         VkImageUsageFlags usage,
+                                                         VkMemoryPropertyFlags mem_prop_flags);
+
+GstMemory *     gst_vulkan_image_memory_wrapped         (GstVulkanDevice * device,
+                                                         VkImage image,
+                                                         VkFormat format,
+                                                         gsize width,
+                                                         gsize height,
+                                                         VkImageTiling tiling,
+                                                         VkImageUsageFlags usage,
+                                                         gpointer user_data,
+                                                         GDestroyNotify notify);
+
+gboolean        gst_vulkan_image_memory_set_layout      (GstVulkanImageMemory * vk_mem,
+                                                         VkImageLayout,
+                                                         VkImageMemoryBarrier * barrier);
+
+guint32         gst_vulkan_image_memory_get_width       (GstVulkanImageMemory * image);
+guint32         gst_vulkan_image_memory_get_height      (GstVulkanImageMemory * image);
+
+VkFormat gst_vulkan_format_from_video_format (GstVideoFormat v_format,
+                                              guint plane);
+
+G_END_DECLS
+
+#endif /* _VK_IMAGE_MEMORY_H_ */
diff --git a/ext/vulkan/vkinstance.c b/ext/vulkan/vkinstance.c
new file mode 100644
index 0000000..28c4e78
--- /dev/null
+++ b/ext/vulkan/vkinstance.c
@@ -0,0 +1,542 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vkinstance.h"
+#include "vkutils_private.h"
+
+#include <string.h>
+
+#define APP_SHORT_NAME "GStreamer"
+
+static const char *instance_validation_layers[] = {
+  "VK_LAYER_LUNARG_threading",
+  "VK_LAYER_LUNARG_mem_tracker",
+  "VK_LAYER_LUNARG_object_tracker",
+  "VK_LAYER_LUNARG_draw_state",
+  "VK_LAYER_LUNARG_param_checker",
+  "VK_LAYER_LUNARG_swapchain",
+  "VK_LAYER_LUNARG_device_limits",
+  "VK_LAYER_LUNARG_image",
+};
+
+#define GST_CAT_DEFAULT gst_vulkan_instance_debug
+GST_DEBUG_CATEGORY (GST_CAT_DEFAULT);
+GST_DEBUG_CATEGORY (GST_VULKAN_DEBUG_CAT);
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_CONTEXT);
+
+enum
+{
+  SIGNAL_0,
+  SIGNAL_CREATE_DEVICE,
+  LAST_SIGNAL
+};
+
+static guint gst_vulkan_instance_signals[LAST_SIGNAL] = { 0 };
+
+#define gst_vulkan_instance_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstVulkanInstance, gst_vulkan_instance,
+    GST_TYPE_OBJECT, GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT,
+        "vulkaninstance", 0, "Vulkan Instance");
+    GST_DEBUG_CATEGORY_INIT (GST_VULKAN_DEBUG_CAT,
+        "vulkandebug", 0, "Vulkan Debug");
+    GST_DEBUG_CATEGORY_GET (GST_CAT_CONTEXT, "GST_CONTEXT"));
+
+static void gst_vulkan_instance_finalize (GObject * object);
+
+struct _GstVulkanInstancePrivate
+{
+  gboolean opened;
+};
+
+GstVulkanInstance *
+gst_vulkan_instance_new (void)
+{
+  return g_object_new (GST_TYPE_VULKAN_INSTANCE, NULL);
+}
+
+static void
+gst_vulkan_instance_init (GstVulkanInstance * instance)
+{
+  instance->priv = G_TYPE_INSTANCE_GET_PRIVATE ((instance),
+      GST_TYPE_VULKAN_INSTANCE, GstVulkanInstancePrivate);
+}
+
+static void
+gst_vulkan_instance_class_init (GstVulkanInstanceClass * klass)
+{
+  gst_vulkan_memory_init_once ();
+  gst_vulkan_image_memory_init_once ();
+  gst_vulkan_buffer_memory_init_once ();
+
+  g_type_class_add_private (klass, sizeof (GstVulkanInstancePrivate));
+
+  /**
+   * GstVulkanInstance::create-device:
+   * @object: the #GstVulkanDisplay
+   *
+   * Overrides the #GstVulkanDevice creation mechanism.
+   * It can be called from any thread.
+   *
+   * Returns: the newly created #GstVulkanDevice.
+   */
+  gst_vulkan_instance_signals[SIGNAL_CREATE_DEVICE] =
+      g_signal_new ("create-device", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_generic,
+      GST_TYPE_VULKAN_DEVICE, 0);
+
+  G_OBJECT_CLASS (klass)->finalize = gst_vulkan_instance_finalize;
+}
+
+static void
+gst_vulkan_instance_finalize (GObject * object)
+{
+  GstVulkanInstance *instance = GST_VULKAN_INSTANCE (object);
+
+  if (instance->priv->opened) {
+    if (instance->dbgDestroyDebugReportCallback)
+      instance->dbgDestroyDebugReportCallback (instance->instance,
+          instance->msg_callback, NULL);
+
+    g_free (instance->physical_devices);
+  }
+  instance->priv->opened = FALSE;
+
+  if (instance->instance)
+    vkDestroyInstance (instance->instance, NULL);
+  instance->instance = NULL;
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static VkBool32
+_gst_vk_debug_callback (VkDebugReportFlagsEXT msgFlags,
+    VkDebugReportObjectTypeEXT objType, uint64_t srcObject, size_t location,
+    int32_t msgCode, const char *pLayerPrefix, const char *pMsg,
+    void *pUserData)
+{
+  if (msgFlags & VK_DEBUG_REPORT_ERROR_BIT_EXT) {
+    GST_CAT_ERROR (GST_VULKAN_DEBUG_CAT, "[%s] Code %d : %s", pLayerPrefix,
+        msgCode, pMsg);
+  } else if (msgFlags & VK_DEBUG_REPORT_WARNING_BIT_EXT) {
+    GST_CAT_WARNING (GST_VULKAN_DEBUG_CAT, "[%s] Code %d : %s", pLayerPrefix,
+        msgCode, pMsg);
+  } else if (msgFlags & VK_DEBUG_REPORT_INFORMATION_BIT_EXT) {
+    GST_CAT_LOG (GST_VULKAN_DEBUG_CAT, "[%s] Code %d : %s", pLayerPrefix,
+        msgCode, pMsg);
+  } else if (msgFlags & VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT) {
+    GST_CAT_FIXME (GST_VULKAN_DEBUG_CAT, "[%s] Code %d : %s", pLayerPrefix,
+        msgCode, pMsg);
+  } else if (msgFlags & VK_DEBUG_REPORT_DEBUG_BIT_EXT) {
+    GST_CAT_TRACE (GST_VULKAN_DEBUG_CAT, "[%s] Code %d : %s", pLayerPrefix,
+        msgCode, pMsg);
+  } else {
+    return FALSE;
+  }
+
+  /*
+   * false indicates that layer should not bail-out of an
+   * API call that had validation failures. This may mean that the
+   * app dies inside the driver due to invalid parameter(s).
+   * That's what would happen without validation layers, so we'll
+   * keep that behavior here.
+   */
+  return FALSE;
+}
+
+gboolean
+gst_vulkan_instance_open (GstVulkanInstance * instance, GError ** error)
+{
+  VkExtensionProperties *instance_extensions;
+  char *extension_names[64];    /* FIXME: make dynamic */
+  VkLayerProperties *instance_layers;
+  uint32_t instance_extension_count = 0;
+  uint32_t enabled_extension_count = 0;
+  uint32_t instance_layer_count = 0;
+  uint32_t enabled_layer_count = 0;
+  gboolean validation_found;
+  VkResult err;
+
+  GST_OBJECT_LOCK (instance);
+  if (instance->priv->opened) {
+    GST_OBJECT_UNLOCK (instance);
+    return TRUE;
+  }
+
+  /* Look for validation layers */
+  err = vkEnumerateInstanceLayerProperties (&instance_layer_count, NULL);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "vKEnumerateInstanceLayerProperties") < 0)
+    goto error;
+
+  instance_layers = g_new0 (VkLayerProperties, instance_layer_count);
+  err =
+      vkEnumerateInstanceLayerProperties (&instance_layer_count,
+      instance_layers);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "vKEnumerateInstanceLayerProperties") < 0) {
+    g_free (instance_layers);
+    goto error;
+  }
+
+  /* TODO: allow outside selection */
+  validation_found =
+      _check_for_all_layers (G_N_ELEMENTS (instance_validation_layers),
+      instance_validation_layers, instance_layer_count, instance_layers);
+  if (!validation_found) {
+    g_error ("vkEnumerateInstanceLayerProperties failed to find"
+        "required validation layer.\n\n"
+        "Please look at the Getting Started guide for additional "
+        "information.\nvkCreateInstance Failure");
+  }
+  enabled_layer_count = G_N_ELEMENTS (instance_validation_layers);
+
+  err =
+      vkEnumerateInstanceExtensionProperties (NULL, &instance_extension_count,
+      NULL);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "vkEnumerateInstanceExtensionProperties") < 0) {
+    g_free (instance_layers);
+    goto error;
+  }
+  GST_DEBUG_OBJECT (instance, "Found %u extensions", instance_extension_count);
+
+  memset (extension_names, 0, sizeof (extension_names));
+  instance_extensions =
+      g_new0 (VkExtensionProperties, instance_extension_count);
+  err =
+      vkEnumerateInstanceExtensionProperties (NULL, &instance_extension_count,
+      instance_extensions);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "vkEnumerateInstanceExtensionProperties") < 0) {
+    g_free (instance_layers);
+    g_free (instance_extensions);
+    goto error;
+  }
+
+  {
+    GstVulkanDisplayType display_type;
+    gboolean swapchain_ext_found = FALSE;
+    gboolean winsys_ext_found = FALSE;
+    const gchar *winsys_ext_name;
+
+    display_type = gst_vulkan_display_choose_type (instance);
+
+    winsys_ext_name =
+        gst_vulkan_display_type_to_extension_string (display_type);
+    if (!winsys_ext_name) {
+      GST_WARNING_OBJECT (instance, "No window system extension enabled");
+      winsys_ext_found = TRUE;  /* Don't error out completely */
+    }
+
+    /* TODO: allow outside selection */
+    for (uint32_t i = 0; i < instance_extension_count; i++) {
+      GST_TRACE_OBJECT (instance, "checking instance extension %s",
+          instance_extensions[i].extensionName);
+
+      if (!g_strcmp0 (VK_KHR_SURFACE_EXTENSION_NAME,
+              instance_extensions[i].extensionName)) {
+        swapchain_ext_found = TRUE;
+        extension_names[enabled_extension_count++] =
+            (gchar *) VK_KHR_SURFACE_EXTENSION_NAME;
+      }
+      if (!g_strcmp0 (VK_EXT_DEBUG_REPORT_EXTENSION_NAME,
+              instance_extensions[i].extensionName)) {
+        extension_names[enabled_extension_count++] =
+            (gchar *) VK_EXT_DEBUG_REPORT_EXTENSION_NAME;
+      }
+      if (!g_strcmp0 (winsys_ext_name, instance_extensions[i].extensionName)) {
+        winsys_ext_found = TRUE;
+        extension_names[enabled_extension_count++] = (gchar *) winsys_ext_name;
+      }
+      g_assert (enabled_extension_count < 64);
+    }
+    if (!swapchain_ext_found) {
+      g_set_error (error, GST_VULKAN_ERROR, VK_ERROR_INITIALIZATION_FAILED,
+          "vkEnumerateInstanceExtensionProperties failed to find the required "
+          "\"" VK_KHR_SURFACE_EXTENSION_NAME "\" extension");
+      g_free (instance_layers);
+      g_free (instance_extensions);
+      goto error;
+    }
+    if (!winsys_ext_found) {
+      g_set_error (error, GST_VULKAN_ERROR, VK_ERROR_INITIALIZATION_FAILED,
+          "vkEnumerateInstanceExtensionProperties failed to find the required "
+          "\"%s\" window system extension", winsys_ext_name);
+      g_free (instance_layers);
+      g_free (instance_extensions);
+      goto error;
+    }
+  }
+
+  {
+    VkApplicationInfo app = { 0, };
+    VkInstanceCreateInfo inst_info = { 0, };
+
+    app.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
+    app.pNext = NULL;
+    app.pApplicationName = APP_SHORT_NAME;
+    app.applicationVersion = 0;
+    app.pEngineName = APP_SHORT_NAME;
+    app.engineVersion = 0;
+    app.apiVersion = VK_API_VERSION;
+
+    inst_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
+    inst_info.pNext = NULL;
+    inst_info.pApplicationInfo = &app;
+    inst_info.enabledLayerCount = enabled_layer_count;
+    inst_info.ppEnabledLayerNames =
+        (const char *const *) instance_validation_layers;
+    inst_info.enabledExtensionCount = enabled_extension_count;
+    inst_info.ppEnabledExtensionNames = (const char *const *) extension_names;
+
+    err = vkCreateInstance (&inst_info, NULL, &instance->instance);
+    if (gst_vulkan_error_to_g_error (err, error, "vkCreateInstance") < 0) {
+      g_free (instance_layers);
+      g_free (instance_extensions);
+      goto error;
+    }
+  }
+
+  g_free (instance_layers);
+  g_free (instance_extensions);
+
+  err =
+      vkEnumeratePhysicalDevices (instance->instance,
+      &instance->n_physical_devices, NULL);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "vkEnumeratePhysicalDevices") < 0)
+    goto error;
+  g_assert (instance->n_physical_devices > 0);
+  instance->physical_devices =
+      g_new0 (VkPhysicalDevice, instance->n_physical_devices);
+  err =
+      vkEnumeratePhysicalDevices (instance->instance,
+      &instance->n_physical_devices, instance->physical_devices);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "vkEnumeratePhysicalDevices") < 0)
+    goto error;
+
+  instance->dbgCreateDebugReportCallback = (PFN_vkCreateDebugReportCallbackEXT)
+      gst_vulkan_instance_get_proc_address (instance,
+      "vkCreateDebugReportCallbackEXT");
+  if (!instance->dbgCreateDebugReportCallback) {
+    g_set_error (error, GST_VULKAN_ERROR, VK_ERROR_INITIALIZATION_FAILED,
+        "Failed to retreive vkCreateDebugReportCallback");
+    goto error;
+  }
+  instance->dbgDestroyDebugReportCallback =
+      (PFN_vkDestroyDebugReportCallbackEXT)
+      gst_vulkan_instance_get_proc_address (instance,
+      "vkDestroyDebugReportCallbackEXT");
+  if (!instance->dbgDestroyDebugReportCallback) {
+    g_set_error (error, GST_VULKAN_ERROR, VK_ERROR_INITIALIZATION_FAILED,
+        "Failed to retreive vkDestroyDebugReportCallback");
+    goto error;
+  }
+  instance->dbgReportMessage = (PFN_vkDebugReportMessageEXT)
+      gst_vulkan_instance_get_proc_address (instance,
+      "vkDebugReportMessageEXT");
+  if (!instance->dbgReportMessage) {
+    g_set_error (error, GST_VULKAN_ERROR, VK_ERROR_INITIALIZATION_FAILED,
+        "Failed to retreive vkDebugReportMessage");
+    goto error;
+  }
+
+  {
+    VkDebugReportCallbackCreateInfoEXT info = { 0, };
+
+    info.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT;
+    info.pNext = NULL;
+    info.flags =
+        VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT |
+        VK_DEBUG_REPORT_INFORMATION_BIT_EXT | VK_DEBUG_REPORT_DEBUG_BIT_EXT |
+        VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT;
+    info.pfnCallback = (PFN_vkDebugReportCallbackEXT) _gst_vk_debug_callback;
+    info.pUserData = NULL;
+
+    err =
+        instance->dbgCreateDebugReportCallback (instance->instance, &info, NULL,
+        &instance->msg_callback);
+    if (gst_vulkan_error_to_g_error (err, error,
+            "vkCreateDebugReportCallback") < 0)
+      goto error;
+  }
+
+  instance->priv->opened = TRUE;
+  GST_OBJECT_UNLOCK (instance);
+
+  return TRUE;
+
+error:
+  {
+    GST_OBJECT_UNLOCK (instance);
+    return FALSE;
+  }
+}
+
+gpointer
+gst_vulkan_instance_get_proc_address (GstVulkanInstance * instance,
+    const gchar * name)
+{
+  g_return_val_if_fail (GST_IS_VULKAN_INSTANCE (instance), NULL);
+  g_return_val_if_fail (instance->instance != NULL, NULL);
+  g_return_val_if_fail (name != NULL, NULL);
+
+  GST_TRACE_OBJECT (instance, "%s", name);
+
+  return vkGetInstanceProcAddr (instance->instance, name);
+}
+
+GstVulkanDevice *
+gst_vulkan_instance_create_device (GstVulkanInstance * instance,
+    GError ** error)
+{
+  GstVulkanDevice *device;
+
+  g_return_val_if_fail (GST_IS_VULKAN_INSTANCE (instance), NULL);
+
+  g_signal_emit (instance, gst_vulkan_instance_signals[SIGNAL_CREATE_DEVICE], 0,
+      &device);
+
+  if (!device)
+    device = gst_vulkan_device_new (instance);
+
+  if (!gst_vulkan_device_open (device, error)) {
+    gst_object_unref (device);
+    device = NULL;
+  }
+
+  return device;
+}
+
+/**
+ * gst_context_set_vulkan_instance:
+ * @context: a #GstContext
+ * @instance: a #GstVulkanInstance
+ *
+ * Sets @instance on @context
+ *
+ * Since: 1.10
+ */
+void
+gst_context_set_vulkan_instance (GstContext * context,
+    GstVulkanInstance * instance)
+{
+  GstStructure *s;
+
+  g_return_if_fail (context != NULL);
+  g_return_if_fail (gst_context_is_writable (context));
+
+  if (instance)
+    GST_CAT_LOG (GST_CAT_CONTEXT,
+        "setting GstVulkanInstance(%" GST_PTR_FORMAT ") on context(%"
+        GST_PTR_FORMAT ")", instance, context);
+
+  s = gst_context_writable_structure (context);
+  gst_structure_set (s, GST_VULKAN_INSTANCE_CONTEXT_TYPE_STR,
+      GST_TYPE_VULKAN_INSTANCE, instance, NULL);
+}
+
+/**
+ * gst_context_get_vulkan_instance:
+ * @context: a #GstContext
+ * @instance: resulting #GstVulkanInstance
+ *
+ * Returns: Whether @instance was in @context
+ *
+ * Since: 1.10
+ */
+gboolean
+gst_context_get_vulkan_instance (GstContext * context,
+    GstVulkanInstance ** instance)
+{
+  const GstStructure *s;
+  gboolean ret;
+
+  g_return_val_if_fail (instance != NULL, FALSE);
+  g_return_val_if_fail (context != NULL, FALSE);
+
+  s = gst_context_get_structure (context);
+  ret = gst_structure_get (s, GST_VULKAN_INSTANCE_CONTEXT_TYPE_STR,
+      GST_TYPE_VULKAN_INSTANCE, instance, NULL);
+
+  GST_CAT_LOG (GST_CAT_CONTEXT, "got GstVulkanInstance(%" GST_PTR_FORMAT
+      ") from context(%" GST_PTR_FORMAT ")", *instance, context);
+
+  return ret;
+}
+
+gboolean
+gst_vulkan_instance_handle_context_query (GstElement * element,
+    GstQuery * query, GstVulkanInstance ** instance)
+{
+  gboolean res = FALSE;
+  const gchar *context_type;
+  GstContext *context, *old_context;
+
+  g_return_val_if_fail (element != NULL, FALSE);
+  g_return_val_if_fail (query != NULL, FALSE);
+  g_return_val_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_CONTEXT, FALSE);
+  g_return_val_if_fail (instance != NULL, FALSE);
+
+  gst_query_parse_context_type (query, &context_type);
+
+  if (g_strcmp0 (context_type, GST_VULKAN_INSTANCE_CONTEXT_TYPE_STR) == 0) {
+    gst_query_parse_context (query, &old_context);
+
+    if (old_context)
+      context = gst_context_copy (old_context);
+    else
+      context = gst_context_new (GST_VULKAN_INSTANCE_CONTEXT_TYPE_STR, TRUE);
+
+    gst_context_set_vulkan_instance (context, *instance);
+    gst_query_set_context (query, context);
+    gst_context_unref (context);
+
+    res = *instance != NULL;
+  }
+
+  return res;
+}
+
+gboolean
+gst_vulkan_instance_run_context_query (GstElement * element,
+    GstVulkanInstance ** instance)
+{
+  g_return_val_if_fail (GST_IS_ELEMENT (element), FALSE);
+  g_return_val_if_fail (instance != NULL, FALSE);
+
+  if (*instance && GST_IS_VULKAN_INSTANCE (*instance))
+    return TRUE;
+
+  gst_vulkan_global_context_query (element,
+      GST_VULKAN_INSTANCE_CONTEXT_TYPE_STR);
+
+  GST_DEBUG_OBJECT (element, "found instance %p", *instance);
+
+  if (*instance)
+    return TRUE;
+
+  return FALSE;
+}
diff --git a/ext/vulkan/vkinstance.h b/ext/vulkan/vkinstance.h
new file mode 100644
index 0000000..e7d8e49
--- /dev/null
+++ b/ext/vulkan/vkinstance.h
@@ -0,0 +1,81 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _VK_INSTANCE_H_
+#define _VK_INSTANCE_H_
+
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_VULKAN_INSTANCE         (gst_vulkan_instance_get_type())
+#define GST_VULKAN_INSTANCE(o)           (G_TYPE_CHECK_INSTANCE_CAST((o), GST_TYPE_VULKAN_INSTANCE, GstVulkanInstance))
+#define GST_VULKAN_INSTANCE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GST_TYPE_VULKAN_INSTANCE, GstVulkanInstanceClass))
+#define GST_IS_VULKAN_INSTANCE(o)        (G_TYPE_CHECK_INSTANCE_TYPE((o), GST_TYPE_VULKAN_INSTANCE))
+#define GST_IS_VULKAN_INSTANCE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE((k), GST_TYPE_VULKAN_INSTANCE))
+#define GST_VULKAN_INSTANCE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), GST_TYPE_VULKAN_INSTANCE, GstVulkanInstanceClass))
+GType gst_vulkan_instance_get_type       (void);
+
+#define GST_VULKAN_INSTANCE_CONTEXT_TYPE_STR "gst.vulkan.instance"
+
+struct _GstVulkanInstance
+{
+  GstObject parent;
+
+  VkInstance instance; /* hides a pointer */
+  VkPhysicalDevice *physical_devices; /* hides a pointer */
+  guint32 n_physical_devices;
+
+  VkDebugReportCallbackEXT msg_callback;
+  PFN_vkCreateDebugReportCallbackEXT dbgCreateDebugReportCallback;
+  PFN_vkDestroyDebugReportCallbackEXT dbgDestroyDebugReportCallback;
+  PFN_vkDebugReportMessageEXT dbgReportMessage;
+
+  GstVulkanInstancePrivate *priv;
+};
+
+struct _GstVulkanInstanceClass
+{
+  GstObjectClass parent_class;
+};
+
+GstVulkanInstance * gst_vulkan_instance_new                     (void);
+gboolean            gst_vulkan_instance_open                    (GstVulkanInstance * instance,
+                                                                 GError ** error);
+
+gpointer            gst_vulkan_instance_get_proc_address        (GstVulkanInstance * instance,
+                                                                 const gchar * name);
+
+GstVulkanDevice *   gst_vulkan_instance_create_device           (GstVulkanInstance * instance,
+                                                                 GError ** error);
+
+void                gst_context_set_vulkan_instance             (GstContext * context,
+                                                                 GstVulkanInstance * instance);
+gboolean            gst_context_get_vulkan_instance             (GstContext * context,
+                                                                 GstVulkanInstance ** instance);
+gboolean            gst_vulkan_instance_handle_context_query    (GstElement * element,
+                                                                 GstQuery * query,
+                                                                 GstVulkanInstance ** instance);
+gboolean            gst_vulkan_instance_run_context_query       (GstElement * element,
+                                                                 GstVulkanInstance ** instance);
+
+G_END_DECLS
+
+#endif /* _VK_INSTANCE_H_ */
diff --git a/ext/vulkan/vkmemory.c b/ext/vulkan/vkmemory.c
new file mode 100644
index 0000000..52855c1
--- /dev/null
+++ b/ext/vulkan/vkmemory.c
@@ -0,0 +1,359 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+
+#include "vkmemory.h"
+
+/**
+ * SECTION:vkmemory
+ * @short_description: memory subclass for Vulkan device memory
+ * @see_also: #GstMemory, #GstAllocator
+ *
+ * GstVulkanMemory is a #GstMemory subclass providing support for the mapping of
+ * Vulkan device memory.  
+ */
+
+/* WARNING: while suballocation is allowed, nothing prevents aliasing which
+ * requires external synchronisation */
+
+#define GST_CAT_DEFUALT GST_CAT_VULKAN_MEMORY
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFUALT);
+
+static GstAllocator *_vulkan_memory_allocator;
+
+static gchar *
+_memory_properties_to_string (VkMemoryPropertyFlags prop_bits)
+{
+  GString *s;
+  gboolean first = TRUE;
+
+#define STR_APPEND(s,str) \
+  G_STMT_START { \
+    if (!first) \
+      g_string_append (s, "|"); \
+    g_string_append (s, str); \
+    first = FALSE; \
+  } G_STMT_END
+
+  s = g_string_new (NULL);
+  if (prop_bits & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) {
+    STR_APPEND (s, "device-local");
+  }
+  if (prop_bits & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) {
+    STR_APPEND (s, "host-visible");
+    if (prop_bits & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) {
+      STR_APPEND (s, "host-coherent");
+    } else {
+      STR_APPEND (s, "host-incoherent");
+    }
+    if (prop_bits & VK_MEMORY_PROPERTY_HOST_CACHED_BIT) {
+      STR_APPEND (s, "host-cached");
+    } else {
+      STR_APPEND (s, "host-uncached");
+    }
+  }
+
+  if (prop_bits & VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT) {
+    STR_APPEND (s, "lazily-allocated");
+  }
+
+  return g_string_free (s, FALSE);
+}
+
+static void
+_vk_mem_init (GstVulkanMemory * mem, GstAllocator * allocator,
+    GstMemory * parent, GstVulkanDevice * device, guint32 memory_type_index,
+    GstAllocationParams * params, gsize size,
+    VkMemoryPropertyFlags mem_prop_flags, gpointer user_data,
+    GDestroyNotify notify)
+{
+  gsize align = gst_memory_alignment, offset = 0, maxsize = size;
+  GstMemoryFlags flags = 0;
+  gchar *props_str;
+
+  if (params) {
+    flags = params->flags;
+    align |= params->align;
+    offset = params->prefix;
+    maxsize += params->prefix + params->padding;
+    if ((maxsize & align) != 0)
+      maxsize += ~(maxsize & align) + 1;
+  }
+
+  gst_memory_init (GST_MEMORY_CAST (mem), flags, allocator, parent, maxsize,
+      align, offset, size);
+
+  mem->device = gst_object_ref (device);
+  mem->alloc_info.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
+  mem->alloc_info.pNext = NULL;
+  mem->alloc_info.allocationSize = (VkDeviceSize) mem->mem.maxsize;
+  mem->alloc_info.memoryTypeIndex = memory_type_index;
+  mem->properties = mem_prop_flags;
+  mem->notify = notify;
+  mem->user_data = user_data;
+  mem->vk_offset = 0;
+
+  g_mutex_init (&mem->lock);
+
+  props_str = _memory_properties_to_string (mem_prop_flags);
+
+  GST_CAT_DEBUG (GST_CAT_VULKAN_MEMORY, "new Vulkan memory:%p size:%"
+      G_GSIZE_FORMAT " properties:%s", mem, maxsize, props_str);
+
+  g_free (props_str);
+}
+
+static GstVulkanMemory *
+_vk_mem_new (GstAllocator * allocator, GstMemory * parent,
+    GstVulkanDevice * device, guint32 memory_type_index,
+    GstAllocationParams * params, gsize size,
+    VkMemoryPropertyFlags mem_props_flags, gpointer user_data,
+    GDestroyNotify notify)
+{
+  GstVulkanMemory *mem = g_new0 (GstVulkanMemory, 1);
+  GError *error = NULL;
+  VkResult err;
+
+  _vk_mem_init (mem, allocator, parent, device, memory_type_index, params,
+      size, mem_props_flags, user_data, notify);
+
+  err =
+      vkAllocateMemory (device->device, &mem->alloc_info, NULL, &mem->mem_ptr);
+  if (gst_vulkan_error_to_g_error (err, &error, "vkAllocMemory") < 0) {
+    GST_CAT_ERROR (GST_CAT_VULKAN_MEMORY, "Failed to allocate device memory %s",
+        error->message);
+    gst_memory_unref ((GstMemory *) mem);
+    g_clear_error (&error);
+    return NULL;
+  }
+
+  return mem;
+}
+
+static gpointer
+_vk_mem_map_full (GstVulkanMemory * mem, GstMapInfo * info, gsize size)
+{
+  gpointer data;
+  VkResult err;
+  GError *error = NULL;
+
+  if ((mem->properties & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) == 0) {
+    GST_CAT_ERROR (GST_CAT_VULKAN_MEMORY, "Cannot map host-invisible memory");
+    return NULL;
+  }
+
+  err = vkMapMemory (mem->device->device, mem->mem_ptr, mem->vk_offset,
+      size, 0, &data);
+  if (gst_vulkan_error_to_g_error (err, &error, "vkMapMemory") < 0) {
+    GST_CAT_ERROR (GST_CAT_VULKAN_MEMORY, "Failed to map device memory %s",
+        error->message);
+    g_clear_error (&error);
+    return NULL;
+  }
+
+  return data;
+}
+
+static void
+_vk_mem_unmap_full (GstVulkanMemory * mem, GstMapInfo * info)
+{
+  vkUnmapMemory (mem->device->device, mem->mem_ptr);
+}
+
+static GstMemory *
+_vk_mem_copy (GstVulkanMemory * src, gssize offset, gssize size)
+{
+  return NULL;
+}
+
+static GstMemory *
+_vk_mem_share (GstVulkanMemory * mem, gssize offset, gsize size)
+{
+  GstVulkanMemory *shared = g_new0 (GstVulkanMemory, 1);
+  GstVulkanMemory *parent = mem;
+  GstAllocationParams params = { 0, };
+
+  if (size == -1)
+    size = mem->mem.size - offset;
+
+  g_return_val_if_fail (size > 0, NULL);
+
+  while ((parent = (GstVulkanMemory *) (GST_MEMORY_CAST (parent)->parent)));
+
+  params.flags = GST_MEMORY_FLAGS (mem);
+  params.align = GST_MEMORY_CAST (parent)->align;
+
+  _vk_mem_init (shared, _vulkan_memory_allocator, GST_MEMORY_CAST (mem),
+      parent->device, parent->alloc_info.memoryTypeIndex, &params, size,
+      parent->properties, NULL, NULL);
+  shared->mem_ptr = parent->mem_ptr;
+  shared->wrapped = TRUE;
+  shared->vk_offset = offset + mem->vk_offset;
+
+  return GST_MEMORY_CAST (shared);
+}
+
+static gboolean
+_vk_mem_is_span (GstVulkanMemory * mem1, GstVulkanMemory * mem2, gsize * offset)
+{
+  return FALSE;
+}
+
+static GstMemory *
+_vk_mem_alloc (GstAllocator * allocator, gsize size,
+    GstAllocationParams * params)
+{
+  g_critical ("Subclass should override GstAllocatorClass::alloc() function");
+
+  return NULL;
+}
+
+static void
+_vk_mem_free (GstAllocator * allocator, GstMemory * memory)
+{
+  GstVulkanMemory *mem = (GstVulkanMemory *) memory;
+
+  GST_CAT_TRACE (GST_CAT_VULKAN_MEMORY, "freeing buffer memory:%p "
+      "id:%" G_GUINT64_FORMAT, mem, (guint64) mem->mem_ptr);
+
+  g_mutex_clear (&mem->lock);
+
+  if (mem->notify)
+    mem->notify (mem->user_data);
+
+  if (mem->mem_ptr && !mem->wrapped)
+    vkFreeMemory (mem->device->device, mem->mem_ptr, NULL);
+
+  gst_object_unref (mem->device);
+}
+
+gboolean
+gst_vulkan_memory_find_memory_type_index_with_type_properties (GstVulkanDevice *
+    device, guint32 typeBits, VkMemoryPropertyFlags properties,
+    guint32 * typeIndex)
+{
+  guint32 i;
+
+  /* Search memtypes to find first index with those properties */
+  for (i = 0; i < 32; i++) {
+    if ((typeBits & 1) == 1) {
+      /* Type is available, does it match user properties? */
+      if ((device->memory_properties.memoryTypes[i].
+              propertyFlags & properties) == properties) {
+        *typeIndex = i;
+        return TRUE;
+      }
+    }
+    typeBits >>= 1;
+  }
+
+  return FALSE;
+}
+
+/**
+ * gst_vulkan_memory_alloc:
+ * @device:a #GstVulkanDevice
+ * @memory_type_index: the Vulkan memory type index
+ * @params: a #GstAllocationParams
+ * @size: the size to allocate
+ *
+ * Allocated a new #GstVulkanMemory.
+ *
+ * Returns: a #GstMemory object backed by a vulkan device memory
+ */
+GstMemory *
+gst_vulkan_memory_alloc (GstVulkanDevice * device, guint32 memory_type_index,
+    GstAllocationParams * params, gsize size, VkMemoryPropertyFlags mem_flags)
+{
+  GstVulkanMemory *mem;
+
+  mem = _vk_mem_new (_vulkan_memory_allocator, NULL, device, memory_type_index,
+      params, size, mem_flags, NULL, NULL);
+
+  return (GstMemory *) mem;
+}
+
+G_DEFINE_TYPE (GstVulkanMemoryAllocator, gst_vulkan_memory_allocator,
+    GST_TYPE_ALLOCATOR);
+
+static void
+gst_vulkan_memory_allocator_class_init (GstVulkanMemoryAllocatorClass * klass)
+{
+  GstAllocatorClass *allocator_class = (GstAllocatorClass *) klass;
+
+  allocator_class->alloc = _vk_mem_alloc;
+  allocator_class->free = _vk_mem_free;
+}
+
+static void
+gst_vulkan_memory_allocator_init (GstVulkanMemoryAllocator * allocator)
+{
+  GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator);
+
+  alloc->mem_type = GST_VULKAN_MEMORY_ALLOCATOR_NAME;
+  alloc->mem_map_full = (GstMemoryMapFullFunction) _vk_mem_map_full;
+  alloc->mem_unmap_full = (GstMemoryUnmapFullFunction) _vk_mem_unmap_full;
+  alloc->mem_copy = (GstMemoryCopyFunction) _vk_mem_copy;
+  alloc->mem_share = (GstMemoryShareFunction) _vk_mem_share;
+  alloc->mem_is_span = (GstMemoryIsSpanFunction) _vk_mem_is_span;
+}
+
+/**
+ * gst_vulkan_memory_init_once:
+ *
+ * Initializes the Vulkan memory allocator. It is safe to call this function
+ * multiple times.  This must be called before any other #GstVulkanMemory operation.
+ */
+void
+gst_vulkan_memory_init_once (void)
+{
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_VULKAN_MEMORY, "vulkanmemory", 0,
+        "Vulkan Memory");
+
+    _vulkan_memory_allocator =
+        g_object_new (gst_vulkan_memory_allocator_get_type (), NULL);
+
+    gst_allocator_register (GST_VULKAN_MEMORY_ALLOCATOR_NAME,
+        gst_object_ref (_vulkan_memory_allocator));
+    g_once_init_leave (&_init, 1);
+  }
+}
+
+/**
+ * gst_is_vulkan_memory:
+ * @mem:a #GstMemory
+ * 
+ * Returns: whether the memory at @mem is a #GstVulkanMemory
+ */
+gboolean
+gst_is_vulkan_memory (GstMemory * mem)
+{
+  return mem != NULL && mem->allocator != NULL &&
+      g_type_is_a (G_OBJECT_TYPE (mem->allocator),
+      GST_TYPE_VULKAN_MEMORY_ALLOCATOR);
+}
diff --git a/ext/vulkan/vkmemory.h b/ext/vulkan/vkmemory.h
new file mode 100644
index 0000000..db552a6
--- /dev/null
+++ b/ext/vulkan/vkmemory.h
@@ -0,0 +1,106 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _GST_VULKAN_BASE_BUFFER_H_
+#define _GST_VULKAN_BASE_BUFFER_H_
+
+#include <gst/gst.h>
+#include <gst/gstallocator.h>
+#include <gst/gstmemory.h>
+
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_VULKAN_MEMORY_ALLOCATOR (gst_vulkan_memory_allocator_get_type())
+GType gst_vulkan_memory_allocator_get_type(void);
+
+#define GST_IS_VULKAN_MEMORY_ALLOCATOR(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_VULKAN_MEMORY_ALLOCATOR))
+#define GST_IS_VULKAN_MEMORY_ALLOCATOR_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_VULKAN_MEMORY_ALLOCATOR))
+#define GST_VULKAN_MEMORY_ALLOCATOR_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_VULKAN_MEMORY_ALLOCATOR, GstVulkanMemoryAllocatorClass))
+#define GST_VULKAN_MEMORY_ALLOCATOR(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_VULKAN_MEMORY_ALLOCATOR, GstVulkanMemoryAllocator))
+#define GST_VULKAN_MEMORY_ALLOCATOR_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_VULKAN_MEMORY_ALLOCATOR, GstVulkanMemoryAllocatorClass))
+#define GST_VULKAN_MEMORY_ALLOCATOR_CAST(obj)            ((GstVulkanMemoryAllocator *)(obj))
+
+#define GST_VULKAN_MEMORY_ALLOCATOR_NAME "Vulkan"
+
+struct _GstVulkanMemory
+{
+  GstMemory                 mem;
+
+  GstVulkanDevice          *device;
+
+  VkDeviceMemory            mem_ptr;
+
+  /* <protected> */
+  GMutex                    lock;
+  guint                     map_count;
+
+  /* <private> */
+  GDestroyNotify            notify;
+  gpointer                  user_data;
+
+  VkMemoryAllocateInfo      alloc_info;
+  VkMemoryPropertyFlags     properties;
+
+  /* we need our own offset because GstMemory's is used to offset into the
+   * mapped pointer which when suballocating, we need to avoid.  This in
+   * relation to the root memory */
+  guint64                   vk_offset;
+  gboolean                  wrapped;
+};
+
+/**
+ * GstVulkanMemoryAllocator
+ *
+ * Opaque #GstVulkanMemoryAllocator struct
+ */
+struct _GstVulkanMemoryAllocator
+{
+  GstAllocator parent;
+};
+
+/**
+ * GstVulkanMemoryAllocatorClass:
+ *
+ * The #GstVulkanMemoryAllocatorClass only contains private data
+ */
+struct _GstVulkanMemoryAllocatorClass
+{
+  GstAllocatorClass parent_class;
+};
+
+void            gst_vulkan_memory_init_once     (void);
+gboolean        gst_is_vulkan_memory            (GstMemory * mem);
+
+GstMemory *     gst_vulkan_memory_alloc         (GstVulkanDevice * device,
+                                                 guint32 memory_type_index,
+                                                 GstAllocationParams * params,
+                                                 gsize size,
+                                                 VkMemoryPropertyFlags mem_prop_flags);
+
+gboolean        gst_vulkan_memory_find_memory_type_index_with_type_properties   (GstVulkanDevice * device,
+                                                                                 guint32 typeBits,
+                                                                                 VkMemoryPropertyFlags properties,
+                                                                                 guint32 * typeIndex);
+
+G_END_DECLS
+
+#endif /* _GST_VULKAN_BASE_BUFFER_H_ */
diff --git a/ext/vulkan/vkqueue.c b/ext/vulkan/vkqueue.c
new file mode 100644
index 0000000..7984fbf
--- /dev/null
+++ b/ext/vulkan/vkqueue.c
@@ -0,0 +1,187 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vkqueue.h"
+
+#define GST_CAT_DEFAULT gst_vulkan_queue_debug
+GST_DEBUG_CATEGORY (GST_CAT_DEFAULT);
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_CONTEXT);
+
+G_DEFINE_TYPE_WITH_CODE (GstVulkanQueue, gst_vulkan_queue, GST_TYPE_OBJECT,
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "vulkanqueue", 0,
+        "Vulkan Queue");
+    GST_DEBUG_CATEGORY_GET (GST_CAT_CONTEXT, "GST_CONTEXT"));
+
+static void gst_vulkan_queue_dispose (GObject * object);
+
+static void
+gst_vulkan_queue_init (GstVulkanQueue * device)
+{
+}
+
+static void
+gst_vulkan_queue_class_init (GstVulkanQueueClass * device_class)
+{
+  GObjectClass *gobject_class = (GObjectClass *) device_class;
+
+  gobject_class->dispose = gst_vulkan_queue_dispose;
+}
+
+static void
+gst_vulkan_queue_dispose (GObject * object)
+{
+  GstVulkanQueue *queue = GST_VULKAN_QUEUE (object);
+
+  if (queue->device)
+    gst_object_unref (queue->device);
+  queue->device = NULL;
+}
+
+GstVulkanDevice *
+gst_vulkan_queue_get_device (GstVulkanQueue * queue)
+{
+  g_return_val_if_fail (GST_IS_VULKAN_QUEUE (queue), NULL);
+
+  return queue->device ? gst_object_ref (queue->device) : NULL;
+}
+
+/**
+ * gst_context_set_vulkan_queue:
+ * @context: a #GstContext
+ * @queue: a #GstVulkanQueue
+ *
+ * Sets @queue on @context
+ *
+ * Since: 1.10
+ */
+void
+gst_context_set_vulkan_queue (GstContext * context, GstVulkanQueue * queue)
+{
+  GstStructure *s;
+
+  g_return_if_fail (context != NULL);
+  g_return_if_fail (gst_context_is_writable (context));
+
+  if (queue)
+    GST_CAT_LOG (GST_CAT_CONTEXT,
+        "setting GstVulkanQueue(%" GST_PTR_FORMAT ") on context(%"
+        GST_PTR_FORMAT ")", queue, context);
+
+  s = gst_context_writable_structure (context);
+  gst_structure_set (s, GST_VULKAN_QUEUE_CONTEXT_TYPE_STR,
+      GST_TYPE_VULKAN_QUEUE, queue, NULL);
+}
+
+/**
+ * gst_context_get_vulkan_queue:
+ * @context: a #GstContext
+ * @queue: resulting #GstVulkanQueue
+ *
+ * Returns: Whether @queue was in @context
+ *
+ * Since: 1.10
+ */
+gboolean
+gst_context_get_vulkan_queue (GstContext * context, GstVulkanQueue ** queue)
+{
+  const GstStructure *s;
+  gboolean ret;
+
+  g_return_val_if_fail (queue != NULL, FALSE);
+  g_return_val_if_fail (context != NULL, FALSE);
+
+  s = gst_context_get_structure (context);
+  ret = gst_structure_get (s, GST_VULKAN_QUEUE_CONTEXT_TYPE_STR,
+      GST_TYPE_VULKAN_QUEUE, queue, NULL);
+
+  GST_CAT_LOG (GST_CAT_CONTEXT, "got GstVulkanQueue(%" GST_PTR_FORMAT
+      ") from context(%" GST_PTR_FORMAT ")", *queue, context);
+
+  return ret;
+}
+
+gboolean
+gst_vulkan_queue_handle_context_query (GstElement * element, GstQuery * query,
+    GstVulkanQueue ** queue)
+{
+  gboolean res = FALSE;
+  const gchar *context_type;
+  GstContext *context, *old_context;
+
+  g_return_val_if_fail (element != NULL, FALSE);
+  g_return_val_if_fail (query != NULL, FALSE);
+  g_return_val_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_CONTEXT, FALSE);
+  g_return_val_if_fail (queue != NULL, FALSE);
+
+  gst_query_parse_context_type (query, &context_type);
+
+  if (g_strcmp0 (context_type, GST_VULKAN_QUEUE_CONTEXT_TYPE_STR) == 0) {
+    gst_query_parse_context (query, &old_context);
+
+    if (old_context)
+      context = gst_context_copy (old_context);
+    else
+      context = gst_context_new (GST_VULKAN_QUEUE_CONTEXT_TYPE_STR, TRUE);
+
+    gst_context_set_vulkan_queue (context, *queue);
+    gst_query_set_context (query, context);
+    gst_context_unref (context);
+
+    res = *queue != NULL;
+  }
+
+  return res;
+}
+
+gboolean
+gst_vulkan_queue_run_context_query (GstElement * element,
+    GstVulkanQueue ** queue)
+{
+  GstQuery *query;
+
+  g_return_val_if_fail (GST_IS_ELEMENT (element), FALSE);
+  g_return_val_if_fail (queue != NULL, FALSE);
+
+  if (*queue && GST_IS_VULKAN_QUEUE (*queue))
+    return TRUE;
+
+  if ((query =
+          gst_vulkan_local_context_query (element,
+              GST_VULKAN_QUEUE_CONTEXT_TYPE_STR, FALSE))) {
+    GstContext *context;
+
+    gst_query_parse_context (query, &context);
+    if (context)
+      gst_context_get_vulkan_queue (context, queue);
+  }
+
+  GST_DEBUG_OBJECT (element, "found queue %p", *queue);
+
+  gst_query_unref (query);
+
+  if (*queue)
+    return TRUE;
+
+  return FALSE;
+}
diff --git a/ext/vulkan/vkqueue.h b/ext/vulkan/vkqueue.h
new file mode 100644
index 0000000..04b1313
--- /dev/null
+++ b/ext/vulkan/vkqueue.h
@@ -0,0 +1,64 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _VK_QUEUE_H_
+#define _VK_QUEUE_H_
+
+#include "vk.h"
+
+#define GST_TYPE_VULKAN_QUEUE         (gst_vulkan_queue_get_type())
+#define GST_VULKAN_QUEUE(o)           (G_TYPE_CHECK_INSTANCE_CAST((o), GST_TYPE_VULKAN_QUEUE, GstVulkanQueue))
+#define GST_VULKAN_QUEUE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GST_TYPE_VULKAN_QUEUE, GstVulkanQueueClass))
+#define GST_IS_VULKAN_QUEUE(o)        (G_TYPE_CHECK_INSTANCE_TYPE((o), GST_TYPE_VULKAN_QUEUE))
+#define GST_IS_VULKAN_QUEUE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE((k), GST_TYPE_VULKAN_QUEUE))
+#define GST_VULKAN_QUEUE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), GST_TYPE_VULKAN_QUEUE, GstVulkanQueueClass))
+GType gst_vulkan_queue_get_type       (void);
+
+#define GST_VULKAN_QUEUE_CONTEXT_TYPE_STR "gst.vulkan.queue"
+
+struct _GstVulkanQueue
+{
+  GstObject parent;
+
+  GstVulkanDevice *device;
+
+  VkQueue queue; /* hides a pointer */
+  guint32 family;
+  guint32 index;
+};
+
+struct _GstVulkanQueueClass
+{
+  GstObjectClass parent_class;
+};
+
+GstVulkanDevice *   gst_vulkan_queue_get_device (GstVulkanQueue * queue);
+
+void                gst_context_set_vulkan_queue                (GstContext * context,
+                                                                 GstVulkanQueue * queue);
+gboolean            gst_context_get_vulkan_queue                (GstContext * context,
+                                                                 GstVulkanQueue ** queue);
+gboolean            gst_vulkan_queue_handle_context_query       (GstElement * element,
+                                                                 GstQuery * query,
+                                                                 GstVulkanQueue ** queue);
+gboolean            gst_vulkan_queue_run_context_query          (GstElement * element,
+                                                                 GstVulkanQueue ** queue);
+
+#endif /* _VK_QUEUE_H_ */
diff --git a/ext/vulkan/vksink.c b/ext/vulkan/vksink.c
new file mode 100644
index 0000000..ec359ca
--- /dev/null
+++ b/ext/vulkan/vksink.c
@@ -0,0 +1,500 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:element-vulkansink
+ *
+ * vulkansink renders video frames to a drawable on a local or remote
+ * display using Vulkan.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+//#include <gst/video/videooverlay.h>
+
+#include "vksink.h"
+#include "vkdevice.h"
+
+GST_DEBUG_CATEGORY (gst_debug_vulkan_sink);
+#define GST_CAT_DEFAULT gst_debug_vulkan_sink
+
+#define DEFAULT_FORCE_ASPECT_RATIO TRUE
+#define DEFAULT_PIXEL_ASPECT_RATIO_N 0
+#define DEFAULT_PIXEL_ASPECT_RATIO_D 1
+
+static void gst_vulkan_sink_finalize (GObject * object);
+static void gst_vulkan_sink_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * param_spec);
+static void gst_vulkan_sink_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * param_spec);
+
+static gboolean gst_vulkan_sink_query (GstBaseSink * bsink, GstQuery * query);
+static void gst_vulkan_sink_set_context (GstElement * element,
+    GstContext * context);
+
+static GstStateChangeReturn
+gst_vulkan_sink_change_state (GstElement * element, GstStateChange transition);
+
+static void gst_vulkan_sink_get_times (GstBaseSink * bsink, GstBuffer * buf,
+    GstClockTime * start, GstClockTime * end);
+static gboolean gst_vulkan_sink_set_caps (GstBaseSink * bsink, GstCaps * caps);
+static GstCaps *gst_vulkan_sink_get_caps (GstBaseSink * bsink,
+    GstCaps * filter);
+static GstFlowReturn gst_vulkan_sink_prepare (GstBaseSink * bsink,
+    GstBuffer * buf);
+static GstFlowReturn gst_vulkan_sink_show_frame (GstVideoSink * bsink,
+    GstBuffer * buf);
+
+static GstStaticPadTemplate gst_vulkan_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
+        (GST_CAPS_FEATURE_MEMORY_VULKAN_BUFFER,
+            GST_VULKAN_SWAPPER_VIDEO_FORMATS)));
+
+enum
+{
+  PROP_0,
+  PROP_FORCE_ASPECT_RATIO,
+  PROP_PIXEL_ASPECT_RATIO,
+};
+
+enum
+{
+  SIGNAL_0,
+  LAST_SIGNAL
+};
+
+/* static guint gst_vulkan_sink_signals[LAST_SIGNAL] = { 0 }; */
+
+#define gst_vulkan_sink_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstVulkanSink, gst_vulkan_sink,
+    GST_TYPE_VIDEO_SINK, GST_DEBUG_CATEGORY_INIT (gst_debug_vulkan_sink,
+        "vulkansink", 0, "Vulkan Video Sink"));
+
+static void
+gst_vulkan_sink_class_init (GstVulkanSinkClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+  GstBaseSinkClass *gstbasesink_class;
+  GstVideoSinkClass *gstvideosink_class;
+  GstElementClass *element_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+  gstbasesink_class = (GstBaseSinkClass *) klass;
+  gstvideosink_class = (GstVideoSinkClass *) klass;
+  element_class = GST_ELEMENT_CLASS (klass);
+
+  gobject_class->set_property = gst_vulkan_sink_set_property;
+  gobject_class->get_property = gst_vulkan_sink_get_property;
+
+  g_object_class_install_property (gobject_class, PROP_FORCE_ASPECT_RATIO,
+      g_param_spec_boolean ("force-aspect-ratio", "Force aspect ratio",
+          "When enabled, scaling will respect original aspect ratio",
+          DEFAULT_FORCE_ASPECT_RATIO,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, PROP_PIXEL_ASPECT_RATIO,
+      gst_param_spec_fraction ("pixel-aspect-ratio", "Pixel Aspect Ratio",
+          "The pixel aspect ratio of the device", 0, 1, G_MAXINT, 1, 1, 1,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  gst_element_class_set_metadata (element_class, "Vulkan video sink",
+      "Sink/Video", "A videosink based on OpenGL",
+      "Matthew Waters <matthew@centricular.com>");
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&gst_vulkan_sink_template));
+
+  gobject_class->finalize = gst_vulkan_sink_finalize;
+
+  gstelement_class->change_state = gst_vulkan_sink_change_state;
+  gstelement_class->set_context = gst_vulkan_sink_set_context;
+  gstbasesink_class->query = GST_DEBUG_FUNCPTR (gst_vulkan_sink_query);
+  gstbasesink_class->set_caps = gst_vulkan_sink_set_caps;
+  gstbasesink_class->get_caps = gst_vulkan_sink_get_caps;
+  gstbasesink_class->get_times = gst_vulkan_sink_get_times;
+  gstbasesink_class->prepare = gst_vulkan_sink_prepare;
+
+  gstvideosink_class->show_frame =
+      GST_DEBUG_FUNCPTR (gst_vulkan_sink_show_frame);
+}
+
+static void
+gst_vulkan_sink_init (GstVulkanSink * vk_sink)
+{
+  vk_sink->force_aspect_ratio = DEFAULT_FORCE_ASPECT_RATIO;
+  vk_sink->par_n = DEFAULT_PIXEL_ASPECT_RATIO_N;
+  vk_sink->par_d = DEFAULT_PIXEL_ASPECT_RATIO_D;
+
+//  g_mutex_init (&vk_sink->drawing_lock);
+}
+
+static void
+gst_vulkan_sink_finalize (GObject * object)
+{
+//  GstVulkanSink *vk_sink = GST_VULKAN_SINK (object);
+//  g_mutex_clear (&vk_sink->drawing_lock);
+
+//  GST_DEBUG ("finalized");
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_vulkan_sink_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstVulkanSink *vk_sink = GST_VULKAN_SINK (object);
+
+  switch (prop_id) {
+    case PROP_FORCE_ASPECT_RATIO:
+      vk_sink->force_aspect_ratio = g_value_get_boolean (value);
+      break;
+    case PROP_PIXEL_ASPECT_RATIO:
+      vk_sink->par_n = gst_value_get_fraction_numerator (value);
+      vk_sink->par_d = gst_value_get_fraction_denominator (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_vulkan_sink_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstVulkanSink *vk_sink = GST_VULKAN_SINK (object);
+
+  switch (prop_id) {
+    case PROP_FORCE_ASPECT_RATIO:
+      g_value_set_boolean (value, vk_sink->force_aspect_ratio);
+      break;
+    case PROP_PIXEL_ASPECT_RATIO:
+      gst_value_set_fraction (value, vk_sink->par_n, vk_sink->par_d);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static gboolean
+gst_vulkan_sink_query (GstBaseSink * bsink, GstQuery * query)
+{
+  GstVulkanSink *vk_sink = GST_VULKAN_SINK (bsink);
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_CONTEXT:{
+      if (gst_vulkan_handle_context_query (GST_ELEMENT (vk_sink), query,
+              &vk_sink->display, &vk_sink->instance, &vk_sink->device))
+        return TRUE;
+
+      break;
+    }
+    default:
+      break;
+  }
+
+  return GST_BASE_SINK_CLASS (parent_class)->query (bsink, query);
+}
+
+static void
+gst_vulkan_sink_set_context (GstElement * element, GstContext * context)
+{
+  GstVulkanSink *vk_sink = GST_VULKAN_SINK (element);
+
+  gst_vulkan_handle_set_context (element, context, &vk_sink->display,
+      &vk_sink->instance);
+
+  GST_ELEMENT_CLASS (parent_class)->set_context (element, context);
+}
+
+static GstStateChangeReturn
+gst_vulkan_sink_change_state (GstElement * element, GstStateChange transition)
+{
+  GstVulkanSink *vk_sink = GST_VULKAN_SINK (element);
+  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
+  GError *error = NULL;
+
+  GST_DEBUG ("changing state: %s => %s",
+      gst_element_state_get_name (GST_STATE_TRANSITION_CURRENT (transition)),
+      gst_element_state_get_name (GST_STATE_TRANSITION_NEXT (transition)));
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+      if (!gst_vulkan_ensure_element_data (element, &vk_sink->display,
+              &vk_sink->instance)) {
+        GST_ELEMENT_ERROR (vk_sink, RESOURCE, NOT_FOUND,
+            ("Failed to retreive vulkan instance/display"), (NULL));
+        return GST_STATE_CHANGE_FAILURE;
+      }
+
+      if (!(vk_sink->device =
+              gst_vulkan_instance_create_device (vk_sink->instance, &error))) {
+        GST_ELEMENT_ERROR (vk_sink, RESOURCE, NOT_FOUND,
+            ("Failed to create vulkan device"), ("%s", error->message));
+        return GST_STATE_CHANGE_FAILURE;
+      }
+
+      if (!(vk_sink->window =
+              gst_vulkan_display_create_window (vk_sink->display))) {
+        GST_ELEMENT_ERROR (vk_sink, RESOURCE, NOT_FOUND,
+            ("Failed to create a window"), (NULL));
+        return GST_STATE_CHANGE_FAILURE;
+      }
+
+      if (!gst_vulkan_window_open (vk_sink->window, &error)) {
+        GST_ELEMENT_ERROR (vk_sink, RESOURCE, NOT_FOUND,
+            ("Failed to open window"), ("%s", error->message));
+        return GST_STATE_CHANGE_FAILURE;
+      }
+
+      if (!(vk_sink->swapper =
+              gst_vulkan_swapper_new (vk_sink->device, vk_sink->window))) {
+        GST_ELEMENT_ERROR (vk_sink, RESOURCE, NOT_FOUND,
+            ("Failed to create a swapper"), (NULL));
+        return GST_STATE_CHANGE_FAILURE;
+      }
+      break;
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+      break;
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+  if (ret == GST_STATE_CHANGE_FAILURE)
+    return ret;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      break;
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      if (vk_sink->swapper)
+        gst_object_unref (vk_sink->swapper);
+      vk_sink->swapper = NULL;
+      if (vk_sink->display)
+        gst_object_unref (vk_sink->display);
+      vk_sink->display = NULL;
+      if (vk_sink->window) {
+        gst_vulkan_window_close (vk_sink->window);
+        gst_object_unref (vk_sink->window);
+      }
+      vk_sink->window = NULL;
+      if (vk_sink->device)
+        gst_object_unref (vk_sink->device);
+      vk_sink->device = NULL;
+      if (vk_sink->instance)
+        gst_object_unref (vk_sink->instance);
+      vk_sink->instance = NULL;
+      break;
+    default:
+      break;
+  }
+
+  return ret;
+}
+
+static void
+gst_vulkan_sink_get_times (GstBaseSink * bsink, GstBuffer * buf,
+    GstClockTime * start, GstClockTime * end)
+{
+  GstVulkanSink *vk_sink = GST_VULKAN_SINK (bsink);
+
+  if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
+    *start = GST_BUFFER_TIMESTAMP (buf);
+    if (GST_BUFFER_DURATION_IS_VALID (buf))
+      *end = *start + GST_BUFFER_DURATION (buf);
+    else {
+      if (GST_VIDEO_INFO_FPS_N (&vk_sink->v_info) > 0) {
+        *end = *start +
+            gst_util_uint64_scale_int (GST_SECOND,
+            GST_VIDEO_INFO_FPS_D (&vk_sink->v_info),
+            GST_VIDEO_INFO_FPS_N (&vk_sink->v_info));
+      }
+    }
+  }
+}
+
+static GstCaps *
+gst_vulkan_sink_get_caps (GstBaseSink * bsink, GstCaps * filter)
+{
+  GstVulkanSink *vk_sink = GST_VULKAN_SINK (bsink);
+  GstCaps *tmp = NULL;
+  GstCaps *result = NULL;
+  GError *error = NULL;
+
+  if (vk_sink->swapper) {
+    if (!(result =
+            gst_vulkan_swapper_get_supported_caps (vk_sink->swapper, &error))) {
+      GST_ELEMENT_ERROR (bsink, RESOURCE, NOT_FOUND, ("%s", error->message),
+          (NULL));
+      g_clear_error (&error);
+      return NULL;
+    }
+    return result;
+  }
+
+  tmp = gst_pad_get_pad_template_caps (GST_BASE_SINK_PAD (bsink));
+
+  if (filter) {
+    GST_DEBUG_OBJECT (bsink, "intersecting with filter caps %" GST_PTR_FORMAT,
+        filter);
+
+    result = gst_caps_intersect_full (filter, tmp, GST_CAPS_INTERSECT_FIRST);
+    gst_caps_unref (tmp);
+  } else {
+    result = tmp;
+  }
+
+  GST_DEBUG_OBJECT (bsink, "returning caps: %" GST_PTR_FORMAT, result);
+
+  return result;
+}
+
+static gboolean
+_configure_display_from_info (GstVulkanSink * vk_sink, GstVideoInfo * vinfo)
+{
+  guint display_ratio_num, display_ratio_den;
+  gint display_par_n, display_par_d;
+  gint par_n, par_d;
+  gint width, height;
+  gboolean ok;
+
+  width = GST_VIDEO_INFO_WIDTH (vinfo);
+  height = GST_VIDEO_INFO_HEIGHT (vinfo);
+
+  par_n = GST_VIDEO_INFO_PAR_N (vinfo);
+  par_d = GST_VIDEO_INFO_PAR_D (vinfo);
+
+  if (!par_n)
+    par_n = 1;
+
+  /* get display's PAR */
+  if (vk_sink->par_n != 0 && vk_sink->par_d != 0) {
+    display_par_n = vk_sink->par_n;
+    display_par_d = vk_sink->par_d;
+  } else {
+    display_par_n = 1;
+    display_par_d = 1;
+  }
+
+  ok = gst_video_calculate_display_ratio (&display_ratio_num,
+      &display_ratio_den, width, height, par_n, par_d, display_par_n,
+      display_par_d);
+
+  if (!ok)
+    return FALSE;
+
+  GST_TRACE ("PAR: %u/%u DAR:%u/%u", par_n, par_d, display_par_n,
+      display_par_d);
+
+  if (height % display_ratio_den == 0) {
+    GST_DEBUG ("keeping video height");
+    GST_VIDEO_SINK_WIDTH (vk_sink) = (guint)
+        gst_util_uint64_scale_int (height, display_ratio_num,
+        display_ratio_den);
+    GST_VIDEO_SINK_HEIGHT (vk_sink) = height;
+  } else if (width % display_ratio_num == 0) {
+    GST_DEBUG ("keeping video width");
+    GST_VIDEO_SINK_WIDTH (vk_sink) = width;
+    GST_VIDEO_SINK_HEIGHT (vk_sink) = (guint)
+        gst_util_uint64_scale_int (width, display_ratio_den, display_ratio_num);
+  } else {
+    GST_DEBUG ("approximating while keeping video height");
+    GST_VIDEO_SINK_WIDTH (vk_sink) = (guint)
+        gst_util_uint64_scale_int (height, display_ratio_num,
+        display_ratio_den);
+    GST_VIDEO_SINK_HEIGHT (vk_sink) = height;
+  }
+  GST_DEBUG ("scaling to %dx%d", GST_VIDEO_SINK_WIDTH (vk_sink),
+      GST_VIDEO_SINK_HEIGHT (vk_sink));
+
+  return TRUE;
+}
+
+static gboolean
+gst_vulkan_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
+{
+  GstVulkanSink *vk_sink = GST_VULKAN_SINK (bsink);
+  GError *error = NULL;
+  GstVideoInfo v_info;
+
+  GST_DEBUG_OBJECT (bsink, "set caps with %" GST_PTR_FORMAT, caps);
+
+  if (!gst_video_info_from_caps (&v_info, caps))
+    return FALSE;
+
+  if (!_configure_display_from_info (vk_sink, &v_info))
+    return FALSE;
+
+  if (!gst_vulkan_swapper_set_caps (vk_sink->swapper, caps, &error)) {
+    GST_ELEMENT_ERROR (vk_sink, RESOURCE, NOT_FOUND,
+        ("Failed to configure caps"), ("%s", error->message));
+    g_clear_error (&error);
+    return FALSE;
+  }
+
+  vk_sink->v_info = v_info;
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_vulkan_sink_prepare (GstBaseSink * bsink, GstBuffer * buf)
+{
+  GstVulkanSink *vk_sink = GST_VULKAN_SINK (bsink);
+
+  GST_TRACE_OBJECT (vk_sink, "preparing buffer %" GST_PTR_FORMAT, buf);
+
+  if (GST_VIDEO_SINK_WIDTH (vk_sink) < 1 || GST_VIDEO_SINK_HEIGHT (vk_sink) < 1) {
+    return GST_FLOW_NOT_NEGOTIATED;
+  }
+
+  return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+gst_vulkan_sink_show_frame (GstVideoSink * vsink, GstBuffer * buf)
+{
+  GstVulkanSink *vk_sink = GST_VULKAN_SINK (vsink);
+  GError *error = NULL;
+
+  GST_TRACE_OBJECT (vk_sink, "rendering buffer %" GST_PTR_FORMAT, buf);
+
+  if (!gst_vulkan_swapper_render_buffer (vk_sink->swapper, buf, &error)) {
+    GST_ELEMENT_ERROR (vk_sink, RESOURCE, NOT_FOUND,
+        ("Failed to render buffer"), ("%s", error->message));
+    g_clear_error (&error);
+    return GST_FLOW_ERROR;
+  }
+
+  return GST_FLOW_OK;
+}
diff --git a/ext/vulkan/vksink.h b/ext/vulkan/vksink.h
new file mode 100644
index 0000000..9f95cf3
--- /dev/null
+++ b/ext/vulkan/vksink.h
@@ -0,0 +1,70 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _VK_SINK_H_
+#define _VK_SINK_H_
+
+#include <gst/gst.h>
+#include <gst/video/gstvideosink.h>
+#include <gst/video/video.h>
+#include "vk.h"
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_VULKAN_SINK            (gst_vulkan_sink_get_type())
+#define GST_VULKAN_SINK(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VULKAN_SINK,GstVulkanSink))
+#define GST_VULKAN_SINK_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_VULKAN_SINK,GstVulkanSinkClass))
+#define GST_IS_VULKAN_SINK(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VULKAN_SINK))
+#define GST_IS_VULKAN_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VULKAN_SINK))
+
+typedef struct _GstVulkanSink GstVulkanSink;
+typedef struct _GstVulkanSinkClass GstVulkanSinkClass;
+
+struct _GstVulkanSink
+{
+  GstVideoSink video_sink;
+
+  GstVulkanInstance *instance;
+  GstVulkanDevice *device;
+
+  GstVulkanDisplay *display;
+  GstVulkanWindow *window;
+
+  GstVulkanSwapper *swapper;
+
+  /* properties */
+  gboolean force_aspect_ratio;
+  gint par_n;
+  gint par_d;
+
+  /* stream configuration */
+  GstVideoInfo v_info;
+};
+
+struct _GstVulkanSinkClass
+{
+    GstVideoSinkClass video_sink_class;
+};
+
+GType gst_vulkan_sink_get_type(void);
+
+G_END_DECLS
+
+#endif
diff --git a/ext/vulkan/vkswapper.c b/ext/vulkan/vkswapper.c
new file mode 100644
index 0000000..b92f2ab
--- /dev/null
+++ b/ext/vulkan/vkswapper.c
@@ -0,0 +1,1040 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+
+#include "vkswapper.h"
+
+#define GST_CAT_DEFAULT gst_vulkan_swapper_debug
+GST_DEBUG_CATEGORY (GST_CAT_DEFAULT);
+
+#define gst_vulkan_swapper_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstVulkanSwapper, gst_vulkan_swapper,
+    GST_TYPE_OBJECT, GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT,
+        "vulkanswapper", 0, "Vulkan Swapper"));
+
+#define RENDER_GET_LOCK(o) &(GST_VULKAN_SWAPPER (o)->priv->render_lock)
+#define RENDER_LOCK(o) g_mutex_lock (RENDER_GET_LOCK(o));
+#define RENDER_UNLOCK(o) g_mutex_unlock (RENDER_GET_LOCK(o));
+
+struct _GstVulkanSwapperPrivate
+{
+  GMutex render_lock;
+};
+
+static void _on_window_draw (GstVulkanWindow * window,
+    GstVulkanSwapper * swapper);
+
+static gboolean
+_get_function_table (GstVulkanSwapper * swapper)
+{
+  GstVulkanDevice *device = swapper->device;
+  GstVulkanInstance *instance = gst_vulkan_device_get_instance (device);
+
+  if (!instance) {
+    GST_ERROR_OBJECT (swapper, "Failed to get instance from the device");
+    return FALSE;
+  }
+#define GET_PROC_ADDRESS_REQUIRED(obj, type, name) \
+  G_STMT_START { \
+    obj->G_PASTE (, name) = G_PASTE(G_PASTE(gst_vulkan_, type), _get_proc_address) (type, "vk" G_STRINGIFY(name)); \
+    if (!obj->G_PASTE(, name)) { \
+      GST_ERROR_OBJECT (obj, "Failed to find required function vk" G_STRINGIFY(name)); \
+      gst_object_unref (instance); \
+      return FALSE; \
+    } \
+  } G_STMT_END
+
+  GET_PROC_ADDRESS_REQUIRED (swapper, instance,
+      GetPhysicalDeviceSurfaceSupportKHR);
+  GET_PROC_ADDRESS_REQUIRED (swapper, instance,
+      GetPhysicalDeviceSurfaceCapabilitiesKHR);
+  GET_PROC_ADDRESS_REQUIRED (swapper, instance,
+      GetPhysicalDeviceSurfaceFormatsKHR);
+  GET_PROC_ADDRESS_REQUIRED (swapper, instance,
+      GetPhysicalDeviceSurfacePresentModesKHR);
+  GET_PROC_ADDRESS_REQUIRED (swapper, device, CreateSwapchainKHR);
+  GET_PROC_ADDRESS_REQUIRED (swapper, device, DestroySwapchainKHR);
+  GET_PROC_ADDRESS_REQUIRED (swapper, device, GetSwapchainImagesKHR);
+  GET_PROC_ADDRESS_REQUIRED (swapper, device, AcquireNextImageKHR);
+  GET_PROC_ADDRESS_REQUIRED (swapper, device, QueuePresentKHR);
+
+  gst_object_unref (instance);
+
+  return TRUE;
+
+#undef GET_PROC_ADDRESS_REQUIRED
+}
+
+static GstVideoFormat
+_vk_format_to_video_format (VkFormat format)
+{
+  switch (format) {
+      /* double check endianess */
+    case VK_FORMAT_R8G8B8A8_UNORM:
+      return GST_VIDEO_FORMAT_RGBA;
+    case VK_FORMAT_R8G8B8_UNORM:
+      return GST_VIDEO_FORMAT_RGB;
+    case VK_FORMAT_B8G8R8A8_UNORM:
+      return GST_VIDEO_FORMAT_BGRA;
+    case VK_FORMAT_B8G8R8_UNORM:
+      return GST_VIDEO_FORMAT_BGR;
+    default:
+      return GST_VIDEO_FORMAT_UNKNOWN;
+  }
+}
+
+static VkFormat
+_vk_format_from_video_format (GstVideoFormat v_format)
+{
+  switch (v_format) {
+    case GST_VIDEO_FORMAT_RGBA:
+      return VK_FORMAT_R8G8B8A8_UNORM;
+    case GST_VIDEO_FORMAT_RGB:
+      return VK_FORMAT_R8G8B8_UNORM;
+    case GST_VIDEO_FORMAT_BGRA:
+      return VK_FORMAT_B8G8R8A8_UNORM;
+    case GST_VIDEO_FORMAT_BGR:
+      return VK_FORMAT_B8G8R8_UNORM;
+    default:
+      return VK_FORMAT_UNDEFINED;
+  }
+}
+
+static VkColorSpaceKHR
+_vk_color_space_from_video_info (GstVideoInfo * v_info)
+{
+  return VK_COLORSPACE_SRGB_NONLINEAR_KHR;
+}
+
+static void
+_add_vk_format_to_list (GValue * list, VkFormat format)
+{
+  GstVideoFormat v_format;
+  const gchar *format_str;
+
+  v_format = _vk_format_to_video_format (format);
+  if (v_format) {
+    GValue item = G_VALUE_INIT;
+
+    g_value_init (&item, G_TYPE_STRING);
+    format_str = gst_video_format_to_string (v_format);
+    g_value_set_string (&item, format_str);
+    gst_value_list_append_value (list, &item);
+    g_value_unset (&item);
+  }
+}
+
+static gboolean
+_vulkan_swapper_ensure_surface (GstVulkanSwapper * swapper, GError ** error)
+{
+  if (!swapper->surface) {
+    if (!(swapper->surface =
+            gst_vulkan_window_get_surface (swapper->window, error))) {
+      return FALSE;
+    }
+  }
+
+  return TRUE;
+}
+
+struct choose_data
+{
+  GstVulkanSwapper *swapper;
+  GstVulkanQueue *graphics_queue;
+  GstVulkanQueue *present_queue;
+};
+
+static gboolean
+_choose_queue (GstVulkanDevice * device, GstVulkanQueue * queue,
+    struct choose_data *data)
+{
+  guint flags = device->queue_family_props[queue->family].queueFlags;
+  VkPhysicalDevice gpu;
+  gboolean supports_present;
+
+  gpu = gst_vulkan_device_get_physical_device (data->swapper->device);
+
+  {
+    VkResult err;
+    GError *error = NULL;
+    VkBool32 physical_device_supported;
+
+    err =
+        data->swapper->GetPhysicalDeviceSurfaceSupportKHR (gpu, queue->index,
+        data->swapper->surface, &physical_device_supported);
+    if (gst_vulkan_error_to_g_error (err, &error,
+            "GetPhysicalDeviceSurfaceSupport") < 0) {
+      GST_DEBUG_OBJECT (data->swapper,
+          "surface not supported by the physical device: %s", error->message);
+      return TRUE;
+    }
+  }
+
+  supports_present =
+      gst_vulkan_window_get_presentation_support (data->swapper->window,
+      device, queue->index);
+
+  if ((flags & VK_QUEUE_GRAPHICS_BIT) != 0) {
+    if (supports_present) {
+      /* found one that supports both */
+      if (data->graphics_queue)
+        gst_object_unref (data->graphics_queue);
+      data->graphics_queue = gst_object_ref (queue);
+      if (data->present_queue)
+        gst_object_unref (data->present_queue);
+      data->present_queue = gst_object_ref (queue);
+      return FALSE;
+    }
+    if (!data->graphics_queue)
+      data->present_queue = gst_object_ref (queue);
+  } else if (supports_present) {
+    if (!data->present_queue)
+      data->present_queue = gst_object_ref (queue);
+  }
+
+  return TRUE;
+}
+
+static gboolean
+_vulkan_swapper_retrieve_surface_properties (GstVulkanSwapper * swapper,
+    GError ** error)
+{
+  struct choose_data data;
+  VkPhysicalDevice gpu;
+  VkResult err;
+
+  if (swapper->surf_formats)
+    return TRUE;
+
+  if (!_vulkan_swapper_ensure_surface (swapper, error))
+    return FALSE;
+
+  gpu = gst_vulkan_device_get_physical_device (swapper->device);
+
+  data.swapper = swapper;
+  data.present_queue = NULL;
+  data.graphics_queue = NULL;
+
+  gst_vulkan_device_foreach_queue (swapper->device,
+      (GstVulkanDeviceForEachQueueFunc) _choose_queue, &data);
+
+  if (data.graphics_queue != data.present_queue) {
+    /* FIXME: add support for separate graphics/present queues */
+    g_set_error (error, GST_VULKAN_ERROR,
+        VK_ERROR_INITIALIZATION_FAILED,
+        "Failed to find a compatible present/graphics queue");
+    if (data.present_queue)
+      gst_object_unref (data.present_queue);
+    if (data.graphics_queue)
+      gst_object_unref (data.graphics_queue);
+    return FALSE;
+  }
+
+  swapper->queue = gst_object_ref (data.present_queue);
+  if (data.present_queue)
+    gst_object_unref (data.present_queue);
+  if (data.graphics_queue)
+    gst_object_unref (data.graphics_queue);
+
+  err =
+      swapper->GetPhysicalDeviceSurfaceCapabilitiesKHR (gpu, swapper->surface,
+      &swapper->surf_props);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "GetPhysicalDeviceSurfaceCapabilitiesKHR") < 0)
+    return FALSE;
+
+  err =
+      swapper->GetPhysicalDeviceSurfaceFormatsKHR (gpu, swapper->surface,
+      &swapper->n_surf_formats, NULL);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "GetPhysicalDeviceSurfaceFormatsKHR") < 0)
+    return FALSE;
+
+  swapper->surf_formats = g_new0 (VkSurfaceFormatKHR, swapper->n_surf_formats);
+  err =
+      swapper->GetPhysicalDeviceSurfaceFormatsKHR (gpu, swapper->surface,
+      &swapper->n_surf_formats, swapper->surf_formats);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "GetPhysicalDeviceSurfaceFormatsKHR") < 0)
+    return FALSE;
+
+  err =
+      swapper->GetPhysicalDeviceSurfacePresentModesKHR (gpu, swapper->surface,
+      &swapper->n_surf_present_modes, NULL);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "GetPhysicalDeviceSurfacePresentModesKHR") < 0)
+    return FALSE;
+
+  swapper->surf_present_modes =
+      g_new0 (VkPresentModeKHR, swapper->n_surf_present_modes);
+  err =
+      swapper->GetPhysicalDeviceSurfacePresentModesKHR (gpu, swapper->surface,
+      &swapper->n_surf_present_modes, swapper->surf_present_modes);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "GetPhysicalDeviceSurfacePresentModesKHR") < 0)
+    return FALSE;
+
+  return TRUE;
+}
+
+static gboolean
+_on_window_close (GstVulkanWindow * window, GstVulkanSwapper * swapper)
+{
+  g_atomic_int_set (&swapper->to_quit, 1);
+
+  return TRUE;
+}
+
+static void
+gst_vulkan_swapper_finalize (GObject * object)
+{
+  GstVulkanSwapper *swapper = GST_VULKAN_SWAPPER (object);
+  int i;
+
+  if (swapper->swap_chain_images) {
+    for (i = 0; i < swapper->n_swap_chain_images; i++) {
+      gst_memory_unref ((GstMemory *) swapper->swap_chain_images[i]);
+      swapper->swap_chain_images[i] = NULL;
+    }
+    g_free (swapper->swap_chain_images);
+  }
+  swapper->swap_chain_images = NULL;
+
+  if (swapper->swap_chain)
+    swapper->DestroySwapchainKHR (swapper->device->device, swapper->swap_chain,
+        NULL);
+  swapper->swap_chain = VK_NULL_HANDLE;
+
+  if (swapper->queue)
+    gst_object_unref (swapper->queue);
+  swapper->queue = NULL;
+
+  if (swapper->device)
+    gst_object_unref (swapper->device);
+  swapper->device = NULL;
+
+  g_signal_handler_disconnect (swapper->window, swapper->draw_id);
+  swapper->draw_id = 0;
+
+  g_signal_handler_disconnect (swapper->window, swapper->close_id);
+  swapper->close_id = 0;
+
+  if (swapper->window)
+    gst_object_unref (swapper->window);
+  swapper->window = NULL;
+
+  g_free (swapper->surf_present_modes);
+  swapper->surf_present_modes = NULL;
+
+  g_free (swapper->surf_formats);
+  swapper->surf_formats = NULL;
+
+  gst_buffer_replace (&swapper->current_buffer, NULL);
+  gst_caps_replace (&swapper->caps, NULL);
+
+  g_mutex_clear (&swapper->priv->render_lock);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_vulkan_swapper_init (GstVulkanSwapper * swapper)
+{
+  swapper->priv =
+      G_TYPE_INSTANCE_GET_PRIVATE (swapper, GST_TYPE_VULKAN_SWAPPER,
+      GstVulkanSwapperPrivate);
+
+  g_mutex_init (&swapper->priv->render_lock);
+}
+
+static void
+gst_vulkan_swapper_class_init (GstVulkanSwapperClass * klass)
+{
+  g_type_class_add_private (klass, sizeof (GstVulkanSwapperPrivate));
+
+  G_OBJECT_CLASS (klass)->finalize = gst_vulkan_swapper_finalize;
+}
+
+GstVulkanSwapper *
+gst_vulkan_swapper_new (GstVulkanDevice * device, GstVulkanWindow * window)
+{
+  GstVulkanSwapper *swapper;
+
+  swapper = g_object_new (GST_TYPE_VULKAN_SWAPPER, NULL);
+  swapper->device = gst_object_ref (device);
+  swapper->window = gst_object_ref (window);
+
+  if (!_get_function_table (swapper)) {
+    gst_object_unref (swapper);
+    return NULL;
+  }
+
+  swapper->close_id = g_signal_connect (swapper->window, "close",
+      (GCallback) _on_window_close, swapper);
+  swapper->draw_id = g_signal_connect (swapper->window, "draw",
+      (GCallback) _on_window_draw, swapper);
+
+  return swapper;
+}
+
+GstCaps *
+gst_vulkan_swapper_get_supported_caps (GstVulkanSwapper * swapper,
+    GError ** error)
+{
+  GstStructure *s;
+  GstCaps *caps;
+
+  g_return_val_if_fail (GST_IS_VULKAN_SWAPPER (swapper), NULL);
+
+  if (!_vulkan_swapper_retrieve_surface_properties (swapper, error))
+    return NULL;
+
+  caps = gst_caps_new_empty_simple ("video/x-raw");
+  gst_caps_set_features (caps, 0,
+      gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_VULKAN_BUFFER));
+  s = gst_caps_get_structure (caps, 0);
+
+  {
+    int i;
+    GValue list = G_VALUE_INIT;
+
+    g_value_init (&list, GST_TYPE_LIST);
+
+    if (swapper->n_surf_formats
+        && swapper->surf_formats[0].format == VK_FORMAT_UNDEFINED) {
+      _add_vk_format_to_list (&list, VK_FORMAT_B8G8R8A8_UNORM);
+    } else {
+      for (i = 0; i < swapper->n_surf_formats; i++) {
+        _add_vk_format_to_list (&list, swapper->surf_formats[i].format);
+      }
+    }
+
+    gst_structure_set_value (s, "format", &list);
+    g_value_unset (&list);
+  }
+  {
+    guint32 max_dim = swapper->device->gpu_props.limits.maxImageDimension2D;
+
+    gst_structure_set (s, "width", GST_TYPE_INT_RANGE, 1, (gint) max_dim,
+        "height", GST_TYPE_INT_RANGE, 1, (gint) max_dim, "pixel-aspect-ratio",
+        GST_TYPE_FRACTION, 1, 1, "framerate", GST_TYPE_FRACTION_RANGE, 0, 1,
+        G_MAXINT, 1, NULL);
+  }
+
+  GST_INFO_OBJECT (swapper, "Probed the following caps %" GST_PTR_FORMAT, caps);
+
+  return caps;
+}
+
+static gboolean
+_swapper_set_image_layout_with_cmd (GstVulkanSwapper * swapper,
+    VkCommandBuffer cmd, GstVulkanImageMemory * image,
+    VkImageLayout new_image_layout, GError ** error)
+{
+  VkPipelineStageFlags src_stages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT;
+  VkPipelineStageFlags dest_stages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT;
+  VkImageMemoryBarrier image_memory_barrier;
+
+  gst_vulkan_image_memory_set_layout (image, new_image_layout,
+      &image_memory_barrier);
+
+  vkCmdPipelineBarrier (cmd, src_stages, dest_stages, 0, 0, NULL, 0, NULL, 1,
+      &image_memory_barrier);
+
+  return TRUE;
+}
+
+static gboolean
+_new_fence (GstVulkanDevice * device, VkFence * fence, GError ** error)
+{
+  VkFenceCreateInfo fence_info;
+  VkResult err;
+
+  fence_info.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
+  fence_info.pNext = NULL;
+  fence_info.flags = 0;
+
+  err = vkCreateFence (device->device, &fence_info, NULL, fence);
+  if (gst_vulkan_error_to_g_error (err, error, "vkCreateFence") < 0)
+    return FALSE;
+
+  return TRUE;
+}
+
+static gboolean
+_swapper_set_image_layout (GstVulkanSwapper * swapper,
+    GstVulkanImageMemory * image, VkImageLayout new_image_layout,
+    GError ** error)
+{
+  VkCommandBuffer cmd;
+  VkFence fence;
+  VkResult err;
+
+  if (!gst_vulkan_device_create_cmd_buffer (swapper->device, &cmd, error))
+    return FALSE;
+
+  if (!_new_fence (swapper->device, &fence, error))
+    return FALSE;
+
+  {
+    VkCommandBufferInheritanceInfo buf_inh = { 0, };
+    VkCommandBufferBeginInfo cmd_buf_info = { 0, };
+
+    buf_inh.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO;
+    buf_inh.pNext = NULL;
+    buf_inh.renderPass = VK_NULL_HANDLE;
+    buf_inh.subpass = 0;
+    buf_inh.framebuffer = VK_NULL_HANDLE;
+    buf_inh.occlusionQueryEnable = FALSE;
+    buf_inh.queryFlags = 0;
+    buf_inh.pipelineStatistics = 0;
+
+    cmd_buf_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
+    cmd_buf_info.pNext = NULL;
+    cmd_buf_info.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
+    cmd_buf_info.pInheritanceInfo = &buf_inh;
+
+    err = vkBeginCommandBuffer (cmd, &cmd_buf_info);
+    if (gst_vulkan_error_to_g_error (err, error, "vkBeginCommandBuffer") < 0)
+      return FALSE;
+  }
+
+  if (!_swapper_set_image_layout_with_cmd (swapper, cmd, image,
+          new_image_layout, error))
+    return FALSE;
+
+  err = vkEndCommandBuffer (cmd);
+  if (gst_vulkan_error_to_g_error (err, error, "vkEndCommandBuffer") < 0)
+    return FALSE;
+
+  {
+    VkSubmitInfo submit_info = { 0, };
+
+    submit_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
+    submit_info.pNext = NULL;
+    submit_info.waitSemaphoreCount = 0;
+    submit_info.pWaitSemaphores = NULL;
+    submit_info.commandBufferCount = 1;
+    submit_info.pCommandBuffers = &cmd;
+    submit_info.signalSemaphoreCount = 0;
+    submit_info.pSignalSemaphores = NULL;
+
+    err = vkQueueSubmit (swapper->queue->queue, 1, &submit_info, fence);
+    if (gst_vulkan_error_to_g_error (err, error, "vkQueueSubmit") < 0)
+      return FALSE;
+  }
+
+  err = vkWaitForFences (swapper->device->device, 1, &fence, TRUE, -1);
+  if (gst_vulkan_error_to_g_error (err, error, "vkWaitForFences") < 0)
+    return FALSE;
+  vkFreeCommandBuffers (swapper->device->device, swapper->device->cmd_pool, 1,
+      &cmd);
+
+  vkDestroyFence (swapper->device->device, fence, NULL);
+
+  return TRUE;
+}
+
+static gboolean
+_allocate_swapchain (GstVulkanSwapper * swapper, GstCaps * caps,
+    GError ** error)
+{
+  VkSurfaceTransformFlagsKHR preTransform;
+  VkCompositeAlphaFlagsKHR alpha_flags;
+  VkPresentModeKHR present_mode;
+  VkImageUsageFlags usage = 0;
+  VkColorSpaceKHR color_space;
+  VkImage *swap_chain_images;
+  VkExtent2D swapchain_dims;
+  guint32 n_images_wanted;
+  VkPhysicalDevice gpu;
+  VkFormat format;
+  VkResult err;
+  guint32 i;
+
+  if (!_vulkan_swapper_ensure_surface (swapper, error))
+    return FALSE;
+
+  gpu = gst_vulkan_device_get_physical_device (swapper->device);
+  err =
+      swapper->GetPhysicalDeviceSurfaceCapabilitiesKHR (gpu,
+      swapper->surface, &swapper->surf_props);
+  if (gst_vulkan_error_to_g_error (err, error,
+          "GetPhysicalDeviceSurfaceCapabilitiesKHR") < 0)
+    return FALSE;
+
+  /* width and height are either both -1, or both not -1. */
+  if (swapper->surf_props.currentExtent.width == -1) {
+    /* If the surface size is undefined, the size is set to
+     * the size of the images requested. */
+    swapchain_dims.width = 320;
+    swapchain_dims.height = 240;
+  } else {
+    /* If the surface size is defined, the swap chain size must match */
+    swapchain_dims = swapper->surf_props.currentExtent;
+  }
+
+  /* If mailbox mode is available, use it, as is the lowest-latency non-
+   * tearing mode.  If not, try IMMEDIATE which will usually be available,
+   * and is fastest (though it tears).  If not, fall back to FIFO which is
+   * always available. */
+  present_mode = VK_PRESENT_MODE_FIFO_KHR;
+  for (gsize i = 0; i < swapper->n_surf_present_modes; i++) {
+    if (swapper->surf_present_modes[i] == VK_PRESENT_MODE_MAILBOX_KHR) {
+      present_mode = VK_PRESENT_MODE_MAILBOX_KHR;
+      break;
+    }
+    if ((present_mode != VK_PRESENT_MODE_MAILBOX_KHR) &&
+        (swapper->surf_present_modes[i] == VK_PRESENT_MODE_IMMEDIATE_KHR)) {
+      present_mode = VK_PRESENT_MODE_IMMEDIATE_KHR;
+    }
+  }
+
+  /* Determine the number of VkImage's to use in the swap chain (we desire to
+   * own only 1 image at a time, besides the images being displayed and
+   * queued for display): */
+  n_images_wanted = swapper->surf_props.minImageCount + 1;
+  if ((swapper->surf_props.maxImageCount > 0) &&
+      (n_images_wanted > swapper->surf_props.maxImageCount)) {
+    /* Application must settle for fewer images than desired: */
+    n_images_wanted = swapper->surf_props.maxImageCount;
+  }
+
+  if (swapper->
+      surf_props.supportedTransforms & VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR) {
+    preTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
+  } else {
+    preTransform = swapper->surf_props.currentTransform;
+  }
+
+  format =
+      _vk_format_from_video_format (GST_VIDEO_INFO_FORMAT (&swapper->v_info));
+  color_space = _vk_color_space_from_video_info (&swapper->v_info);
+
+  if ((swapper->surf_props.supportedCompositeAlpha &
+          VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR) != 0) {
+    alpha_flags = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
+  } else if ((swapper->surf_props.supportedCompositeAlpha &
+          VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR) != 0) {
+    alpha_flags = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR;
+  } else {
+    g_set_error (error, GST_VULKAN_ERROR,
+        VK_ERROR_INITIALIZATION_FAILED,
+        "Incorrect alpha flags available for the swap images");
+    return FALSE;
+  }
+
+  if ((swapper->surf_props.supportedUsageFlags &
+          VK_IMAGE_USAGE_TRANSFER_DST_BIT) != 0) {
+    usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT;
+  } else {
+    g_set_error (error, GST_VULKAN_ERROR,
+        VK_ERROR_INITIALIZATION_FAILED,
+        "Incorrect usage flags available for the swap images");
+    return FALSE;
+  }
+  if ((swapper->surf_props.
+          supportedUsageFlags & VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT)
+      != 0) {
+    usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
+  } else {
+    g_set_error (error, GST_VULKAN_ERROR,
+        VK_ERROR_INITIALIZATION_FAILED,
+        "Incorrect usage flags available for the swap images");
+    return FALSE;
+  }
+
+  {
+    VkSwapchainCreateInfoKHR swap_chain_info = { 0, };
+    VkSwapchainKHR old_swap_chain;
+
+    old_swap_chain = swapper->swap_chain;
+
+    swap_chain_info.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
+    swap_chain_info.pNext = NULL;
+    swap_chain_info.surface = swapper->surface;
+    swap_chain_info.minImageCount = n_images_wanted;
+    swap_chain_info.imageFormat = format;
+    swap_chain_info.imageColorSpace = color_space;
+    swap_chain_info.imageExtent = swapchain_dims;
+    swap_chain_info.imageArrayLayers = 1;
+    swap_chain_info.imageUsage = usage;
+    swap_chain_info.imageSharingMode = VK_SHARING_MODE_EXCLUSIVE;
+    swap_chain_info.queueFamilyIndexCount = 0;
+    swap_chain_info.pQueueFamilyIndices = NULL;
+    swap_chain_info.preTransform = preTransform;
+    swap_chain_info.presentMode = present_mode;
+    swap_chain_info.compositeAlpha = alpha_flags;
+    swap_chain_info.clipped = TRUE;
+    swap_chain_info.oldSwapchain = swapper->swap_chain;
+
+    err =
+        swapper->CreateSwapchainKHR (swapper->device->device, &swap_chain_info,
+        NULL, &swapper->swap_chain);
+    if (gst_vulkan_error_to_g_error (err, error, "vkCreateSwapchainKHR") < 0)
+      return FALSE;
+
+    if (old_swap_chain != VK_NULL_HANDLE) {
+      swapper->DestroySwapchainKHR (swapper->device->device, old_swap_chain,
+          NULL);
+    }
+  }
+
+  err =
+      swapper->GetSwapchainImagesKHR (swapper->device->device,
+      swapper->swap_chain, &swapper->n_swap_chain_images, NULL);
+  if (gst_vulkan_error_to_g_error (err, error, "vkGetSwapchainImagesKHR") < 0)
+    return FALSE;
+
+  swap_chain_images = g_new0 (VkImage, swapper->n_swap_chain_images);
+  err =
+      swapper->GetSwapchainImagesKHR (swapper->device->device,
+      swapper->swap_chain, &swapper->n_swap_chain_images, swap_chain_images);
+  if (gst_vulkan_error_to_g_error (err, error, "vkGetSwapchainImagesKHR") < 0) {
+    g_free (swap_chain_images);
+    return FALSE;
+  }
+
+  swapper->swap_chain_images =
+      g_new0 (GstVulkanImageMemory *, swapper->n_swap_chain_images);
+  for (i = 0; i < swapper->n_swap_chain_images; i++) {
+    swapper->swap_chain_images[i] = (GstVulkanImageMemory *)
+        gst_vulkan_image_memory_wrapped (swapper->device, swap_chain_images[i],
+        format, swapchain_dims.width, swapchain_dims.height,
+        VK_IMAGE_TILING_OPTIMAL, usage, NULL, NULL);
+
+    if (!_swapper_set_image_layout (swapper, swapper->swap_chain_images[i],
+            VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, error)) {
+      g_free (swap_chain_images);
+      return FALSE;
+    }
+  }
+
+  g_free (swap_chain_images);
+  return TRUE;
+}
+
+static gboolean
+_swapchain_resize (GstVulkanSwapper * swapper, GError ** error)
+{
+  int i;
+
+  if (!swapper->queue) {
+    if (!_vulkan_swapper_retrieve_surface_properties (swapper, error)) {
+      return FALSE;
+    }
+  }
+
+  if (swapper->swap_chain_images) {
+    for (i = 0; i < swapper->n_swap_chain_images; i++) {
+      if (swapper->swap_chain_images[i])
+        gst_memory_unref ((GstMemory *) swapper->swap_chain_images[i]);
+    }
+    g_free (swapper->swap_chain_images);
+  }
+
+  return _allocate_swapchain (swapper, swapper->caps, error);
+}
+
+gboolean
+gst_vulkan_swapper_set_caps (GstVulkanSwapper * swapper, GstCaps * caps,
+    GError ** error)
+{
+  if (!gst_video_info_from_caps (&swapper->v_info, caps)) {
+    g_set_error (error, GST_VULKAN_ERROR,
+        VK_ERROR_INITIALIZATION_FAILED,
+        "Failed to geto GstVideoInfo from caps");
+    return FALSE;
+  }
+
+  gst_caps_replace (&swapper->caps, caps);
+
+  return _swapchain_resize (swapper, error);
+}
+
+struct cmd_data
+{
+  VkCommandBuffer cmd;
+  VkFence fence;
+  GDestroyNotify notify;
+  gpointer data;
+};
+
+static gboolean
+_build_render_buffer_cmd (GstVulkanSwapper * swapper, guint32 swap_idx,
+    GstBuffer * buffer, struct cmd_data *cmd_data, GError ** error)
+{
+  GstVulkanBufferMemory *buf_mem;
+  GstVulkanImageMemory *swap_mem;
+  VkCommandBuffer cmd;
+  VkResult err;
+
+  g_return_val_if_fail (swap_idx < swapper->n_swap_chain_images, FALSE);
+  swap_mem = swapper->swap_chain_images[swap_idx];
+
+  cmd_data->notify = NULL;
+
+  if (!gst_vulkan_device_create_cmd_buffer (swapper->device, &cmd, error))
+    return FALSE;
+
+  buf_mem = (GstVulkanBufferMemory *) gst_buffer_peek_memory (buffer, 0);
+
+  {
+    VkCommandBufferInheritanceInfo buf_inh = { 0, };
+    VkCommandBufferBeginInfo cmd_buf_info = { 0, };
+
+    buf_inh.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO;
+    buf_inh.pNext = NULL;
+    buf_inh.renderPass = VK_NULL_HANDLE;
+    buf_inh.subpass = 0;
+    buf_inh.framebuffer = VK_NULL_HANDLE;
+    buf_inh.occlusionQueryEnable = FALSE;
+    buf_inh.queryFlags = 0;
+    buf_inh.pipelineStatistics = 0;
+
+    cmd_buf_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
+    cmd_buf_info.pNext = NULL;
+    cmd_buf_info.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
+    cmd_buf_info.pInheritanceInfo = &buf_inh;
+
+    err = vkBeginCommandBuffer (cmd, &cmd_buf_info);
+    if (gst_vulkan_error_to_g_error (err, error, "vkBeginCommandBuffer") < 0)
+      return FALSE;
+  }
+
+  if (!_swapper_set_image_layout_with_cmd (swapper, cmd, swap_mem,
+          VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, error)) {
+    return FALSE;
+  }
+
+  {
+    VkBufferImageCopy region = { 0, };
+    guint32 dst_width = gst_vulkan_image_memory_get_width (swap_mem);
+    guint32 dst_height = gst_vulkan_image_memory_get_height (swap_mem);
+    guint src_width = GST_VIDEO_INFO_WIDTH (&swapper->v_info);
+    guint src_height = GST_VIDEO_INFO_HEIGHT (&swapper->v_info);
+    guint x, y;
+
+    if (src_width != dst_width || src_height != dst_height) {
+/* FIXME: broken with LunarG's driver
+      x = (src_width - dst_width) / 2;
+      y = (src_height - dst_height) / 2;*/
+      x = y = 0;
+    } else {
+      x = y = 0;
+    }
+    /* FIXME: scale rect */
+    GST_VK_BUFFER_IMAGE_COPY (region, 0, src_width, src_height,
+        GST_VK_IMAGE_SUBRESOURCE_LAYERS_INIT (VK_IMAGE_ASPECT_COLOR_BIT, 0, 0,
+            1), GST_VK_OFFSET3D_INIT (x, y, 0), GST_VK_EXTENT3D_INIT (src_width,
+            src_height, 1));
+
+    vkCmdCopyBufferToImage (cmd, buf_mem->buffer, swap_mem->image,
+        swap_mem->image_layout, 1, &region);
+  }
+
+  if (!_swapper_set_image_layout_with_cmd (swapper, cmd, swap_mem,
+          VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, error)) {
+    return FALSE;
+  }
+
+  err = vkEndCommandBuffer (cmd);
+  if (gst_vulkan_error_to_g_error (err, error, "vkEndCommandBuffer") < 0)
+    return FALSE;
+
+  cmd_data->cmd = cmd;
+  cmd_data->notify = NULL;
+
+  if (!_new_fence (swapper->device, &cmd_data->fence, error)) {
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+static gboolean
+_render_buffer_unlocked (GstVulkanSwapper * swapper,
+    GstBuffer * buffer, GError ** error)
+{
+  VkSemaphore semaphore = { 0, };
+  VkSemaphoreCreateInfo semaphore_info = { 0, };
+  VkPresentInfoKHR present;
+  struct cmd_data cmd_data = { 0, };
+  guint32 swap_idx;
+  VkResult err, present_err;
+
+  semaphore_info.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;
+  semaphore_info.pNext = NULL;
+  semaphore_info.flags = 0;
+
+  if (!buffer) {
+    g_set_error (error, GST_VULKAN_ERROR,
+        VK_ERROR_INITIALIZATION_FAILED, "Invalid buffer");
+    goto error;
+  }
+
+  if (g_atomic_int_get (&swapper->to_quit)) {
+    g_set_error (error, GST_VULKAN_ERROR, VK_ERROR_SURFACE_LOST_KHR,
+        "Output window was closed");
+    goto error;
+  }
+
+  gst_buffer_replace (&swapper->current_buffer, buffer);
+
+reacquire:
+  err = vkCreateSemaphore (swapper->device->device, &semaphore_info,
+      NULL, &semaphore);
+  if (gst_vulkan_error_to_g_error (err, error, "vkCreateSemaphore") < 0)
+    goto error;
+
+  err =
+      swapper->AcquireNextImageKHR (swapper->device->device,
+      swapper->swap_chain, -1, semaphore, VK_NULL_HANDLE, &swap_idx);
+  /* TODO: Deal with the VK_SUBOPTIMAL_KHR and VK_ERROR_OUT_OF_DATE_KHR */
+  if (err == VK_ERROR_OUT_OF_DATE_KHR) {
+    GST_DEBUG_OBJECT (swapper, "out of date frame acquired");
+
+    vkDestroySemaphore (swapper->device->device, semaphore, NULL);
+    if (!_swapchain_resize (swapper, error))
+      goto error;
+    goto reacquire;
+  } else if (gst_vulkan_error_to_g_error (err, error,
+          "vkAcquireNextImageKHR") < 0) {
+    goto error;
+  }
+
+  if (!_build_render_buffer_cmd (swapper, swap_idx, buffer, &cmd_data, error))
+    goto error;
+
+  {
+    VkSubmitInfo submit_info = { 0, };
+
+    submit_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
+    submit_info.pNext = NULL;
+    submit_info.waitSemaphoreCount = 1;
+    submit_info.pWaitSemaphores = &semaphore;
+    submit_info.commandBufferCount = 1;
+    submit_info.pCommandBuffers = &cmd_data.cmd;
+    submit_info.signalSemaphoreCount = 0;
+    submit_info.pSignalSemaphores = NULL;
+
+    err =
+        vkQueueSubmit (swapper->queue->queue, 1, &submit_info, cmd_data.fence);
+    if (gst_vulkan_error_to_g_error (err, error, "vkQueueSubmit") < 0) {
+      return FALSE;
+    }
+  }
+
+  present.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
+  present.pNext = NULL;
+  present.waitSemaphoreCount = 0;
+  present.pWaitSemaphores = NULL;
+  present.swapchainCount = 1;
+  present.pSwapchains = &swapper->swap_chain;
+  present.pImageIndices = &swap_idx;
+  present.pResults = &present_err;
+
+  err = swapper->QueuePresentKHR (swapper->queue->queue, &present);
+  if (err == VK_ERROR_OUT_OF_DATE_KHR) {
+    GST_DEBUG_OBJECT (swapper, "out of date frame submitted");
+
+    if (!_swapchain_resize (swapper, error))
+      goto error;
+  } else if (gst_vulkan_error_to_g_error (err, error, "vkQueuePresentKHR") < 0)
+    goto error;
+
+  err = vkWaitForFences (swapper->device->device, 1, &cmd_data.fence, TRUE, -1);
+  if (gst_vulkan_error_to_g_error (err, error, "vkWaitForFences") < 0)
+    goto error;
+
+  if (semaphore)
+    vkDestroySemaphore (swapper->device->device, semaphore, NULL);
+  if (cmd_data.cmd)
+    vkFreeCommandBuffers (swapper->device->device, swapper->device->cmd_pool,
+        1, &cmd_data.cmd);
+  if (cmd_data.fence)
+    vkDestroyFence (swapper->device->device, cmd_data.fence, NULL);
+  if (cmd_data.notify)
+    cmd_data.notify (cmd_data.data);
+  return TRUE;
+
+error:
+  {
+    if (semaphore)
+      vkDestroySemaphore (swapper->device->device, semaphore, NULL);
+    if (cmd_data.cmd)
+      vkFreeCommandBuffers (swapper->device->device, swapper->device->cmd_pool,
+          1, &cmd_data.cmd);
+    if (cmd_data.fence)
+      vkDestroyFence (swapper->device->device, cmd_data.fence, NULL);
+    if (cmd_data.notify)
+      cmd_data.notify (cmd_data.data);
+    return FALSE;
+  }
+}
+
+gboolean
+gst_vulkan_swapper_render_buffer (GstVulkanSwapper * swapper,
+    GstBuffer * buffer, GError ** error)
+{
+  GstMemory *mem;
+  gboolean ret;
+
+  mem = gst_buffer_peek_memory (buffer, 0);
+  if (!mem) {
+    g_set_error_literal (error, GST_VULKAN_ERROR, VK_ERROR_FORMAT_NOT_SUPPORTED,
+        "Buffer has no memory");
+    return FALSE;
+  }
+  if (!gst_is_vulkan_buffer_memory (mem)) {
+    g_set_error_literal (error, GST_VULKAN_ERROR, VK_ERROR_FORMAT_NOT_SUPPORTED,
+        "Incorrect memory type");
+    return FALSE;
+  }
+
+  RENDER_LOCK (swapper);
+  ret = _render_buffer_unlocked (swapper, buffer, error);
+  RENDER_UNLOCK (swapper);
+
+  return ret;
+}
+
+static void
+_on_window_draw (GstVulkanWindow * window, GstVulkanSwapper * swapper)
+{
+  GError *error = NULL;
+
+  RENDER_LOCK (swapper);
+  if (!swapper->current_buffer) {
+    RENDER_UNLOCK (swapper);
+    return;
+  }
+
+  /* TODO: perform some rate limiting of the number of redraw events */
+  if (!_render_buffer_unlocked (swapper, swapper->current_buffer, &error))
+    GST_ERROR_OBJECT (swapper, "Failed to redraw buffer %p %s",
+        swapper->current_buffer, error->message);
+  RENDER_UNLOCK (swapper);
+}
diff --git a/ext/vulkan/vkswapper.h b/ext/vulkan/vkswapper.h
new file mode 100644
index 0000000..0486036
--- /dev/null
+++ b/ext/vulkan/vkswapper.h
@@ -0,0 +1,104 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _VK_SWAPPER_H_
+#define _VK_SWAPPER_H_
+
+#include <gst/video/video.h>
+
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_VULKAN_SWAPPER         (gst_vulkan_swapper_get_type())
+#define GST_VULKAN_SWAPPER(o)           (G_TYPE_CHECK_INSTANCE_CAST((o), GST_TYPE_VULKAN_SWAPPER, GstVulkanSwapper))
+#define GST_VULKAN_SWAPPER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GST_TYPE_VULKAN_SWAPPER, GstVulkanSwapperClass))
+#define GST_IS_VULKAN_SWAPPER(o)        (G_TYPE_CHECK_INSTANCE_TYPE((o), GST_TYPE_VULKAN_SWAPPER))
+#define GST_IS_VULKAN_SWAPPER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE((k), GST_TYPE_VULKAN_SWAPPER))
+#define GST_VULKAN_SWAPPER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), GST_TYPE_VULKAN_SWAPPER, GstVulkanSwapperClass))
+GType gst_vulkan_swapper_get_type       (void);
+
+#define GST_VULKAN_SWAPPER_VIDEO_FORMATS " { RGBA, BGRA, RGB, BGR } "
+
+struct _GstVulkanSwapper
+{
+  GstObject parent;
+
+  GstVulkanDevice *device;
+  GstVulkanWindow *window;
+  GstVulkanQueue *queue;
+
+  VkSurfaceKHR    surface;
+
+  VkSurfaceCapabilitiesKHR surf_props;
+  VkSurfaceFormatKHR *surf_formats;
+  guint32 n_surf_formats;
+  VkPresentModeKHR *surf_present_modes;
+  guint32 n_surf_present_modes;
+
+  VkSwapchainKHR swap_chain;
+  GstVulkanImageMemory **swap_chain_images;
+  guint32 n_swap_chain_images;
+
+  GstCaps *caps;
+  GstVideoInfo v_info;
+
+  PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
+  PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR;
+  PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR;
+  PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR;
+  PFN_vkCreateSwapchainKHR CreateSwapchainKHR;
+  PFN_vkDestroySwapchainKHR DestroySwapchainKHR;
+  PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR;
+  PFN_vkAcquireNextImageKHR AcquireNextImageKHR;
+  PFN_vkQueuePresentKHR QueuePresentKHR;
+
+  /* <private> */
+  /* runtime variables */
+  gint to_quit;
+  GstBuffer *current_buffer;
+
+  /* signal handlers */
+  gulong close_id;
+  gulong draw_id;
+
+  GstVulkanSwapperPrivate *priv;
+};
+
+struct _GstVulkanSwapperClass
+{
+  GstObjectClass parent_class;
+};
+
+GstVulkanSwapper *  gst_vulkan_swapper_new                      (GstVulkanDevice * device,
+                                                                 GstVulkanWindow * window);
+
+GstCaps *           gst_vulkan_swapper_get_supported_caps       (GstVulkanSwapper * swapper,
+                                                                 GError ** error);
+gboolean            gst_vulkan_swapper_set_caps                 (GstVulkanSwapper * swapper,
+                                                                 GstCaps * caps,
+                                                                 GError ** error);
+gboolean            gst_vulkan_swapper_render_buffer            (GstVulkanSwapper * swapper,
+                                                                 GstBuffer * buffer,
+                                                                 GError ** error);
+
+G_END_DECLS
+
+#endif /* _VK_INSTANCE_H_ */
diff --git a/ext/vulkan/vkupload.c b/ext/vulkan/vkupload.c
new file mode 100644
index 0000000..95c36cf
--- /dev/null
+++ b/ext/vulkan/vkupload.c
@@ -0,0 +1,829 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:element-vulkanupload
+ *
+ * vulkanupload uploads data into Vulkan memory objects.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+
+#include "vkupload.h"
+
+GST_DEBUG_CATEGORY (gst_debug_vulkan_upload);
+#define GST_CAT_DEFAULT gst_debug_vulkan_upload
+
+static GstCaps *
+_set_caps_features_with_passthrough (const GstCaps * caps,
+    const gchar * feature_name, GstCapsFeatures * passthrough)
+{
+  guint i, j, m, n;
+  GstCaps *tmp;
+
+  tmp = gst_caps_copy (caps);
+
+  n = gst_caps_get_size (caps);
+  for (i = 0; i < n; i++) {
+    GstCapsFeatures *features, *orig_features;
+
+    orig_features = gst_caps_get_features (caps, i);
+    features = gst_caps_features_new (feature_name, NULL);
+
+    m = gst_caps_features_get_size (orig_features);
+    for (j = 0; j < m; j++) {
+      const gchar *feature = gst_caps_features_get_nth (orig_features, j);
+
+      /* if we already have the features */
+      if (gst_caps_features_contains (features, feature))
+        continue;
+
+      if (g_strcmp0 (feature, GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY) == 0)
+        continue;
+
+      if (passthrough && gst_caps_features_contains (passthrough, feature)) {
+        gst_caps_features_add (features, feature);
+      }
+    }
+
+    gst_caps_set_features (tmp, i, features);
+  }
+
+  return tmp;
+}
+
+struct BufferUpload
+{
+  GstVulkanUpload *upload;
+};
+
+static gpointer
+_buffer_new_impl (GstVulkanUpload * upload)
+{
+  struct BufferUpload *raw = g_new0 (struct BufferUpload, 1);
+
+  raw->upload = upload;
+
+  return raw;
+}
+
+static GstCaps *
+_buffer_transform_caps (gpointer impl, GstPadDirection direction,
+    GstCaps * caps)
+{
+  return gst_caps_ref (caps);
+}
+
+static gboolean
+_buffer_set_caps (gpointer impl, GstCaps * in_caps, GstCaps * out_caps)
+{
+  return TRUE;
+}
+
+static void
+_buffer_propose_allocation (gpointer impl, GstQuery * decide_query,
+    GstQuery * query)
+{
+  struct BufferUpload *raw = impl;
+  gboolean need_pool;
+  GstCaps *caps;
+  guint size;
+
+  gst_query_parse_allocation (query, &caps, &need_pool);
+
+  if (caps == NULL)
+    return;
+
+  if (need_pool) {
+    GstBufferPool *pool;
+    GstStructure *config;
+    GstVideoInfo info;
+
+    if (!gst_video_info_from_caps (&info, caps))
+      return;
+
+    /* the normal size of a frame */
+    size = info.size;
+
+    pool = gst_vulkan_buffer_pool_new (raw->upload->device);
+
+    config = gst_buffer_pool_get_config (pool);
+    gst_buffer_pool_config_set_params (config, caps, size, 0, 0);
+
+    if (!gst_buffer_pool_set_config (pool, config)) {
+      g_object_unref (pool);
+      return;
+    }
+
+    gst_query_add_allocation_pool (query, pool, size, 1, 0);
+    g_object_unref (pool);
+  }
+
+  return;
+}
+
+static GstFlowReturn
+_buffer_perform (gpointer impl, GstBuffer * inbuf, GstBuffer ** outbuf)
+{
+  if (!gst_is_vulkan_buffer_memory (gst_buffer_peek_memory (inbuf, 0)))
+    return GST_FLOW_ERROR;
+
+  *outbuf = inbuf;
+
+  return GST_FLOW_OK;
+}
+
+static void
+_buffer_free (gpointer impl)
+{
+  g_free (impl);
+}
+
+static GstStaticCaps _buffer_in_templ =
+GST_STATIC_CAPS ("video/x-raw(" GST_CAPS_FEATURE_MEMORY_VULKAN_BUFFER ")");
+static GstStaticCaps _buffer_out_templ =
+GST_STATIC_CAPS ("video/x-raw(" GST_CAPS_FEATURE_MEMORY_VULKAN_BUFFER ")");
+
+static const struct UploadMethod buffer_upload = {
+  "VulkanBuffer",
+  &_buffer_in_templ,
+  &_buffer_out_templ,
+  _buffer_new_impl,
+  _buffer_transform_caps,
+  _buffer_set_caps,
+  _buffer_propose_allocation,
+  _buffer_perform,
+  _buffer_free,
+};
+
+struct RawToBufferUpload
+{
+  GstVulkanUpload *upload;
+
+  GstVideoInfo in_info;
+  GstVideoInfo out_info;
+
+  GstBufferPool *pool;
+  gboolean pool_active;
+
+  gsize alloc_sizes[GST_VIDEO_MAX_PLANES];
+};
+
+static gpointer
+_raw_to_buffer_new_impl (GstVulkanUpload * upload)
+{
+  struct RawToBufferUpload *raw = g_new0 (struct RawToBufferUpload, 1);
+
+  raw->upload = upload;
+
+  return raw;
+}
+
+static GstCaps *
+_raw_to_buffer_transform_caps (gpointer impl, GstPadDirection direction,
+    GstCaps * caps)
+{
+  GstCaps *ret;
+
+  if (direction == GST_PAD_SINK) {
+    ret =
+        _set_caps_features_with_passthrough (caps,
+        GST_CAPS_FEATURE_MEMORY_VULKAN_BUFFER, NULL);
+  } else {
+    ret =
+        _set_caps_features_with_passthrough (caps,
+        GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY, NULL);
+  }
+
+  return ret;
+}
+
+static gboolean
+_raw_to_buffer_set_caps (gpointer impl, GstCaps * in_caps, GstCaps * out_caps)
+{
+  struct RawToBufferUpload *raw = impl;
+  guint out_width, out_height;
+  guint i;
+
+  if (!gst_video_info_from_caps (&raw->in_info, in_caps))
+    return FALSE;
+
+  if (!gst_video_info_from_caps (&raw->out_info, out_caps))
+    return FALSE;
+
+  out_width = GST_VIDEO_INFO_WIDTH (&raw->out_info);
+  out_height = GST_VIDEO_INFO_HEIGHT (&raw->out_info);
+
+  for (i = 0; i < GST_VIDEO_INFO_N_PLANES (&raw->out_info); i++) {
+    GstVideoFormat v_format = GST_VIDEO_INFO_FORMAT (&raw->out_info);
+    GstVulkanImageMemory *img_mem;
+    VkFormat vk_format;
+
+    vk_format = gst_vulkan_format_from_video_format (v_format, i);
+
+    img_mem = (GstVulkanImageMemory *)
+        gst_vulkan_image_memory_alloc (raw->upload->device, vk_format,
+        out_width, out_height, VK_IMAGE_TILING_OPTIMAL,
+        VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
+        VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
+
+    raw->alloc_sizes[i] = img_mem->requirements.size;
+
+    gst_memory_unref (GST_MEMORY_CAST (img_mem));
+  }
+
+  return TRUE;
+}
+
+static void
+_raw_to_buffer_propose_allocation (gpointer impl, GstQuery * decide_query,
+    GstQuery * query)
+{
+  /* a little trickery with the impl pointer */
+  _buffer_propose_allocation (impl, decide_query, query);
+}
+
+static GstFlowReturn
+_raw_to_buffer_perform (gpointer impl, GstBuffer * inbuf, GstBuffer ** outbuf)
+{
+  struct RawToBufferUpload *raw = impl;
+  GstVideoFrame v_frame;
+  GstFlowReturn ret;
+  guint i;
+
+  if (!raw->pool) {
+    GstStructure *config;
+    guint min = 0, max = 0;
+    gsize size = 1;
+
+    raw->pool = gst_vulkan_buffer_pool_new (raw->upload->device);
+    config = gst_buffer_pool_get_config (raw->pool);
+    gst_buffer_pool_config_set_params (config, raw->upload->out_caps, size, min,
+        max);
+    gst_buffer_pool_set_config (raw->pool, config);
+  }
+  if (!raw->pool_active) {
+    gst_buffer_pool_set_active (raw->pool, TRUE);
+    raw->pool_active = TRUE;
+  }
+
+  if ((ret =
+          gst_buffer_pool_acquire_buffer (raw->pool, outbuf,
+              NULL)) != GST_FLOW_OK)
+    goto out;
+
+  if (!gst_video_frame_map (&v_frame, &raw->in_info, inbuf, GST_MAP_READ)) {
+    GST_ELEMENT_ERROR (raw->upload, RESOURCE, NOT_FOUND,
+        ("%s", "Failed to map input buffer"), NULL);
+    return GST_FLOW_ERROR;
+  }
+
+  for (i = 0; i < GST_VIDEO_INFO_N_PLANES (&raw->out_info); i++) {
+    GstMapInfo map_info;
+    gsize plane_size;
+    GstMemory *mem;
+
+    mem = gst_buffer_peek_memory (*outbuf, i);
+    if (!gst_memory_map (GST_MEMORY_CAST (mem), &map_info, GST_MAP_WRITE)) {
+      GST_ELEMENT_ERROR (raw->upload, RESOURCE, NOT_FOUND,
+          ("%s", "Failed to map output memory"), NULL);
+      gst_buffer_unref (*outbuf);
+      *outbuf = NULL;
+      ret = GST_FLOW_ERROR;
+      goto out;
+    }
+
+    plane_size =
+        GST_VIDEO_INFO_PLANE_STRIDE (&raw->out_info,
+        i) * GST_VIDEO_INFO_COMP_HEIGHT (&raw->out_info, i);
+    g_assert (plane_size < map_info.size);
+    memcpy (map_info.data, v_frame.data[i], plane_size);
+
+    gst_memory_unmap (GST_MEMORY_CAST (mem), &map_info);
+  }
+
+  gst_video_frame_unmap (&v_frame);
+
+  ret = GST_FLOW_OK;
+
+out:
+  return ret;
+}
+
+static void
+_raw_to_buffer_free (gpointer impl)
+{
+  struct RawToBufferUpload *raw = impl;
+
+  if (raw->pool) {
+    if (raw->pool_active) {
+      gst_buffer_pool_set_active (raw->pool, FALSE);
+    }
+    raw->pool_active = FALSE;
+    gst_object_unref (raw->pool);
+    raw->pool = NULL;
+  }
+
+  g_free (impl);
+}
+
+static GstStaticCaps _raw_to_buffer_in_templ = GST_STATIC_CAPS ("video/x-raw");
+static GstStaticCaps _raw_to_buffer_out_templ =
+GST_STATIC_CAPS ("video/x-raw(" GST_CAPS_FEATURE_MEMORY_VULKAN_BUFFER ")");
+
+static const struct UploadMethod raw_to_buffer_upload = {
+  "RawToVulkanBuffer",
+  &_raw_to_buffer_in_templ,
+  &_raw_to_buffer_out_templ,
+  _raw_to_buffer_new_impl,
+  _raw_to_buffer_transform_caps,
+  _raw_to_buffer_set_caps,
+  _raw_to_buffer_propose_allocation,
+  _raw_to_buffer_perform,
+  _raw_to_buffer_free,
+};
+
+static const struct UploadMethod *upload_methods[] = {
+  &buffer_upload,
+  &raw_to_buffer_upload,
+};
+
+static GstCaps *
+_get_input_template_caps (void)
+{
+  GstCaps *ret = NULL;
+  gint i;
+
+  /* FIXME: cache this and invalidate on changes to upload_methods */
+  for (i = 0; i < G_N_ELEMENTS (upload_methods); i++) {
+    GstCaps *template = gst_static_caps_get (upload_methods[i]->in_template);
+    ret = ret == NULL ? template : gst_caps_merge (ret, template);
+  }
+
+  ret = gst_caps_simplify (ret);
+
+  return ret;
+}
+
+static GstCaps *
+_get_output_template_caps (void)
+{
+  GstCaps *ret = NULL;
+  gint i;
+
+  /* FIXME: cache this and invalidate on changes to upload_methods */
+  for (i = 0; i < G_N_ELEMENTS (upload_methods); i++) {
+    GstCaps *template = gst_static_caps_get (upload_methods[i]->out_template);
+    ret = ret == NULL ? template : gst_caps_merge (ret, template);
+  }
+
+  ret = gst_caps_simplify (ret);
+
+  return ret;
+}
+
+static void gst_vulkan_upload_finalize (GObject * object);
+static void gst_vulkan_upload_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * param_spec);
+static void gst_vulkan_upload_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * param_spec);
+
+static gboolean gst_vulkan_upload_query (GstBaseTransform * bt,
+    GstPadDirection direction, GstQuery * query);
+static void gst_vulkan_upload_set_context (GstElement * element,
+    GstContext * context);
+static GstStateChangeReturn gst_vulkan_upload_change_state (GstElement *
+    element, GstStateChange transition);
+
+static gboolean gst_vulkan_upload_set_caps (GstBaseTransform * bt,
+    GstCaps * in_caps, GstCaps * out_caps);
+static GstCaps *gst_vulkan_upload_transform_caps (GstBaseTransform * bt,
+    GstPadDirection direction, GstCaps * caps, GstCaps * filter);
+static gboolean gst_vulkan_upload_propose_allocation (GstBaseTransform * bt,
+    GstQuery * decide_query, GstQuery * query);
+static gboolean gst_vulkan_upload_decide_allocation (GstBaseTransform * bt,
+    GstQuery * query);
+static GstFlowReturn gst_vulkan_upload_transform (GstBaseTransform * bt,
+    GstBuffer * inbuf, GstBuffer * outbuf);
+static GstFlowReturn gst_vulkan_upload_prepare_output_buffer (GstBaseTransform *
+    bt, GstBuffer * inbuf, GstBuffer ** outbuf);
+
+enum
+{
+  PROP_0,
+};
+
+enum
+{
+  SIGNAL_0,
+  LAST_SIGNAL
+};
+
+/* static guint gst_vulkan_upload_signals[LAST_SIGNAL] = { 0 }; */
+
+#define gst_vulkan_upload_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstVulkanUpload, gst_vulkan_upload,
+    GST_TYPE_BASE_TRANSFORM, GST_DEBUG_CATEGORY_INIT (gst_debug_vulkan_upload,
+        "vulkanupload", 0, "Vulkan Uploader"));
+
+static void
+gst_vulkan_upload_class_init (GstVulkanUploadClass * klass)
+{
+  GObjectClass *gobject_class;
+  GstElementClass *gstelement_class;
+  GstBaseTransformClass *gstbasetransform_class;
+
+  gobject_class = (GObjectClass *) klass;
+  gstelement_class = (GstElementClass *) klass;
+  gstbasetransform_class = (GstBaseTransformClass *) klass;
+
+  gobject_class->set_property = gst_vulkan_upload_set_property;
+  gobject_class->get_property = gst_vulkan_upload_get_property;
+
+  gst_element_class_set_metadata (gstelement_class, "Vulkan Uploader",
+      "Filter/Video", "A Vulkan data uploader",
+      "Matthew Waters <matthew@centricular.com>");
+
+  {
+    GstCaps *caps;
+
+    caps = _get_input_template_caps ();
+    gst_element_class_add_pad_template (gstelement_class,
+        gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, caps));
+    gst_caps_unref (caps);
+
+    caps = _get_output_template_caps ();
+    gst_element_class_add_pad_template (gstelement_class,
+        gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, caps));
+    gst_caps_unref (caps);
+  }
+
+  gobject_class->finalize = gst_vulkan_upload_finalize;
+
+  gstelement_class->change_state = gst_vulkan_upload_change_state;
+  gstelement_class->set_context = gst_vulkan_upload_set_context;
+  gstbasetransform_class->query = GST_DEBUG_FUNCPTR (gst_vulkan_upload_query);
+  gstbasetransform_class->set_caps = gst_vulkan_upload_set_caps;
+  gstbasetransform_class->transform_caps = gst_vulkan_upload_transform_caps;
+  gstbasetransform_class->propose_allocation =
+      gst_vulkan_upload_propose_allocation;
+  gstbasetransform_class->decide_allocation =
+      gst_vulkan_upload_decide_allocation;
+  gstbasetransform_class->transform = gst_vulkan_upload_transform;
+  gstbasetransform_class->prepare_output_buffer =
+      gst_vulkan_upload_prepare_output_buffer;
+}
+
+static void
+gst_vulkan_upload_init (GstVulkanUpload * vk_upload)
+{
+  guint i, n;
+
+  n = G_N_ELEMENTS (upload_methods);
+  vk_upload->upload_impls = g_malloc (sizeof (gpointer) * n);
+  for (i = 0; i < n; i++) {
+    vk_upload->upload_impls[i] = upload_methods[i]->new_impl (vk_upload);
+  }
+}
+
+static void
+gst_vulkan_upload_finalize (GObject * object)
+{
+  GstVulkanUpload *vk_upload = GST_VULKAN_UPLOAD (object);
+  guint i;
+
+  gst_caps_replace (&vk_upload->in_caps, NULL);
+  gst_caps_replace (&vk_upload->out_caps, NULL);
+
+  for (i = 0; i < G_N_ELEMENTS (upload_methods); i++) {
+    upload_methods[i]->free (vk_upload->upload_impls[i]);
+  }
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_vulkan_upload_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+//  GstVulkanUpload *vk_upload = GST_VULKAN_UPLOAD (object);
+
+  switch (prop_id) {
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_vulkan_upload_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+//  GstVulkanUpload *vk_upload = GST_VULKAN_UPLOAD (object);
+
+  switch (prop_id) {
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static gboolean
+gst_vulkan_upload_query (GstBaseTransform * bt, GstPadDirection direction,
+    GstQuery * query)
+{
+  GstVulkanUpload *vk_upload = GST_VULKAN_UPLOAD (bt);
+  gboolean res = FALSE;
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_CONTEXT:{
+      res = gst_vulkan_handle_context_query (GST_ELEMENT (vk_upload), query,
+          &vk_upload->display, &vk_upload->instance, &vk_upload->device);
+
+      if (res)
+        return res;
+      break;
+    }
+    default:
+      break;
+  }
+
+  return GST_BASE_TRANSFORM_CLASS (parent_class)->query (bt, direction, query);
+}
+
+static void
+gst_vulkan_upload_set_context (GstElement * element, GstContext * context)
+{
+  GstVulkanUpload *vk_upload = GST_VULKAN_UPLOAD (element);
+
+  gst_vulkan_handle_set_context (element, context, &vk_upload->display,
+      &vk_upload->instance);
+
+  GST_ELEMENT_CLASS (parent_class)->set_context (element, context);
+}
+
+static GstStateChangeReturn
+gst_vulkan_upload_change_state (GstElement * element, GstStateChange transition)
+{
+  GstVulkanUpload *vk_upload = GST_VULKAN_UPLOAD (element);
+  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
+
+  GST_DEBUG ("changing state: %s => %s",
+      gst_element_state_get_name (GST_STATE_TRANSITION_CURRENT (transition)),
+      gst_element_state_get_name (GST_STATE_TRANSITION_NEXT (transition)));
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+      break;
+    case GST_STATE_CHANGE_READY_TO_PAUSED:
+      if (!gst_vulkan_ensure_element_data (element, &vk_upload->display,
+              &vk_upload->instance)) {
+        GST_ELEMENT_ERROR (vk_upload, RESOURCE, NOT_FOUND,
+            ("Failed to retreive vulkan instance/display"), (NULL));
+        return GST_STATE_CHANGE_FAILURE;
+      }
+      if (!gst_vulkan_device_run_context_query (GST_ELEMENT (vk_upload),
+              &vk_upload->device)) {
+        GST_ELEMENT_ERROR (vk_upload, RESOURCE, NOT_FOUND,
+            ("Failed to retreive vulkan device"), (NULL));
+        return GST_STATE_CHANGE_FAILURE;
+      }
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
+      break;
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+  if (ret == GST_STATE_CHANGE_FAILURE)
+    return ret;
+
+  switch (transition) {
+    case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
+      break;
+    case GST_STATE_CHANGE_PAUSED_TO_READY:
+      if (vk_upload->display)
+        gst_object_unref (vk_upload->display);
+      vk_upload->display = NULL;
+      if (vk_upload->device)
+        gst_object_unref (vk_upload->device);
+      vk_upload->device = NULL;
+      if (vk_upload->instance)
+        gst_object_unref (vk_upload->instance);
+      vk_upload->instance = NULL;
+      break;
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      break;
+    default:
+      break;
+  }
+
+  return ret;
+}
+
+static GstCaps *
+gst_vulkan_upload_transform_caps (GstBaseTransform * bt,
+    GstPadDirection direction, GstCaps * caps, GstCaps * filter)
+{
+  GstVulkanUpload *vk_upload = GST_VULKAN_UPLOAD (bt);
+  GstCaps *result, *tmp;
+  gint i;
+
+  tmp = gst_caps_new_empty ();
+
+  for (i = 0; i < G_N_ELEMENTS (upload_methods); i++) {
+    GstCaps *tmp2;
+    GstCaps *templ;
+
+    if (direction == GST_PAD_SINK) {
+      templ = gst_static_caps_get (upload_methods[i]->in_template);
+    } else {
+      templ = gst_static_caps_get (upload_methods[i]->out_template);
+    }
+    if (!gst_caps_can_intersect (caps, templ)) {
+      gst_caps_unref (templ);
+      continue;
+    }
+    gst_caps_unref (templ);
+
+    tmp2 = upload_methods[i]->transform_caps (vk_upload->upload_impls[i],
+        direction, caps);
+
+    if (tmp2)
+      tmp = gst_caps_merge (tmp, tmp2);
+  }
+
+  if (filter) {
+    result = gst_caps_intersect_full (filter, tmp, GST_CAPS_INTERSECT_FIRST);
+    gst_caps_unref (tmp);
+  } else {
+    result = tmp;
+  }
+
+  return result;
+}
+
+static gboolean
+gst_vulkan_upload_set_caps (GstBaseTransform * bt, GstCaps * in_caps,
+    GstCaps * out_caps)
+{
+  GstVulkanUpload *vk_upload = GST_VULKAN_UPLOAD (bt);
+  gboolean found_method = FALSE;
+  guint i;
+
+  gst_caps_replace (&vk_upload->in_caps, in_caps);
+  gst_caps_replace (&vk_upload->out_caps, out_caps);
+
+  for (i = 0; i < G_N_ELEMENTS (upload_methods); i++) {
+    GstCaps *templ;
+
+    templ = gst_static_caps_get (upload_methods[i]->in_template);
+    if (!gst_caps_can_intersect (in_caps, templ)) {
+      gst_caps_unref (templ);
+      continue;
+    }
+    gst_caps_unref (templ);
+
+    templ = gst_static_caps_get (upload_methods[i]->out_template);
+    if (!gst_caps_can_intersect (out_caps, templ)) {
+      gst_caps_unref (templ);
+      continue;
+    }
+    gst_caps_unref (templ);
+
+    if (!upload_methods[i]->set_caps (vk_upload->upload_impls[i], in_caps,
+            out_caps))
+      continue;
+
+    GST_LOG_OBJECT (bt, "uploader %s accepted caps in: %" GST_PTR_FORMAT
+        " out: %" GST_PTR_FORMAT, upload_methods[i]->name, in_caps, out_caps);
+
+    vk_upload->current_impl = i;
+    found_method = TRUE;
+    break;
+  }
+
+  GST_DEBUG_OBJECT (bt,
+      "set caps in: %" GST_PTR_FORMAT " out: %" GST_PTR_FORMAT, in_caps,
+      out_caps);
+
+  return found_method;
+}
+
+static gboolean
+gst_vulkan_upload_propose_allocation (GstBaseTransform * bt,
+    GstQuery * decide_query, GstQuery * query)
+{
+  GstVulkanUpload *vk_upload = GST_VULKAN_UPLOAD (bt);
+  guint i;
+
+  for (i = 0; i < G_N_ELEMENTS (upload_methods); i++) {
+    GstCaps *templ;
+
+    templ = gst_static_caps_get (upload_methods[i]->in_template);
+    if (!gst_caps_can_intersect (vk_upload->in_caps, templ)) {
+      gst_caps_unref (templ);
+      continue;
+    }
+    gst_caps_unref (templ);
+
+    templ = gst_static_caps_get (upload_methods[i]->out_template);
+    if (!gst_caps_can_intersect (vk_upload->out_caps, templ)) {
+      gst_caps_unref (templ);
+      continue;
+    }
+    gst_caps_unref (templ);
+
+    upload_methods[i]->propose_allocation (vk_upload->upload_impls[i],
+        decide_query, query);
+  }
+
+  return TRUE;
+}
+
+static gboolean
+gst_vulkan_upload_decide_allocation (GstBaseTransform * bt, GstQuery * query)
+{
+  return TRUE;
+}
+
+static gboolean
+_upload_find_method (GstVulkanUpload * vk_upload)
+{
+  vk_upload->current_impl++;
+
+  if (vk_upload->current_impl > G_N_ELEMENTS (upload_methods))
+    return FALSE;
+
+  GST_DEBUG_OBJECT (vk_upload, "attempting upload with uploader %s",
+      upload_methods[vk_upload->current_impl]->name);
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_vulkan_upload_prepare_output_buffer (GstBaseTransform * bt,
+    GstBuffer * inbuf, GstBuffer ** outbuf)
+{
+  GstVulkanUpload *vk_upload = GST_VULKAN_UPLOAD (bt);
+  GstFlowReturn ret;
+
+  do {
+    gpointer method_impl;
+    const struct UploadMethod *method;
+
+    method = upload_methods[vk_upload->current_impl];
+    method_impl = vk_upload->upload_impls[vk_upload->current_impl];
+
+    ret = method->perform (method_impl, inbuf, outbuf);
+    if (ret != GST_FLOW_OK) {
+      do {
+        if (!_upload_find_method (vk_upload)) {
+          GST_ELEMENT_ERROR (bt, RESOURCE, NOT_FOUND,
+              ("Could not find suitable uploader"), (NULL));
+          return GST_FLOW_ERROR;
+        }
+
+        method = upload_methods[vk_upload->current_impl];
+        method_impl = vk_upload->upload_impls[vk_upload->current_impl];
+        if (!method->set_caps (method_impl, vk_upload->in_caps,
+                vk_upload->out_caps))
+          /* try the next method */
+          continue;
+      } while (FALSE);
+      /* try the uploading with the next method */
+      continue;
+    }
+  } while (FALSE);
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_vulkan_upload_transform (GstBaseTransform * bt, GstBuffer * inbuf,
+    GstBuffer * outbuf)
+{
+  return GST_FLOW_OK;
+}
diff --git a/ext/vulkan/vkupload.h b/ext/vulkan/vkupload.h
new file mode 100644
index 0000000..8ea3d72
--- /dev/null
+++ b/ext/vulkan/vkupload.h
@@ -0,0 +1,88 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _VK_UPLOAD_H_
+#define _VK_UPLOAD_H_
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_VULKAN_UPLOAD            (gst_vulkan_upload_get_type())
+#define GST_VULKAN_UPLOAD(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VULKAN_UPLOAD,GstVulkanUpload))
+#define GST_VULKAN_UPLOAD_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_VULKAN_UPLOAD,GstVulkanUploadClass))
+#define GST_IS_VULKAN_UPLOAD(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VULKAN_UPLOAD))
+#define GST_IS_VULKAN_UPLOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_VULKAN_UPLOAD))
+
+typedef struct _GstVulkanUpload GstVulkanUpload;
+typedef struct _GstVulkanUploadClass GstVulkanUploadClass;
+
+struct UploadMethod
+{
+  const gchar       *name;
+
+  GstStaticCaps     *in_template;
+  GstStaticCaps     *out_template;
+
+  gpointer          (*new_impl)                 (GstVulkanUpload * upload);
+  GstCaps *         (*transform_caps)           (gpointer impl,
+                                                 GstPadDirection direction,
+                                                 GstCaps * caps);
+  gboolean          (*set_caps)                 (gpointer impl,
+                                                 GstCaps * in_caps,
+                                                 GstCaps * out_caps);
+  void              (*propose_allocation)       (gpointer impl,
+                                                 GstQuery * decide_query,
+                                                 GstQuery * query);
+  GstFlowReturn     (*perform)                  (gpointer impl,
+                                                 GstBuffer * buffer,
+                                                 GstBuffer ** outbuf);
+  void              (*free)                     (gpointer impl);
+};
+
+struct _GstVulkanUpload
+{
+  GstBaseTransform      parent;
+
+  GstVulkanInstance     *instance;
+  GstVulkanDevice       *device;
+
+  GstVulkanDisplay      *display;
+
+  GstCaps               *in_caps;
+  GstCaps               *out_caps;
+
+  /* all impl pointers */
+  gpointer              *upload_impls;
+  guint                 current_impl;
+};
+
+struct _GstVulkanUploadClass
+{
+  GstBaseTransformClass video_sink_class;
+};
+
+GType gst_vulkan_upload_get_type(void);
+
+G_END_DECLS
+
+#endif
diff --git a/ext/vulkan/vkutils.c b/ext/vulkan/vkutils.c
new file mode 100644
index 0000000..101f7d1
--- /dev/null
+++ b/ext/vulkan/vkutils.c
@@ -0,0 +1,324 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vkutils.h"
+#include "vkutils_private.h"
+
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_CONTEXT);
+
+gboolean
+_check_for_all_layers (uint32_t check_count, const char **check_names,
+    uint32_t layer_count, VkLayerProperties * layers)
+{
+  uint32_t i, j;
+
+  for (i = 0; i < check_count; i++) {
+    gboolean found = FALSE;
+    for (j = 0; j < layer_count; j++) {
+      if (g_strcmp0 (check_names[i], layers[j].layerName) == 0) {
+        found = TRUE;
+      }
+    }
+    if (!found) {
+      GST_ERROR ("Cannot find layer: %s", check_names[i]);
+      return FALSE;
+    }
+  }
+  return TRUE;
+}
+
+static void
+_init_context_debug (void)
+{
+#ifndef GST_DISABLE_GST_DEBUG
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    GST_DEBUG_CATEGORY_GET (GST_CAT_CONTEXT, "GST_CONTEXT");
+    g_once_init_leave (&_init, 1);
+  }
+#endif
+}
+
+static gboolean
+_vk_pad_query (const GValue * item, GValue * value, gpointer user_data)
+{
+  GstPad *pad = g_value_get_object (item);
+  GstQuery *query = user_data;
+  gboolean res;
+
+  _init_context_debug ();
+
+  res = gst_pad_peer_query (pad, query);
+
+  if (res) {
+    g_value_set_boolean (value, TRUE);
+    return FALSE;
+  }
+
+  GST_CAT_INFO_OBJECT (GST_CAT_CONTEXT, pad, "pad peer query failed");
+  return TRUE;
+}
+
+gboolean
+gst_vulkan_run_query (GstElement * element, GstQuery * query,
+    GstPadDirection direction)
+{
+  GstIterator *it;
+  GstIteratorFoldFunction func = _vk_pad_query;
+  GValue res = { 0 };
+
+  g_value_init (&res, G_TYPE_BOOLEAN);
+  g_value_set_boolean (&res, FALSE);
+
+  /* Ask neighbor */
+  if (direction == GST_PAD_SRC)
+    it = gst_element_iterate_src_pads (element);
+  else
+    it = gst_element_iterate_sink_pads (element);
+
+  while (gst_iterator_fold (it, func, &res, query) == GST_ITERATOR_RESYNC)
+    gst_iterator_resync (it);
+
+  gst_iterator_free (it);
+
+  return g_value_get_boolean (&res);
+}
+
+void
+gst_vulkan_global_context_query (GstElement * element,
+    const gchar * context_type)
+{
+  GstQuery *query;
+  GstMessage *msg;
+
+  if ((query = gst_vulkan_local_context_query (element, context_type, TRUE))) {
+    gst_query_unref (query);
+    return;
+  }
+
+  /* 3) Post a GST_MESSAGE_NEED_CONTEXT message on the bus with
+   *    the required context type and afterwards check if a
+   *    usable context was set now as in 1). The message could
+   *    be handled by the parent bins of the element and the
+   *    application.
+   */
+  GST_CAT_INFO_OBJECT (GST_CAT_CONTEXT, element,
+      "posting need context message");
+  msg = gst_message_new_need_context (GST_OBJECT_CAST (element), context_type);
+  gst_element_post_message (element, msg);
+
+  /*
+   * Whomever responds to the need-context message performs a
+   * GstElement::set_context() with the required context in which the element
+   * is required to update the display_ptr or call gst_vulkan_handle_set_context().
+   */
+}
+
+GstQuery *
+gst_vulkan_local_context_query (GstElement * element,
+    const gchar * context_type, gboolean set_context)
+{
+  GstQuery *query;
+  GstContext *ctxt;
+
+  _init_context_debug ();
+
+  /*  2a) Query downstream with GST_QUERY_CONTEXT for the context and
+   *      check if downstream already has a context of the specific type
+   *  2b) Query upstream as above.
+   */
+  query = gst_query_new_context (context_type);
+  if (gst_vulkan_run_query (element, query, GST_PAD_SRC)) {
+    gst_query_parse_context (query, &ctxt);
+    GST_CAT_INFO_OBJECT (GST_CAT_CONTEXT, element,
+        "found context (%p) in downstream query", ctxt);
+    if (set_context)
+      gst_element_set_context (element, ctxt);
+  } else if (gst_vulkan_run_query (element, query, GST_PAD_SINK)) {
+    gst_query_parse_context (query, &ctxt);
+    GST_CAT_INFO_OBJECT (GST_CAT_CONTEXT, element,
+        "found context (%p) in upstream query", ctxt);
+    if (set_context)
+      gst_element_set_context (element, ctxt);
+  } else {
+    gst_query_unref (query);
+    query = NULL;
+  }
+
+  return query;
+}
+
+static void
+_vk_display_context_query (GstElement * element,
+    GstVulkanDisplay ** display_ptr)
+{
+  gst_vulkan_global_context_query (element,
+      GST_VULKAN_DISPLAY_CONTEXT_TYPE_STR);
+}
+
+/*  4) Create a context by itself and post a GST_MESSAGE_HAVE_CONTEXT
+ *     message.
+ */
+/*
+ * @element: (transfer none):
+ * @context: (transfer full):
+ */
+static void
+_vk_context_propagate (GstElement * element, GstContext * context)
+{
+  GstMessage *msg;
+
+  _init_context_debug ();
+
+  gst_element_set_context (element, context);
+
+  GST_CAT_INFO_OBJECT (GST_CAT_CONTEXT, element,
+      "posting have context (%" GST_PTR_FORMAT ") message", context);
+  msg = gst_message_new_have_context (GST_OBJECT_CAST (element), context);
+  gst_element_post_message (GST_ELEMENT_CAST (element), msg);
+}
+
+gboolean
+gst_vulkan_ensure_element_data (gpointer element,
+    GstVulkanDisplay ** display_ptr, GstVulkanInstance ** instance_ptr)
+{
+  g_return_val_if_fail (element != NULL, FALSE);
+  g_return_val_if_fail (display_ptr != NULL, FALSE);
+  g_return_val_if_fail (instance_ptr != NULL, FALSE);
+
+  /*  1) Check if the element already has a context of the specific
+   *     type.
+   */
+  if (!*instance_ptr) {
+    GError *error = NULL;
+
+    gst_vulkan_global_context_query (element,
+        GST_VULKAN_INSTANCE_CONTEXT_TYPE_STR);
+
+    /* Neighbour found and it updated the display */
+    if (!*instance_ptr) {
+      GstContext *context;
+
+      /* If no neighboor, or application not interested, use system default */
+      *instance_ptr = gst_vulkan_instance_new ();
+
+      context = gst_context_new (GST_VULKAN_INSTANCE_CONTEXT_TYPE_STR, TRUE);
+      gst_context_set_vulkan_instance (context, *instance_ptr);
+
+      _vk_context_propagate (element, context);
+    }
+
+    if (!gst_vulkan_instance_open (*instance_ptr, &error)) {
+      GST_ELEMENT_ERROR (element, RESOURCE, NOT_FOUND,
+          ("Failed to create vulkan instance"), ("%s", error->message));
+      return FALSE;
+    }
+  }
+
+  if (!*display_ptr) {
+    _vk_display_context_query (element, display_ptr);
+
+    /* Neighbour found and it updated the display */
+    if (!*display_ptr) {
+      GstContext *context;
+
+      /* instance is required before the display */
+      g_return_val_if_fail (*instance_ptr != NULL, FALSE);
+
+      /* If no neighboor, or application not interested, use system default */
+      *display_ptr = gst_vulkan_display_new (*instance_ptr);
+
+      context = gst_context_new (GST_VULKAN_DISPLAY_CONTEXT_TYPE_STR, TRUE);
+      gst_context_set_vulkan_display (context, *display_ptr);
+
+      _vk_context_propagate (element, context);
+    }
+  }
+
+  return *display_ptr != NULL && *instance_ptr != NULL;
+}
+
+gboolean
+gst_vulkan_handle_set_context (GstElement * element, GstContext * context,
+    GstVulkanDisplay ** display, GstVulkanInstance ** instance)
+{
+  GstVulkanDisplay *display_replacement = NULL;
+  GstVulkanInstance *instance_replacement = NULL;
+  const gchar *context_type;
+
+  g_return_val_if_fail (display != NULL, FALSE);
+  g_return_val_if_fail (instance != NULL, FALSE);
+
+  if (!context)
+    return FALSE;
+
+  context_type = gst_context_get_context_type (context);
+
+  if (g_strcmp0 (context_type, GST_VULKAN_DISPLAY_CONTEXT_TYPE_STR) == 0) {
+    if (!gst_context_get_vulkan_display (context, &display_replacement)) {
+      GST_WARNING_OBJECT (element, "Failed to get display from context");
+      return FALSE;
+    }
+  } else if (g_strcmp0 (context_type,
+          GST_VULKAN_INSTANCE_CONTEXT_TYPE_STR) == 0) {
+    if (!gst_context_get_vulkan_instance (context, &instance_replacement)) {
+      GST_WARNING_OBJECT (element, "Failed to get instance from context");
+      return FALSE;
+    }
+  }
+
+  if (display_replacement) {
+    GstVulkanDisplay *old = *display;
+    *display = display_replacement;
+
+    if (old)
+      gst_object_unref (old);
+  }
+
+  if (instance_replacement) {
+    GstVulkanInstance *old = *instance;
+    *instance = instance_replacement;
+
+    if (old)
+      gst_object_unref (old);
+  }
+
+  return TRUE;
+}
+
+gboolean
+gst_vulkan_handle_context_query (GstElement * element, GstQuery * query,
+    GstVulkanDisplay ** display, GstVulkanInstance ** instance,
+    GstVulkanDevice ** device)
+{
+  if (gst_vulkan_display_handle_context_query (element, query, display))
+    return TRUE;
+  if (gst_vulkan_instance_handle_context_query (element, query, instance))
+    return TRUE;
+  if (gst_vulkan_device_handle_context_query (element, query, device))
+    return TRUE;
+
+  return FALSE;
+}
diff --git a/ext/vulkan/vkutils.h b/ext/vulkan/vkutils.h
new file mode 100644
index 0000000..04f6395
--- /dev/null
+++ b/ext/vulkan/vkutils.h
@@ -0,0 +1,42 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#ifndef _VK_UTILS_H_
+#define _VK_UTILS_H_
+
+#include <gst/gst.h>
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+gboolean gst_vulkan_ensure_element_data (gpointer element,
+    GstVulkanDisplay **display_ptr, GstVulkanInstance ** instance_ptr);
+gboolean gst_vulkan_handle_set_context (GstElement * element, GstContext * context,
+    GstVulkanDisplay ** display, GstVulkanInstance ** instance);
+gboolean gst_vulkan_handle_context_query (GstElement * element, GstQuery * query,
+    GstVulkanDisplay ** display, GstVulkanInstance ** instance, GstVulkanDevice ** device);
+
+void gst_vulkan_global_context_query (GstElement * element, const gchar * context_type);
+GstQuery * gst_vulkan_local_context_query (GstElement * element, const gchar * context_type, gboolean set_context);
+gboolean gst_vulkan_run_query (GstElement * element,
+    GstQuery * query, GstPadDirection direction);
+
+G_END_DECLS
+
+#endif /*_VK_UTILS_H_ */
diff --git a/ext/vulkan/vkutils_private.h b/ext/vulkan/vkutils_private.h
new file mode 100644
index 0000000..aebf44b
--- /dev/null
+++ b/ext/vulkan/vkutils_private.h
@@ -0,0 +1,33 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#ifndef _VK_UTILS_PRIVATE_H_
+#define _VK_UTILS_PRIVATE_H_
+
+#include <gst/gst.h>
+#include "vk.h"
+
+G_BEGIN_DECLS
+
+gboolean _check_for_all_layers (uint32_t check_count, const char ** check_names,
+    uint32_t layer_count, VkLayerProperties * layers);
+
+G_END_DECLS
+
+#endif /*_VK_UTILS_H_ */
diff --git a/ext/vulkan/vkwindow.c b/ext/vulkan/vkwindow.c
new file mode 100644
index 0000000..caa3c47
--- /dev/null
+++ b/ext/vulkan/vkwindow.c
@@ -0,0 +1,308 @@
+/*
+ * GStreamer
+ * Copyright (C) 2012 Matthew Waters <ystreet00@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:gstglwindow
+ * @short_description: window/surface abstraction
+ * @title: GstVulkanWindow
+ * @see_also: #GstGLContext, #GstGLDisplay
+ *
+ * GstVulkanWindow represents a window that elements can render into.  A window can
+ * either be a user visible window (onscreen) or hidden (offscreen).
+ */
+
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <gmodule.h>
+#include <stdio.h>
+
+#include "vkwindow.h"
+
+#if GST_VULKAN_HAVE_WINDOW_X11
+#include "x11/vkwindow_x11.h"
+#endif
+#if GST_VULKAN_HAVE_WINDOW_XCB
+#include "xcb/vkwindow_xcb.h"
+#endif
+
+#define GST_CAT_DEFAULT gst_vulkan_window_debug
+GST_DEBUG_CATEGORY (GST_CAT_DEFAULT);
+
+#define gst_vulkan_window_parent_class parent_class
+G_DEFINE_ABSTRACT_TYPE (GstVulkanWindow, gst_vulkan_window, GST_TYPE_OBJECT);
+
+#define GST_VULKAN_WINDOW_GET_PRIVATE(o) \
+  (G_TYPE_INSTANCE_GET_PRIVATE((o), GST_TYPE_VULKAN_WINDOW, GstVulkanWindowPrivate))
+
+struct _GstVulkanWindowPrivate
+{
+  guint surface_width;
+  guint surface_height;
+};
+
+static void gst_vulkan_window_finalize (GObject * object);
+
+typedef struct _GstVulkanDummyWindow
+{
+  GstVulkanWindow parent;
+
+  guintptr handle;
+} GstVulkanDummyWindow;
+
+typedef struct _GstVulkanDummyWindowCass
+{
+  GstVulkanWindowClass parent;
+} GstVulkanDummyWindowClass;
+
+GstVulkanDummyWindow *gst_vulkan_dummy_window_new (void);
+
+enum
+{
+  SIGNAL_0,
+  SIGNAL_CLOSE,
+  SIGNAL_DRAW,
+  LAST_SIGNAL
+};
+
+static guint gst_vulkan_window_signals[LAST_SIGNAL] = { 0 };
+
+static gboolean
+_accum_logical_and (GSignalInvocationHint * ihint, GValue * return_accu,
+    const GValue * handler_return, gpointer data)
+{
+  gboolean val = g_value_get_boolean (handler_return);
+  gboolean val2 = g_value_get_boolean (return_accu);
+
+  g_value_set_boolean (return_accu, val && val2);
+
+  return TRUE;
+}
+
+GQuark
+gst_vulkan_window_error_quark (void)
+{
+  return g_quark_from_static_string ("gst-gl-window-error-quark");
+}
+
+static gboolean
+gst_vulkan_window_default_open (GstVulkanWindow * window, GError ** error)
+{
+  return TRUE;
+}
+
+static void
+gst_vulkan_window_default_close (GstVulkanWindow * window)
+{
+}
+
+static void
+_init_debug (void)
+{
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "vulkanwindow", 0,
+        "Vulkan Window");
+    g_once_init_leave (&_init, 1);
+  }
+}
+
+static void
+gst_vulkan_window_init (GstVulkanWindow * window)
+{
+  window->priv =
+      G_TYPE_INSTANCE_GET_PRIVATE (window, GST_TYPE_VULKAN_WINDOW,
+      GstVulkanWindowPrivate);
+}
+
+static void
+gst_vulkan_window_class_init (GstVulkanWindowClass * klass)
+{
+  g_type_class_add_private (klass, sizeof (GstVulkanWindowPrivate));
+
+  klass->open = GST_DEBUG_FUNCPTR (gst_vulkan_window_default_open);
+  klass->close = GST_DEBUG_FUNCPTR (gst_vulkan_window_default_close);
+
+  gst_vulkan_window_signals[SIGNAL_CLOSE] =
+      g_signal_new ("close", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0,
+      (GSignalAccumulator) _accum_logical_and, NULL, NULL, G_TYPE_BOOLEAN, 0);
+
+  gst_vulkan_window_signals[SIGNAL_DRAW] =
+      g_signal_new ("draw", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0,
+      NULL, NULL, NULL, G_TYPE_NONE, 0);
+
+  G_OBJECT_CLASS (klass)->finalize = gst_vulkan_window_finalize;
+
+  _init_debug ();
+}
+
+/**
+ * gst_vulkan_window_new:
+ * @display: a #GstGLDisplay
+ *
+ * Returns: (transfer full): a new #GstVulkanWindow using @display's connection
+ *
+ * Since: 1.10
+ */
+GstVulkanWindow *
+gst_vulkan_window_new (GstVulkanDisplay * display)
+{
+  GstVulkanWindow *window = NULL;
+  const gchar *user_choice;
+
+  g_return_val_if_fail (display != NULL, NULL);
+
+  _init_debug ();
+
+  user_choice = g_getenv ("GST_VULKAN_WINDOW");
+  GST_INFO ("creating a window, user choice:%s", user_choice);
+#if GST_VULKAN_HAVE_WINDOW_X11
+  if (!window && (!user_choice || g_strstr_len (user_choice, 3, "x11")))
+    window = GST_VULKAN_WINDOW (gst_vulkan_window_x11_new (display));
+#endif
+#if GST_VULKAN_HAVE_WINDOW_XCB
+  if (!window && (!user_choice || g_strstr_len (user_choice, 3, "xcb")))
+    window = GST_VULKAN_WINDOW (gst_vulkan_window_xcb_new (display));
+#endif
+  if (!window) {
+    /* subclass returned a NULL window */
+    GST_WARNING ("Could not create window. user specified %s, creating dummy"
+        " window", user_choice ? user_choice : "(null)");
+
+    window = GST_VULKAN_WINDOW (gst_vulkan_dummy_window_new ());
+  }
+
+  window->display = gst_object_ref (display);
+
+  return window;
+}
+
+static void
+gst_vulkan_window_finalize (GObject * object)
+{
+  GstVulkanWindow *window = GST_VULKAN_WINDOW (object);
+
+  gst_object_unref (window->display);
+
+  G_OBJECT_CLASS (gst_vulkan_window_parent_class)->finalize (object);
+}
+
+GstVulkanDisplay *
+gst_vulkan_window_get_display (GstVulkanWindow * window)
+{
+  g_return_val_if_fail (GST_IS_VULKAN_WINDOW (window), NULL);
+
+  return gst_object_ref (window->display);
+}
+
+VkSurfaceKHR
+gst_vulkan_window_get_surface (GstVulkanWindow * window, GError ** error)
+{
+  GstVulkanWindowClass *klass;
+
+  g_return_val_if_fail (GST_IS_VULKAN_WINDOW (window), NULL);
+  klass = GST_VULKAN_WINDOW_GET_CLASS (window);
+  g_return_val_if_fail (klass->get_surface != NULL, NULL);
+
+  return klass->get_surface (window, error);
+}
+
+gboolean
+gst_vulkan_window_get_presentation_support (GstVulkanWindow * window,
+    GstVulkanDevice * device, guint32 queue_family_idx)
+{
+  GstVulkanWindowClass *klass;
+
+  g_return_val_if_fail (GST_IS_VULKAN_WINDOW (window), FALSE);
+  klass = GST_VULKAN_WINDOW_GET_CLASS (window);
+  g_return_val_if_fail (klass->get_presentation_support != NULL, FALSE);
+
+  return klass->get_presentation_support (window, device, queue_family_idx);
+}
+
+gboolean
+gst_vulkan_window_open (GstVulkanWindow * window, GError ** error)
+{
+  GstVulkanWindowClass *klass;
+
+  g_return_val_if_fail (GST_IS_VULKAN_WINDOW (window), FALSE);
+  klass = GST_VULKAN_WINDOW_GET_CLASS (window);
+  g_return_val_if_fail (klass->open != NULL, FALSE);
+
+  return klass->open (window, error);
+}
+
+void
+gst_vulkan_window_close (GstVulkanWindow * window)
+{
+  GstVulkanWindowClass *klass;
+  gboolean to_close;
+
+  g_return_if_fail (GST_IS_VULKAN_WINDOW (window));
+  klass = GST_VULKAN_WINDOW_GET_CLASS (window);
+  g_return_if_fail (klass->close != NULL);
+
+  g_signal_emit (window, gst_vulkan_window_signals[SIGNAL_CLOSE], 0, &to_close);
+
+  if (to_close)
+    klass->close (window);
+}
+
+void
+gst_vulkan_window_resize (GstVulkanWindow * window, gint width, gint height)
+{
+  g_return_if_fail (GST_IS_VULKAN_WINDOW (window));
+
+  window->priv->surface_width = width;
+  window->priv->surface_height = height;
+
+  /* XXX: possibly queue a resize/redraw */
+}
+
+void
+gst_vulkan_window_redraw (GstVulkanWindow * window)
+{
+  g_return_if_fail (GST_IS_VULKAN_WINDOW (window));
+
+  g_signal_emit (window, gst_vulkan_window_signals[SIGNAL_DRAW], 0);
+}
+
+GType gst_vulkan_dummy_window_get_type (void);
+G_DEFINE_TYPE (GstVulkanDummyWindow, gst_vulkan_dummy_window,
+    GST_TYPE_VULKAN_WINDOW);
+
+static void
+gst_vulkan_dummy_window_class_init (GstVulkanDummyWindowClass * klass)
+{
+}
+
+static void
+gst_vulkan_dummy_window_init (GstVulkanDummyWindow * dummy)
+{
+  dummy->handle = 0;
+}
+
+GstVulkanDummyWindow *
+gst_vulkan_dummy_window_new (void)
+{
+  return g_object_new (gst_vulkan_dummy_window_get_type (), NULL);
+}
diff --git a/ext/vulkan/vkwindow.h b/ext/vulkan/vkwindow.h
new file mode 100644
index 0000000..58be80a
--- /dev/null
+++ b/ext/vulkan/vkwindow.h
@@ -0,0 +1,115 @@
+/*
+ * GStreamer
+ * Copyright (C) 2008 Julien Isorce <julien.isorce@gmail.com>
+ * Copyright (C) 2012 Matthew Waters <ystreet00@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_VULKAN_WINDOW_H__
+#define __GST_VULKAN_WINDOW_H__
+
+#include <gst/gst.h>
+
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_VULKAN_WINDOW         (gst_vulkan_window_get_type())
+#define GST_VULKAN_WINDOW(o)           (G_TYPE_CHECK_INSTANCE_CAST((o), GST_TYPE_VULKAN_WINDOW, GstVulkanWindow))
+#define GST_VULKAN_WINDOW_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GST_TYPE_VULKAN_WINDOW, GstVulkanWindowClass))
+#define GST_IS_VULKAN_WINDOW(o)        (G_TYPE_CHECK_INSTANCE_TYPE((o), GST_TYPE_VULKAN_WINDOW))
+#define GST_IS_VULKAN_WINDOW_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE((k), GST_TYPE_VULKAN_WINDOW))
+#define GST_VULKAN_WINDOW_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), GST_TYPE_VULKAN_WINDOW, GstVulkanWindowClass))
+GType gst_vulkan_window_get_type     (void);
+
+#define GST_VULKAN_WINDOW_LOCK(w) g_mutex_lock(&GST_VULKAN_WINDOW(w)->lock)
+#define GST_VULKAN_WINDOW_UNLOCK(w) g_mutex_unlock(&GST_VULKAN_WINDOW(w)->lock)
+#define GST_VULKAN_WINDOW_GET_LOCK(w) (&GST_VULKAN_WINDOW(w)->lock)
+
+#define GST_VULKAN_WINDOW_ERROR (gst_vulkan_window_error_quark ())
+GQuark gst_vulkan_window_error_quark (void);
+
+typedef enum
+{
+  GST_VULKAN_WINDOW_ERROR_FAILED,
+  GST_VULKAN_WINDOW_ERROR_OLD_LIBS,
+  GST_VULKAN_WINDOW_ERROR_RESOURCE_UNAVAILABLE,
+} GstVulkanWindowError;
+
+/**
+ * GstVulkanWindow:
+ *
+ * #GstVulkanWindow is an opaque struct and should only be accessed through the
+ * provided api.
+ */
+struct _GstVulkanWindow {
+  /*< private >*/
+  GstObject parent;
+
+  GstVulkanDisplay       *display;
+
+  GMutex                  lock;
+
+  GstVulkanWindowPrivate *priv;
+
+  gpointer                _reserved[GST_PADDING];
+};
+
+/**
+ * GstVulkanWindowClass:
+ * @parent_class: Parent class
+ * @open: open the connection to the display
+ * @close: close the connection to the display
+ */
+struct _GstVulkanWindowClass {
+  GstObjectClass parent_class;
+
+  gboolean      (*open)                         (GstVulkanWindow *window,
+                                                 GError **error);
+  void          (*close)                        (GstVulkanWindow *window);
+
+  VkSurfaceKHR  (*get_surface)                  (GstVulkanWindow *window,
+                                                 GError **error);
+  gboolean      (*get_presentation_support)     (GstVulkanWindow *window,
+                                                 GstVulkanDevice *device,
+                                                 guint32 queue_family_idx);
+
+  /*< private >*/
+  gpointer _reserved[GST_PADDING];
+};
+
+GstVulkanWindow *  gst_vulkan_window_new                            (GstVulkanDisplay *display);
+
+GstVulkanDisplay * gst_vulkan_window_get_display                    (GstVulkanWindow *window);
+VkSurfaceKHR       gst_vulkan_window_get_surface                    (GstVulkanWindow *window,
+                                                                     GError **error);
+gboolean           gst_vulkan_window_get_presentation_support       (GstVulkanWindow *window,
+                                                                     GstVulkanDevice *device,
+                                                                     guint32 queue_family_idx);
+
+gboolean           gst_vulkan_window_open                           (GstVulkanWindow *window,
+                                                                     GError ** error);
+void               gst_vulkan_window_close                          (GstVulkanWindow *window);
+
+void               gst_vulkan_window_resize                         (GstVulkanWindow *window,
+                                                                     gint width,
+                                                                     gint height);
+void               gst_vulkan_window_redraw                         (GstVulkanWindow *window);
+
+G_END_DECLS
+
+#endif /* __GST_VULKAN_WINDOW_H__ */
diff --git a/ext/vulkan/xcb/Makefile.am b/ext/vulkan/xcb/Makefile.am
new file mode 100644
index 0000000..7debcff
--- /dev/null
+++ b/ext/vulkan/xcb/Makefile.am
@@ -0,0 +1,29 @@
+## Process this file with automake to produce Makefile.in
+
+noinst_LTLIBRARIES = libgstvulkan-xcb.la
+
+libgstvulkan_xcb_la_SOURCES = \
+	vkdisplay_xcb.c \
+	vkwindow_xcb.c \
+	xcb_event_source.c
+
+noinst_HEADERS = \
+	vkdisplay_xcb.h \
+	vkwindow_xcb.h \
+	xcb_event_source.h
+
+libgstvulkan_xcb_la_CFLAGS = \
+	-I$(top_srcdir)/gst-libs \
+	-I$(top_srcdir)/ext/vulkan \
+	-I$(top_builddir)/gst-libs \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(GST_BASE_CFLAGS) \
+	$(GST_CFLAGS) \
+	$(XCB_CFLAGS)
+
+libgstvulkan_xcb_la_LIBADD = \
+	$(XCB_LIBS)
+
+libgstvulkan_xcb_la_LDFLAGS = \
+	$(GST_LIB_LDFLAGS) \
+	$(GST_ALL_LDFLAGS)
diff --git a/ext/mpg123/Makefile.in b/ext/vulkan/xcb/Makefile.in
similarity index 82%
copy from ext/mpg123/Makefile.in
copy to ext/vulkan/xcb/Makefile.in
index e0f8f27..2e9729f 100644
--- a/ext/mpg123/Makefile.in
+++ b/ext/vulkan/xcb/Makefile.in
@@ -90,7 +90,7 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-subdir = ext/mpg123
+subdir = ext/vulkan/xcb
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -134,49 +133,21 @@
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
+LTLIBRARIES = $(noinst_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-libgstmpg123_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-am_libgstmpg123_la_OBJECTS = libgstmpg123_la-gstmpg123audiodec.lo
-libgstmpg123_la_OBJECTS = $(am_libgstmpg123_la_OBJECTS)
+libgstvulkan_xcb_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_libgstvulkan_xcb_la_OBJECTS = libgstvulkan_xcb_la-vkdisplay_xcb.lo \
+	libgstvulkan_xcb_la-vkwindow_xcb.lo \
+	libgstvulkan_xcb_la-xcb_event_source.lo
+libgstvulkan_xcb_la_OBJECTS = $(am_libgstvulkan_xcb_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-libgstmpg123_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(libgstmpg123_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(CCLD) $(libgstmpg123_la_CFLAGS) $(CFLAGS) \
-	$(libgstmpg123_la_LDFLAGS) $(LDFLAGS) -o $@
+libgstvulkan_xcb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(libgstvulkan_xcb_la_CFLAGS) $(CFLAGS) \
+	$(libgstvulkan_xcb_la_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -211,8 +182,8 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libgstmpg123_la_SOURCES)
-DIST_SOURCES = $(libgstmpg123_la_SOURCES)
+SOURCES = $(libgstvulkan_xcb_la_SOURCES)
+DIST_SOURCES = $(libgstvulkan_xcb_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -324,7 +295,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +316,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +337,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +498,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +512,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +598,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +649,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +670,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +709,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -783,18 +748,33 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
-plugin_LTLIBRARIES = libgstmpg123.la
-libgstmpg123_la_SOURCES = gstmpg123audiodec.c
-libgstmpg123_la_CFLAGS = -DGST_USE_UNSTABLE_API \
+noinst_LTLIBRARIES = libgstvulkan-xcb.la
+libgstvulkan_xcb_la_SOURCES = \
+	vkdisplay_xcb.c \
+	vkwindow_xcb.c \
+	xcb_event_source.c
+
+noinst_HEADERS = \
+	vkdisplay_xcb.h \
+	vkwindow_xcb.h \
+	xcb_event_source.h
+
+libgstvulkan_xcb_la_CFLAGS = \
+	-I$(top_srcdir)/gst-libs \
+	-I$(top_srcdir)/ext/vulkan \
+	-I$(top_builddir)/gst-libs \
 	$(GST_PLUGINS_BASE_CFLAGS) \
-	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(MPG123_CFLAGS)
+	$(GST_BASE_CFLAGS) \
+	$(GST_CFLAGS) \
+	$(XCB_CFLAGS)
 
-libgstmpg123_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_API_VERSION@ \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(MPG123_LIBS)
+libgstvulkan_xcb_la_LIBADD = \
+	$(XCB_LIBS)
 
-libgstmpg123_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstmpg123_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = gstmpg123audiodec.h
+libgstvulkan_xcb_la_LDFLAGS = \
+	$(GST_LIB_LDFLAGS) \
+	$(GST_ALL_LDFLAGS)
+
 all: all-am
 
 .SUFFIXES:
@@ -808,9 +788,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/mpg123/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/vulkan/xcb/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu ext/mpg123/Makefile
+	  $(AUTOMAKE) --gnu ext/vulkan/xcb/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -829,33 +809,9 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
-	}
-
-uninstall-pluginLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
-	done
-
-clean-pluginLTLIBRARIES:
-	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
-	@list='$(plugin_LTLIBRARIES)'; \
+clean-noinstLTLIBRARIES:
+	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+	@list='$(noinst_LTLIBRARIES)'; \
 	locs=`for p in $$list; do echo $$p; done | \
 	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
 	      sort -u`; \
@@ -864,8 +820,8 @@
 	  rm -f $${locs}; \
 	}
 
-libgstmpg123.la: $(libgstmpg123_la_OBJECTS) $(libgstmpg123_la_DEPENDENCIES) $(EXTRA_libgstmpg123_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libgstmpg123_la_LINK) -rpath $(plugindir) $(libgstmpg123_la_OBJECTS) $(libgstmpg123_la_LIBADD) $(LIBS)
+libgstvulkan-xcb.la: $(libgstvulkan_xcb_la_OBJECTS) $(libgstvulkan_xcb_la_DEPENDENCIES) $(EXTRA_libgstvulkan_xcb_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libgstvulkan_xcb_la_LINK)  $(libgstvulkan_xcb_la_OBJECTS) $(libgstvulkan_xcb_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -873,7 +829,9 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_xcb_la-vkdisplay_xcb.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_xcb_la-vkwindow_xcb.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_xcb_la-xcb_event_source.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -899,12 +857,26 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-libgstmpg123_la-gstmpg123audiodec.lo: gstmpg123audiodec.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpg123_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpg123_la_CFLAGS) $(CFLAGS) -MT libgstmpg123_la-gstmpg123audiodec.lo -MD -MP -MF $(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Tpo -c -o libgstmpg123_la-gstmpg123audiodec.lo `test -f 'gstmpg123audiodec.c' || echo '$(srcdir)/'`gstmpg123audiodec.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Tpo $(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstmpg123audiodec.c' object='libgstmpg123_la-gstmpg123audiodec.lo' libtool=yes @AMDEPBACKSLASH@
+libgstvulkan_xcb_la-vkdisplay_xcb.lo: vkdisplay_xcb.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_xcb_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_xcb_la-vkdisplay_xcb.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_xcb_la-vkdisplay_xcb.Tpo -c -o libgstvulkan_xcb_la-vkdisplay_xcb.lo `test -f 'vkdisplay_xcb.c' || echo '$(srcdir)/'`vkdisplay_xcb.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_xcb_la-vkdisplay_xcb.Tpo $(DEPDIR)/libgstvulkan_xcb_la-vkdisplay_xcb.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkdisplay_xcb.c' object='libgstvulkan_xcb_la-vkdisplay_xcb.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 $(libgstmpg123_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpg123_la_CFLAGS) $(CFLAGS) -c -o libgstmpg123_la-gstmpg123audiodec.lo `test -f 'gstmpg123audiodec.c' || echo '$(srcdir)/'`gstmpg123audiodec.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_xcb_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_xcb_la-vkdisplay_xcb.lo `test -f 'vkdisplay_xcb.c' || echo '$(srcdir)/'`vkdisplay_xcb.c
+
+libgstvulkan_xcb_la-vkwindow_xcb.lo: vkwindow_xcb.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_xcb_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_xcb_la-vkwindow_xcb.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_xcb_la-vkwindow_xcb.Tpo -c -o libgstvulkan_xcb_la-vkwindow_xcb.lo `test -f 'vkwindow_xcb.c' || echo '$(srcdir)/'`vkwindow_xcb.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_xcb_la-vkwindow_xcb.Tpo $(DEPDIR)/libgstvulkan_xcb_la-vkwindow_xcb.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vkwindow_xcb.c' object='libgstvulkan_xcb_la-vkwindow_xcb.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_xcb_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_xcb_la-vkwindow_xcb.lo `test -f 'vkwindow_xcb.c' || echo '$(srcdir)/'`vkwindow_xcb.c
+
+libgstvulkan_xcb_la-xcb_event_source.lo: xcb_event_source.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_xcb_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_xcb_la-xcb_event_source.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_xcb_la-xcb_event_source.Tpo -c -o libgstvulkan_xcb_la-xcb_event_source.lo `test -f 'xcb_event_source.c' || echo '$(srcdir)/'`xcb_event_source.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_xcb_la-xcb_event_source.Tpo $(DEPDIR)/libgstvulkan_xcb_la-xcb_event_source.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='xcb_event_source.c' object='libgstvulkan_xcb_la-xcb_event_source.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_xcb_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_xcb_la-xcb_event_source.lo `test -f 'xcb_event_source.c' || echo '$(srcdir)/'`xcb_event_source.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -998,9 +970,6 @@
 check: check-am
 all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
-	for dir in "$(DESTDIR)$(plugindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
 install: install-am
 install-exec: install-exec-am
 install-data: install-data-am
@@ -1033,7 +1002,7 @@
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
 	mostlyclean-am
 
 distclean: distclean-am
@@ -1054,7 +1023,7 @@
 
 info-am:
 
-install-data-am: install-pluginLTLIBRARIES
+install-data-am:
 
 install-dvi: install-dvi-am
 
@@ -1100,24 +1069,23 @@
 
 ps-am:
 
-uninstall-am: uninstall-pluginLTLIBRARIES
+uninstall-am:
 
 .MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
+	clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
 	ctags-am distclean distclean-compile distclean-generic \
 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
 	install-data-am install-dvi install-dvi-am install-exec \
 	install-exec-am install-html install-html-am install-info \
 	install-info-am install-man install-pdf install-pdf-am \
-	install-pluginLTLIBRARIES install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
-	uninstall-pluginLTLIBRARIES
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags tags-am uninstall uninstall-am
 
 .PRECIOUS: Makefile
 
diff --git a/ext/vulkan/xcb/vkdisplay_xcb.c b/ext/vulkan/xcb/vkdisplay_xcb.c
new file mode 100644
index 0000000..763f5d5
--- /dev/null
+++ b/ext/vulkan/xcb/vkdisplay_xcb.c
@@ -0,0 +1,146 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vkdisplay_xcb.h"
+#include "xcb_event_source.h"
+
+#define GST_CAT_DEFAULT gst_vulkan_display_debug
+GST_DEBUG_CATEGORY_STATIC (gst_vulkan_display_debug);
+
+G_DEFINE_TYPE (GstVulkanDisplayXCB, gst_vulkan_display_xcb,
+    GST_TYPE_VULKAN_DISPLAY);
+
+static void gst_vulkan_display_xcb_finalize (GObject * object);
+static gpointer gst_vulkan_display_xcb_get_handle (GstVulkanDisplay * display);
+
+static void
+gst_vulkan_display_xcb_class_init (GstVulkanDisplayXCBClass * klass)
+{
+  GST_VULKAN_DISPLAY_CLASS (klass)->get_handle =
+      GST_DEBUG_FUNCPTR (gst_vulkan_display_xcb_get_handle);
+
+  G_OBJECT_CLASS (klass)->finalize = gst_vulkan_display_xcb_finalize;
+}
+
+static void
+gst_vulkan_display_xcb_init (GstVulkanDisplayXCB * display_xcb)
+{
+  GstVulkanDisplay *display = (GstVulkanDisplay *) display_xcb;
+
+  display->type = GST_VULKAN_DISPLAY_TYPE_XCB;
+  display_xcb->foreign_display = FALSE;
+}
+
+static void
+gst_vulkan_display_xcb_finalize (GObject * object)
+{
+  GstVulkanDisplayXCB *display_xcb = GST_VULKAN_DISPLAY_XCB (object);
+
+  G_OBJECT_CLASS (gst_vulkan_display_xcb_parent_class)->finalize (object);
+
+  if (!display_xcb->foreign_display && display_xcb->connection)
+    xcb_disconnect (display_xcb->connection);
+  display_xcb->connection = NULL;
+}
+
+static xcb_screen_t *
+_get_screen_from_connection (xcb_connection_t * connection, int screen_no)
+{
+  const xcb_setup_t *setup;
+  xcb_screen_iterator_t iter;
+
+  setup = xcb_get_setup (connection);
+  iter = xcb_setup_roots_iterator (setup);
+  while (screen_no-- > 0)
+    xcb_screen_next (&iter);
+
+  return iter.data;
+}
+
+/**
+ * gst_vulkan_display_xcb_new:
+ * @name: (allow-none): a display name
+ *
+ * Create a new #GstVulkanDisplayXCB from the xcb display name.  See XOpenDisplay()
+ * for details on what is a valid name.
+ *
+ * Returns: (transfer full): a new #GstVulkanDisplayXCB or %NULL
+ */
+GstVulkanDisplayXCB *
+gst_vulkan_display_xcb_new (const gchar * name)
+{
+  xcb_connection_t *connection;
+  GstVulkanDisplayXCB *ret;
+  int screen_no = 0;
+
+  GST_DEBUG_CATEGORY_GET (gst_vulkan_display_debug, "gldisplay");
+
+  connection = xcb_connect (NULL, &screen_no);
+  if (connection == NULL || xcb_connection_has_error (connection)) {
+    GST_ERROR ("Failed to open XCB display connection with name, \'%s\'", name);
+    return NULL;
+  }
+
+  ret = gst_vulkan_display_xcb_new_with_connection (connection, screen_no);
+  GST_VULKAN_DISPLAY (ret)->event_source = xcb_event_source_new (ret);
+  g_source_attach (GST_VULKAN_DISPLAY (ret)->event_source,
+      GST_VULKAN_DISPLAY (ret)->main_context);
+  ret->foreign_display = FALSE;
+
+  return ret;
+}
+
+/**
+ * gst_vulkan_display_xcb_new_with_connection:
+ * @display: an existing, xcb display
+ *
+ * Creates a new display connection from a XCB Display.
+ *
+ * Returns: (transfer full): a new #GstVulkanDisplayXCB
+ */
+GstVulkanDisplayXCB *
+gst_vulkan_display_xcb_new_with_connection (xcb_connection_t * connection,
+    int screen_no)
+{
+  GstVulkanDisplayXCB *ret;
+
+  g_return_val_if_fail (connection != NULL, NULL);
+
+  GST_DEBUG_CATEGORY_GET (gst_vulkan_display_debug, "gldisplay");
+
+  ret = g_object_new (GST_TYPE_VULKAN_DISPLAY_XCB, NULL);
+
+  ret->connection = connection;
+  ret->screen = _get_screen_from_connection (connection, screen_no);
+  ret->root_window = ret->screen->root;
+  ret->foreign_display = TRUE;
+
+  return ret;
+}
+
+static gpointer
+gst_vulkan_display_xcb_get_handle (GstVulkanDisplay * display)
+{
+  return (gpointer) GST_VULKAN_DISPLAY_XCB_CONNECTION (display);
+}
diff --git a/ext/vulkan/xcb/vkdisplay_xcb.h b/ext/vulkan/xcb/vkdisplay_xcb.h
new file mode 100644
index 0000000..7c0f1ec
--- /dev/null
+++ b/ext/vulkan/xcb/vkdisplay_xcb.h
@@ -0,0 +1,84 @@
+/*
+ * GStreamer
+ * Copyright (C) 2013 Matthew Waters <ystreet00@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_VULKAN_DISPLAY_XCB_H__
+#define __GST_VULKAN_DISPLAY_XCB_H__
+
+#include <gst/gst.h>
+
+#include <xcb/xcb.h>
+
+#include <vk.h>
+#ifndef VK_USE_PLATFORM_XCB_KHR
+#error "VK_USE_PLATFORM_XCB_KHR not defined before including this header"
+#error "Either include vkapi.h or define VK_USE_PLATFORM_XCB_KHR before including this header"
+#endif
+#include <vulkan/vulkan.h>
+
+G_BEGIN_DECLS
+
+GType gst_vulkan_display_xcb_get_type (void);
+
+#define GST_TYPE_VULKAN_DISPLAY_XCB             (gst_vulkan_display_xcb_get_type())
+#define GST_VULKAN_DISPLAY_XCB(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VULKAN_DISPLAY_XCB,GstVulkanDisplayXCB))
+#define GST_VULKAN_DISPLAY_XCB_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_VULKAN_DISPLAY_XCB,GstVulkanDisplayXCBClass))
+#define GST_IS_VULKAN_DISPLAY_XCB(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VULKAN_DISPLAY_XCB))
+#define GST_IS_VULKAN_DISPLAY_XCB_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_VULKAN_DISPLAY_XCB))
+#define GST_VULKAN_DISPLAY_XCB_CAST(obj)        ((GstVulkanDisplayXCB*)(obj))
+
+typedef struct _GstVulkanDisplayXCB GstVulkanDisplayXCB;
+typedef struct _GstVulkanDisplayXCBClass GstVulkanDisplayXCBClass;
+
+#define GST_VULKAN_DISPLAY_XCB_CONNECTION(d) (GST_VULKAN_DISPLAY_XCB(d)->connection)
+#define GST_VULKAN_DISPLAY_XCB_ROOT_WINDOW(d) (GST_VULKAN_DISPLAY_XCB(d)->root_window)
+#define GST_VULKAN_DISPLAY_XCB_SCREEN(d) (GST_VULKAN_DISPLAY_XCB(d)->screen)
+
+/**
+ * GstVulkanDisplayXCB:
+ *
+ * the contents of a #GstVulkanDisplayXCB are private and should only be accessed
+ * through the provided API
+ */
+struct _GstVulkanDisplayXCB
+{
+  GstVulkanDisplay          parent;
+
+  xcb_connection_t *connection;
+  xcb_window_t      root_window;
+  xcb_screen_t     *screen;
+
+  /* <private> */
+  gboolean foreign_display;
+
+  GSource *event_source;
+};
+
+struct _GstVulkanDisplayXCBClass
+{
+  GstVulkanDisplayClass object_class;
+};
+
+GstVulkanDisplayXCB * gst_vulkan_display_xcb_new                    (const gchar * name);
+GstVulkanDisplayXCB * gst_vulkan_display_xcb_new_with_connection    (xcb_connection_t * connection,
+                                                                     int screen_no);
+
+G_END_DECLS
+
+#endif /* __GST_VULKAN_DISPLAY_XCB_H__ */
diff --git a/ext/vulkan/xcb/vkwindow_xcb.c b/ext/vulkan/xcb/vkwindow_xcb.c
new file mode 100644
index 0000000..6369a1d
--- /dev/null
+++ b/ext/vulkan/xcb/vkwindow_xcb.c
@@ -0,0 +1,286 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/gst.h>
+#include <locale.h>
+
+#include "vkwindow_xcb.h"
+#include "vkdisplay_xcb.h"
+
+#define GST_VULKAN_WINDOW_XCB_GET_PRIVATE(o)  \
+  (G_TYPE_INSTANCE_GET_PRIVATE((o), GST_TYPE_VULKAN_WINDOW_XCB, GstVulkanWindowXCBPrivate))
+
+#define GST_CAT_DEFAULT gst_vulkan_window_xcb_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+static void
+_init_debug (void)
+{
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "vulkanwindowxcb", 0,
+        "Vulkan XCB Window");
+    g_once_init_leave (&_init, 1);
+  }
+}
+
+#define gst_vulkan_window_xcb_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstVulkanWindowXCB, gst_vulkan_window_xcb,
+    GST_TYPE_VULKAN_WINDOW, _init_debug ());
+
+gboolean gst_vulkan_window_xcb_handle_event (GstVulkanWindowXCB * window_xcb);
+
+enum
+{
+  PROP_0,
+};
+
+struct _GstVulkanWindowXCBPrivate
+{
+  gboolean activate;
+  gboolean activate_result;
+
+  gint preferred_width;
+  gint preferred_height;
+
+  xcb_intern_atom_reply_t *atom_wm_delete_window;
+};
+
+static VkSurfaceKHR gst_vulkan_window_xcb_get_surface (GstVulkanWindow * window,
+    GError ** error);
+static gboolean gst_vulkan_window_xcb_get_presentation_support (GstVulkanWindow
+    * window, GstVulkanDevice * device, guint32 queue_family_idx);
+static gboolean gst_vulkan_window_xcb_open (GstVulkanWindow * window,
+    GError ** error);
+static void gst_vulkan_window_xcb_close (GstVulkanWindow * window);
+
+static void
+gst_vulkan_window_xcb_finalize (GObject * object)
+{
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_vulkan_window_xcb_class_init (GstVulkanWindowXCBClass * klass)
+{
+  GObjectClass *obj_class = G_OBJECT_CLASS (klass);
+  GstVulkanWindowClass *window_class = (GstVulkanWindowClass *) klass;
+
+  g_type_class_add_private (klass, sizeof (GstVulkanWindowXCBPrivate));
+
+  obj_class->finalize = gst_vulkan_window_xcb_finalize;
+
+  window_class->open = GST_DEBUG_FUNCPTR (gst_vulkan_window_xcb_open);
+  window_class->close = GST_DEBUG_FUNCPTR (gst_vulkan_window_xcb_close);
+  window_class->get_surface = gst_vulkan_window_xcb_get_surface;
+  window_class->get_presentation_support =
+      gst_vulkan_window_xcb_get_presentation_support;
+}
+
+static void
+gst_vulkan_window_xcb_init (GstVulkanWindowXCB * window)
+{
+  window->priv = GST_VULKAN_WINDOW_XCB_GET_PRIVATE (window);
+}
+
+/* Must be called in the gl thread */
+GstVulkanWindowXCB *
+gst_vulkan_window_xcb_new (GstVulkanDisplay * display)
+{
+  _init_debug ();
+
+  if ((gst_vulkan_display_get_handle_type (display) &
+          GST_VULKAN_DISPLAY_TYPE_XCB)
+      == GST_VULKAN_DISPLAY_TYPE_NONE) {
+    GST_INFO ("Wrong display type %u for this window type %u", display->type,
+        GST_VULKAN_DISPLAY_TYPE_XCB);
+    return NULL;
+  }
+
+  return g_object_new (GST_TYPE_VULKAN_WINDOW_XCB, NULL);
+}
+
+static void
+gst_vulkan_window_xcb_show (GstVulkanWindow * window)
+{
+  GstVulkanWindowXCB *window_xcb = GST_VULKAN_WINDOW_XCB (window);
+  GstVulkanDisplayXCB *display_xcb = GST_VULKAN_DISPLAY_XCB (window->display);
+  xcb_connection_t *connection =
+      GST_VULKAN_DISPLAY_XCB_CONNECTION (display_xcb);
+
+  if (!window_xcb->visible) {
+    xcb_map_window (connection, window_xcb->win_id);
+    xcb_flush (connection);
+    window_xcb->visible = TRUE;
+  }
+}
+
+static void
+gst_vulkan_window_xcb_hide (GstVulkanWindow * window)
+{
+  GstVulkanWindowXCB *window_xcb = GST_VULKAN_WINDOW_XCB (window);
+  GstVulkanDisplayXCB *display_xcb = GST_VULKAN_DISPLAY_XCB (window->display);
+  xcb_connection_t *connection =
+      GST_VULKAN_DISPLAY_XCB_CONNECTION (display_xcb);
+
+  if (window_xcb->visible) {
+    xcb_unmap_window (connection, window_xcb->win_id);
+    window_xcb->visible = FALSE;
+  }
+}
+
+gboolean
+gst_vulkan_window_xcb_create_window (GstVulkanWindowXCB * window_xcb)
+{
+  GstVulkanDisplayXCB *display_xcb;
+  xcb_connection_t *connection;
+  xcb_screen_t *screen;
+  xcb_window_t root_window;
+  uint32_t value_mask, value_list[32];
+  xcb_intern_atom_cookie_t cookie, cookie2;
+  xcb_intern_atom_reply_t *reply, *reply2;
+//  const gchar *title = "OpenGL renderer";
+  gint x = 0, y = 0, width = 320, height = 240;
+
+  display_xcb =
+      GST_VULKAN_DISPLAY_XCB (GST_VULKAN_WINDOW (window_xcb)->display);
+  connection = GST_VULKAN_DISPLAY_XCB_CONNECTION (display_xcb);
+  root_window = GST_VULKAN_DISPLAY_XCB_ROOT_WINDOW (display_xcb);
+  screen = GST_VULKAN_DISPLAY_XCB_SCREEN (display_xcb);
+
+  window_xcb->win_id = xcb_generate_id (connection);
+
+  value_mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
+  value_list[0] = screen->black_pixel;
+  value_list[1] =
+      XCB_EVENT_MASK_KEY_RELEASE | XCB_EVENT_MASK_EXPOSURE |
+      XCB_EVENT_MASK_STRUCTURE_NOTIFY;
+
+  xcb_create_window (connection, XCB_COPY_FROM_PARENT, window_xcb->win_id,
+      root_window, x, y, width, height, 0, XCB_WINDOW_CLASS_INPUT_OUTPUT,
+      screen->root_visual, value_mask, value_list);
+
+  GST_LOG_OBJECT (window_xcb, "gl window id: %p",
+      (gpointer) (guintptr) window_xcb->win_id);
+  GST_LOG_OBJECT (window_xcb, "gl window props: x:%d y:%d", x, y);
+
+  /* Magic code that will send notification when window is destroyed */
+  cookie = xcb_intern_atom (connection, 1, 12, "WM_PROTOCOLS");
+  reply = xcb_intern_atom_reply (connection, cookie, 0);
+
+  cookie2 = xcb_intern_atom (connection, 0, 16, "WM_DELETE_WINDOW");
+  reply2 = xcb_intern_atom_reply (connection, cookie2, 0);
+
+  xcb_change_property (connection, XCB_PROP_MODE_REPLACE, window_xcb->win_id,
+      reply->atom, 4, 32, 1, &reply2->atom);
+  g_free (reply);
+  g_free (reply2);
+
+  gst_vulkan_window_xcb_show (GST_VULKAN_WINDOW (window_xcb));
+
+  return TRUE;
+}
+
+static VkSurfaceKHR
+gst_vulkan_window_xcb_get_surface (GstVulkanWindow * window, GError ** error)
+{
+  VkXcbSurfaceCreateInfoKHR info = { 0, };
+  VkSurfaceKHR ret;
+  VkResult err;
+
+  info.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
+  info.pNext = NULL;
+  info.flags = 0;
+  info.connection = GST_VULKAN_DISPLAY_XCB_CONNECTION (window->display);
+  info.window = GST_VULKAN_WINDOW_XCB (window)->win_id;
+
+  err =
+      vkCreateXcbSurfaceKHR (window->display->instance->instance, &info, NULL,
+      &ret);
+  if (gst_vulkan_error_to_g_error (err, error, "vkCreateXcbSurfaceKHR") < 0)
+    return NULL;
+
+  return ret;
+}
+
+static gboolean
+gst_vulkan_window_xcb_get_presentation_support (GstVulkanWindow * window,
+    GstVulkanDevice * device, guint32 queue_family_idx)
+{
+  VkPhysicalDevice gpu;
+  xcb_screen_t *screen;
+
+  screen = GST_VULKAN_DISPLAY_XCB_SCREEN (window->display);
+
+  gpu = gst_vulkan_device_get_physical_device (device);
+  if (vkGetPhysicalDeviceXcbPresentationSupportKHR (gpu, queue_family_idx,
+          GST_VULKAN_DISPLAY_XCB_CONNECTION (window->display),
+          screen->root_visual))
+    return TRUE;
+  return FALSE;
+}
+
+static gboolean
+gst_vulkan_window_xcb_open (GstVulkanWindow * window, GError ** error)
+{
+  GstVulkanWindowXCB *window_xcb = GST_VULKAN_WINDOW_XCB (window);
+  GstVulkanDisplayXCB *display_xcb = (GstVulkanDisplayXCB *) window->display;
+  xcb_connection_t *connection;
+
+  connection = GST_VULKAN_DISPLAY_XCB_CONNECTION (display_xcb);
+  if (connection == NULL) {
+    g_set_error (error, GST_VULKAN_WINDOW_ERROR,
+        GST_VULKAN_WINDOW_ERROR_RESOURCE_UNAVAILABLE,
+        "Failed to connect to X display server with XCB");
+    goto failure;
+  }
+
+  if (!GST_VULKAN_WINDOW_CLASS (parent_class)->open (window, error))
+    return FALSE;
+
+  return gst_vulkan_window_xcb_create_window (window_xcb);
+
+failure:
+  return FALSE;
+}
+
+static void
+gst_vulkan_window_xcb_close (GstVulkanWindow * window)
+{
+  GstVulkanWindowXCB *window_xcb = GST_VULKAN_WINDOW_XCB (window);
+  GstVulkanDisplayXCB *display_xcb = (GstVulkanDisplayXCB *) window->display;
+  xcb_connection_t *connection =
+      GST_VULKAN_DISPLAY_XCB_CONNECTION (display_xcb);
+
+  if (connection) {
+    gst_vulkan_window_xcb_hide (window);
+
+    g_free (window_xcb->priv->atom_wm_delete_window);
+    window_xcb->priv->atom_wm_delete_window = NULL;
+    GST_DEBUG ("display receiver closed");
+  }
+
+  GST_VULKAN_WINDOW_CLASS (parent_class)->close (window);
+}
diff --git a/ext/vulkan/xcb/vkwindow_xcb.h b/ext/vulkan/xcb/vkwindow_xcb.h
new file mode 100644
index 0000000..517a488
--- /dev/null
+++ b/ext/vulkan/xcb/vkwindow_xcb.h
@@ -0,0 +1,83 @@
+/*
+ * GStreamer
+ * Copyright (C) 2012 Matthew Waters <ystreet00@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_VULKAN_WINDOW_XCB_H__
+#define __GST_VULKAN_WINDOW_XCB_H__
+
+#include <xcb/xcb.h>
+
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_VULKAN_WINDOW_XCB         (gst_vulkan_window_xcb_get_type())
+#define GST_VULKAN_WINDOW_XCB(o)           (G_TYPE_CHECK_INSTANCE_CAST((o), GST_TYPE_VULKAN_WINDOW_XCB, GstVulkanWindowXCB))
+#define GST_VULKAN_WINDOW_XCB_CLASS(k)     (G_TYPE_CHECK_CLASS((k), GST_TYPE_VULKAN_WINDOW_XCB, GstVulkanWindowXCBClass))
+#define GST_IS_VULKAN_WINDOW_XCB(o)        (G_TYPE_CHECK_INSTANCE_TYPE((o), GST_TYPE_VULKAN_WINDOW_XCB))
+#define GST_IS_VULKAN_WINDOW_XCB_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE((k), GST_TYPE_VULKAN_WINDOW_XCB))
+#define GST_VULKAN_WINDOW_XCB_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), GST_TYPE_VULKAN_WINDOW_XCB, GstVulkanWindowXCBClass))
+
+typedef struct _GstVulkanWindowXCB        GstVulkanWindowXCB;
+typedef struct _GstVulkanWindowXCBPrivate GstVulkanWindowXCBPrivate;
+typedef struct _GstVulkanWindowXCBClass   GstVulkanWindowXCBClass;
+
+/**
+ * GstVulkanWindowXCB:
+ *
+ * Opaque #GstVulkanWindowXCB object
+ */
+struct _GstVulkanWindowXCB
+{
+  /*< private >*/
+  GstVulkanWindow parent;
+
+  /* X window */
+  xcb_window_t win_id;
+
+  gint          visible :1;
+
+  /*< private >*/
+  GstVulkanWindowXCBPrivate *priv;
+  
+  gpointer _reserved[GST_PADDING];
+};
+
+/**
+ * GstVulkanWindowXCBClass:
+ *
+ * Opaque #GstVulkanWindowXCBClass object
+ */
+struct _GstVulkanWindowXCBClass {
+  /*< private >*/
+  GstVulkanWindowClass parent_class;
+
+  /*< private >*/
+  gpointer _reserved[GST_PADDING_LARGE];
+};
+
+GType gst_vulkan_window_xcb_get_type     (void);
+
+GstVulkanWindowXCB * gst_vulkan_window_xcb_new (GstVulkanDisplay * display);
+
+gboolean gst_vulkan_window_xcb_create_window (GstVulkanWindowXCB * window_xcb);
+
+G_END_DECLS
+
+#endif /* __GST_VULKAN_WINDOW_XCB_H__ */
diff --git a/ext/vulkan/xcb/xcb_event_source.c b/ext/vulkan/xcb/xcb_event_source.c
new file mode 100644
index 0000000..3368f19
--- /dev/null
+++ b/ext/vulkan/xcb/xcb_event_source.c
@@ -0,0 +1,255 @@
+/*
+ * GStreamer
+ * Copyright (C) 2012 Matthew Waters <ystreet00@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdint.h>
+#include <stdlib.h>
+
+#include "xcb_event_source.h"
+#include "vkdisplay_xcb.h"
+#include "vkwindow_xcb.h"
+
+static gint
+_compare_xcb_window (GstVulkanWindowXCB * window_xcb, xcb_window_t * window_id)
+{
+  return window_xcb->win_id - *window_id;
+}
+
+static GstVulkanWindowXCB *
+_find_window_from_xcb_window (GstVulkanDisplayXCB * display_xcb,
+    xcb_window_t window_id)
+{
+  GstVulkanDisplay *display = GST_VULKAN_DISPLAY (display_xcb);
+  GstVulkanWindowXCB *ret = NULL;
+  GList *l;
+
+  if (!window_id)
+    return NULL;
+
+  GST_OBJECT_LOCK (display);
+  l = g_list_find_custom (display->windows, &window_id,
+      (GCompareFunc) _compare_xcb_window);
+  if (l)
+    ret = gst_object_ref (l->data);
+  GST_OBJECT_UNLOCK (display);
+
+  return ret;
+}
+
+static gboolean
+_xcb_handle_event (GstVulkanDisplayXCB * display_xcb)
+{
+  xcb_connection_t *connection =
+      GST_VULKAN_DISPLAY_XCB_CONNECTION (display_xcb);
+  xcb_generic_event_t *event;
+  gboolean ret = TRUE;
+
+  while ((event = xcb_poll_for_event (connection))) {
+    uint8_t event_code = event->response_type & 0x7f;
+
+    switch (event_code) {
+      case XCB_CLIENT_MESSAGE:{
+        xcb_client_message_event_t *client_event;
+        xcb_intern_atom_cookie_t cookie;
+        xcb_intern_atom_reply_t *reply;
+
+        client_event = (xcb_client_message_event_t *) event;
+        cookie = xcb_intern_atom (connection, 0, 16, "WM_DELETE_WINDOW");
+        reply = xcb_intern_atom_reply (connection, cookie, 0);
+
+        if (client_event->data.data32[0] == reply->atom) {
+          GstVulkanWindowXCB *window_xcb;
+
+          window_xcb =
+              _find_window_from_xcb_window (display_xcb, client_event->window);
+
+          if (window_xcb) {
+            GST_INFO_OBJECT (window_xcb, "Close requested");
+
+            gst_vulkan_window_close (GST_VULKAN_WINDOW (window_xcb));
+            gst_vulkan_display_remove_window (GST_VULKAN_DISPLAY (display_xcb),
+                GST_VULKAN_WINDOW (window_xcb));
+            gst_object_unref (window_xcb);
+          }
+        }
+
+        g_free (reply);
+        break;
+      }
+      case XCB_CONFIGURE_NOTIFY:{
+        xcb_configure_notify_event_t *configure_event;
+        GstVulkanWindowXCB *window_xcb;
+
+        configure_event = (xcb_configure_notify_event_t *) event;
+        window_xcb =
+            _find_window_from_xcb_window (display_xcb, configure_event->window);
+
+        if (window_xcb) {
+          gst_vulkan_window_resize (GST_VULKAN_WINDOW (window_xcb),
+              configure_event->width, configure_event->height);
+
+          gst_object_unref (window_xcb);
+        }
+        break;
+      }
+      case XCB_EXPOSE:{
+        xcb_expose_event_t *expose_event = (xcb_expose_event_t *) event;
+        GstVulkanWindowXCB *window_xcb;
+
+        /* non-zero means that other Expose follows
+         * so just wait for the last one
+         * in theory we should not receive non-zero because
+         * we have no sub areas here but just in case */
+        if (expose_event->count != 0)
+          break;
+
+        window_xcb =
+            _find_window_from_xcb_window (display_xcb, expose_event->window);
+
+        if (window_xcb) {
+          gst_vulkan_window_redraw (GST_VULKAN_WINDOW (window_xcb));
+          gst_object_unref (window_xcb);
+        }
+        break;
+      }
+#if 0
+      case KeyPress:
+      case KeyRelease:
+        keysym = XkbKeycodeToKeysym (window_xcb->device,
+            event.xkey.keycode, 0, 0);
+        key_str = XKeysymToString (keysym);
+        key_data = g_slice_new (struct key_event);
+        key_data->window = window;
+        key_data->key_str = XKeysymToString (keysym);
+        key_data->event_type =
+            event.type == KeyPress ? "key-press" : "key-release";
+        GST_DEBUG ("input event key %d pressed over window at %d,%d (%s)",
+            event.xkey.keycode, event.xkey.x, event.xkey.y, key_str);
+        g_main_context_invoke (window->navigation_context,
+            (GSourceFunc) gst_vulkan_window_key_event_cb, key_data);
+        break;
+      case ButtonPress:
+      case ButtonRelease:
+        GST_DEBUG ("input event mouse button %d pressed over window at %d,%d",
+            event.xbutton.button, event.xbutton.x, event.xbutton.y);
+        mouse_data = g_slice_new (struct mouse_event);
+        mouse_data->window = window;
+        mouse_data->event_type =
+            event.type ==
+            ButtonPress ? "mouse-button-press" : "mouse-button-release";
+        mouse_data->button = event.xbutton.button;
+        mouse_data->posx = (double) event.xbutton.x;
+        mouse_data->posy = (double) event.xbutton.y;
+
+        g_main_context_invoke (window->navigation_context,
+            (GSourceFunc) gst_vulkan_window_mouse_event_cb, mouse_data);
+        break;
+      case MotionNotify:
+        GST_DEBUG ("input event pointer moved over window at %d,%d",
+            event.xmotion.x, event.xmotion.y);
+        mouse_data = g_slice_new (struct mouse_event);
+        mouse_data->window = window;
+        mouse_data->event_type = "mouse-move";
+        mouse_data->button = 0;
+        mouse_data->posx = (double) event.xbutton.x;
+        mouse_data->posy = (double) event.xbutton.y;
+
+        g_main_context_invoke (window->navigation_context, (GSourceFunc)
+            gst_vulkan_window_mouse_event_cb, mouse_data);
+        break;
+#endif
+      default:
+        GST_DEBUG ("unhandled XCB type: %u", event_code);
+        break;
+    }
+
+    g_free (event);
+  }
+
+  return ret;
+}
+
+typedef struct _XCBEventSource
+{
+  GSource source;
+  GPollFD pfd;
+  uint32_t mask;
+  GstVulkanDisplayXCB *display_xcb;
+} XCBEventSource;
+
+static gboolean
+xcb_event_source_prepare (GSource * base, gint * timeout)
+{
+  *timeout = -1;
+  return FALSE;
+}
+
+static gboolean
+xcb_event_source_check (GSource * base)
+{
+  XCBEventSource *source = (XCBEventSource *) base;
+  gboolean retval;
+
+  retval = source->pfd.revents;
+
+  return retval;
+}
+
+static gboolean
+xcb_event_source_dispatch (GSource * base, GSourceFunc callback, gpointer data)
+{
+  XCBEventSource *source = (XCBEventSource *) base;
+
+  gboolean ret = _xcb_handle_event (source->display_xcb);
+
+  if (callback)
+    callback (data);
+
+  return ret;
+}
+
+static GSourceFuncs xcb_event_source_funcs = {
+  xcb_event_source_prepare,
+  xcb_event_source_check,
+  xcb_event_source_dispatch,
+  NULL
+};
+
+GSource *
+xcb_event_source_new (GstVulkanDisplayXCB * display_xcb)
+{
+  xcb_connection_t *connection;
+  XCBEventSource *source;
+
+  connection = GST_VULKAN_DISPLAY_XCB_CONNECTION (display_xcb);
+  g_return_val_if_fail (connection != NULL, NULL);
+
+  source = (XCBEventSource *)
+      g_source_new (&xcb_event_source_funcs, sizeof (XCBEventSource));
+  source->display_xcb = display_xcb;
+  source->pfd.fd = xcb_get_file_descriptor (connection);
+  source->pfd.events = G_IO_IN | G_IO_ERR;
+  g_source_add_poll (&source->source, &source->pfd);
+
+  return &source->source;
+}
diff --git a/ext/vulkan/xcb/xcb_event_source.h b/ext/vulkan/xcb/xcb_event_source.h
new file mode 100644
index 0000000..cd9b41c
--- /dev/null
+++ b/ext/vulkan/xcb/xcb_event_source.h
@@ -0,0 +1,30 @@
+/*
+ * GStreamer
+ * Copyright (C) 2012 Matthew Waters <ystreet00@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __VULKAN_XCB_EVENT_SOURCE_H__
+#define __VULKAN_XCB_EVENT_SOURCE_H__
+
+#include <glib-object.h>
+#include "vkdisplay_xcb.h"
+
+GSource *
+xcb_event_source_new (GstVulkanDisplayXCB *display_xcb);
+
+#endif /* __VULKAN_XCB_EVENT_SOURCE_H__ */
diff --git a/ext/wayland/Makefile.in b/ext/wayland/Makefile.in
index 2cad82a..42ded05 100644
--- a/ext/wayland/Makefile.in
+++ b/ext/wayland/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -331,7 +330,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -353,7 +351,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -375,9 +372,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -539,6 +533,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -552,8 +547,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -640,8 +633,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -693,6 +684,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -713,6 +705,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -750,7 +744,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/webp/Makefile.in b/ext/webp/Makefile.in
index 4d27523..f64b913 100644
--- a/ext/webp/Makefile.in
+++ b/ext/webp/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/x265/Makefile.in b/ext/x265/Makefile.in
index ddf5c1b..be6f2d2 100644
--- a/ext/x265/Makefile.in
+++ b/ext/x265/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/x265/gstx265enc.h b/ext/x265/gstx265enc.h
index 58ba7c0..66a8135 100644
--- a/ext/x265/gstx265enc.h
+++ b/ext/x265/gstx265enc.h
@@ -25,7 +25,6 @@
 #include <gst/gst.h>
 #include <gst/video/video.h>
 #include <gst/video/gstvideoencoder.h>
-#include "_stdint.h"
 #include <x265.h>
 
 G_BEGIN_DECLS
diff --git a/ext/xvid/Makefile.in b/ext/xvid/Makefile.in
index 1c6f118..d4c120d 100644
--- a/ext/xvid/Makefile.in
+++ b/ext/xvid/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ext/zbar/Makefile.in b/ext/zbar/Makefile.in
index 591c6e3..f524574 100644
--- a/ext/zbar/Makefile.in
+++ b/ext/zbar/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/Makefile.in b/gst-libs/Makefile.in
index 032e32e..a37fd22 100644
--- a/gst-libs/Makefile.in
+++ b/gst-libs/Makefile.in
@@ -114,16 +114,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -297,7 +296,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -319,7 +317,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -341,9 +338,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -505,6 +499,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -518,8 +513,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -606,8 +599,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -659,6 +650,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -679,6 +671,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -716,7 +710,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/gst/Makefile.am b/gst-libs/gst/Makefile.am
index 732978d..7d0b309 100644
--- a/gst-libs/gst/Makefile.am
+++ b/gst-libs/gst/Makefile.am
@@ -11,14 +11,14 @@
 endif
 
 SUBDIRS = uridownloader adaptivedemux interfaces basecamerabinsrc codecparsers \
-	 insertbin mpegts base video player $(GL_DIR) $(WAYLAND_DIR)
+	 insertbin mpegts base video audio player $(GL_DIR) $(WAYLAND_DIR)
 
 noinst_HEADERS = gst-i18n-plugin.h gettext.h glib-compat-private.h
 DIST_SUBDIRS = uridownloader adaptivedemux interfaces gl basecamerabinsrc \
-	codecparsers insertbin mpegts wayland base video player
+	codecparsers insertbin mpegts wayland base video audio player
 
 #dependencies
-video: base
+video, audio: base
 
 adaptivedemux: uridownloader
 
diff --git a/gst-libs/gst/Makefile.in b/gst-libs/gst/Makefile.in
index b0f15e3..3129dc7 100644
--- a/gst-libs/gst/Makefile.in
+++ b/gst-libs/gst/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -299,7 +298,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -321,7 +319,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -343,9 +340,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -507,6 +501,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -520,8 +515,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -608,8 +601,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -661,6 +652,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -681,6 +673,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -718,7 +712,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -762,11 +755,11 @@
 @USE_OPENGL_TRUE@GL_DIR = gl
 @USE_WAYLAND_TRUE@WAYLAND_DIR = wayland
 SUBDIRS = uridownloader adaptivedemux interfaces basecamerabinsrc codecparsers \
-	 insertbin mpegts base video player $(GL_DIR) $(WAYLAND_DIR)
+	 insertbin mpegts base video audio player $(GL_DIR) $(WAYLAND_DIR)
 
 noinst_HEADERS = gst-i18n-plugin.h gettext.h glib-compat-private.h
 DIST_SUBDIRS = uridownloader adaptivedemux interfaces gl basecamerabinsrc \
-	codecparsers insertbin mpegts wayland base video player
+	codecparsers insertbin mpegts wayland base video audio player
 
 INDEPENDENT_SUBDIRS = \
 	interfaces basecamerabinsrc codecparsers insertbin uridownloader \
@@ -1085,7 +1078,7 @@
 
 
 #dependencies
-video: base
+video, audio: base
 
 adaptivedemux: uridownloader
 
diff --git a/gst-libs/gst/adaptivedemux/Makefile.in b/gst-libs/gst/adaptivedemux/Makefile.in
index 4007d4a..8719883 100644
--- a/gst-libs/gst/adaptivedemux/Makefile.in
+++ b/gst-libs/gst/adaptivedemux/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -327,7 +326,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -349,7 +347,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -371,9 +368,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -535,6 +529,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -548,8 +543,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -636,8 +629,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -689,6 +680,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -709,6 +701,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -746,7 +740,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
index cb5e4a1..ae6ce2c 100644
--- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
+++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
@@ -135,6 +135,7 @@
 #define DEFAULT_CONNECTION_SPEED 0
 #define DEFAULT_BITRATE_LIMIT 0.8
 #define SRC_QUEUE_MAX_BYTES 20 * 1024 * 1024    /* For safety. Large enough to hold a segment. */
+#define NUM_LOOKBACK_FRAGMENTS 3
 
 #define GST_MANIFEST_GET_LOCK(d) (&(GST_ADAPTIVE_DEMUX_CAST(d)->priv->manifest_lock))
 #define GST_MANIFEST_LOCK(d) g_rec_mutex_lock (GST_MANIFEST_GET_LOCK (d));
@@ -144,6 +145,10 @@
 #define GST_API_LOCK(d)   g_mutex_lock (GST_API_GET_LOCK (d));
 #define GST_API_UNLOCK(d) g_mutex_unlock (GST_API_GET_LOCK (d));
 
+#define GST_ADAPTIVE_DEMUX_SEGMENT_GET_LOCK(d) (&GST_ADAPTIVE_DEMUX_CAST(d)->priv->segment_lock)
+#define GST_ADAPTIVE_DEMUX_SEGMENT_LOCK(d) g_mutex_lock (GST_ADAPTIVE_DEMUX_SEGMENT_GET_LOCK (d))
+#define GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK(d) g_mutex_unlock (GST_ADAPTIVE_DEMUX_SEGMENT_GET_LOCK (d))
+
 enum
 {
   PROP_0,
@@ -188,6 +193,12 @@
   GMutex manifest_update_lock;
 
   GMutex api_lock;
+
+  /* Protects demux and stream segment information
+   * Needed because seeks can update segment information
+   * without needing to stop tasks when they just want to
+   * update the segment boundaries */
+  GMutex segment_lock;
 };
 
 static GstBinClass *parent_class = NULL;
@@ -220,7 +231,8 @@
     gboolean first_and_live);
 static gboolean gst_adaptive_demux_is_live (GstAdaptiveDemux * demux);
 static GstFlowReturn gst_adaptive_demux_stream_seek (GstAdaptiveDemux * demux,
-    GstAdaptiveDemuxStream * stream, GstClockTime ts);
+    GstAdaptiveDemuxStream * stream, gboolean forward, GstSeekFlags flags,
+    GstClockTime ts, GstClockTime * final_ts);
 static gboolean gst_adaptive_demux_stream_has_next_fragment (GstAdaptiveDemux *
     demux, GstAdaptiveDemuxStream * stream);
 static gboolean gst_adaptive_demux_stream_select_bitrate (GstAdaptiveDemux *
@@ -415,6 +427,7 @@
 
   g_rec_mutex_init (&demux->priv->manifest_lock);
   g_mutex_init (&demux->priv->api_lock);
+  g_mutex_init (&demux->priv->segment_lock);
 
   pad_template =
       gst_element_class_get_pad_template (GST_ELEMENT_CLASS (klass), "sink");
@@ -452,6 +465,7 @@
   g_rec_mutex_clear (&priv->updates_lock);
   g_rec_mutex_clear (&demux->priv->manifest_lock);
   g_mutex_clear (&demux->priv->api_lock);
+  g_mutex_clear (&demux->priv->segment_lock);
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -1048,6 +1062,8 @@
 
   stream->pad = pad;
   stream->demux = demux;
+  stream->fragment_bitrates =
+      g_malloc0 (sizeof (guint64) * NUM_LOOKBACK_FRAGMENTS);
   gst_pad_set_element_private (pad, stream);
 
   gst_pad_set_query_function (pad,
@@ -1065,6 +1081,21 @@
   return stream;
 }
 
+GstAdaptiveDemuxStream *
+gst_adaptive_demux_find_stream_for_pad (GstAdaptiveDemux * demux, GstPad * pad)
+{
+  GList *iter;
+
+  for (iter = demux->streams; iter; iter = g_list_next (iter)) {
+    GstAdaptiveDemuxStream *stream = iter->data;
+    if (stream->pad == pad) {
+      return stream;
+    }
+  }
+  g_assert_not_reached ();
+  return NULL;
+}
+
 /* must be called with manifest_lock taken.
  * It will temporarily drop the manifest_lock in order to join the task.
  * It will join only the old_streams (the demux->streams are joined by
@@ -1120,6 +1151,10 @@
     stream->pending_events = NULL;
   }
 
+  if (stream->internal_pad) {
+    gst_object_unparent (GST_OBJECT_CAST (stream->internal_pad));
+  }
+
   if (stream->src_srcpad) {
     gst_object_unref (stream->src_srcpad);
     stream->src_srcpad = NULL;
@@ -1133,6 +1168,7 @@
 
   g_cond_clear (&stream->fragment_download_cond);
   g_mutex_clear (&stream->fragment_download_lock);
+  g_free (stream->fragment_bitrates);
 
   if (stream->pad) {
     gst_object_unref (stream->pad);
@@ -1174,6 +1210,13 @@
   return klass->seek != NULL;
 }
 
+#define IS_SNAP_SEEK(f) (f & (GST_SEEK_FLAG_SNAP_BEFORE | \
+                              GST_SEEK_FLAG_SNAP_AFTER | \
+                              GST_SEEK_FLAG_SNAP_NEAREST))
+#define REMOVE_SNAP_FLAGS(f) (f & !(GST_SEEK_FLAG_SNAP_BEFORE | \
+                              GST_SEEK_FLAG_SNAP_AFTER | \
+                              GST_SEEK_FLAG_SNAP_NEAREST))
+
 static gboolean
 gst_adaptive_demux_src_event (GstPad * pad, GstObject * parent,
     GstEvent * event)
@@ -1184,6 +1227,8 @@
   demux = GST_ADAPTIVE_DEMUX_CAST (parent);
   demux_class = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);
 
+  /* FIXME handle events received on pads that are to be removed */
+
   switch (event->type) {
     case GST_EVENT_SEEK:
     {
@@ -1239,17 +1284,11 @@
 
       seqnum = gst_event_get_seqnum (event);
 
-      GST_DEBUG_OBJECT (demux,
-          "seek event, rate: %f type: %d start: %" GST_TIME_FORMAT " stop: %"
-          GST_TIME_FORMAT, rate, start_type, GST_TIME_ARGS (start),
-          GST_TIME_ARGS (stop));
+      GST_DEBUG_OBJECT (demux, "seek event, %" GST_PTR_FORMAT, event);
 
       /* have a backup in case seek fails */
       gst_segment_copy_into (&demux->segment, &oldsegment);
 
-      gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
-          start, stop_type, stop, &update);
-
       if (flags & GST_SEEK_FLAG_FLUSH) {
         GstEvent *fevent;
 
@@ -1257,11 +1296,75 @@
         fevent = gst_event_new_flush_start ();
         gst_event_set_seqnum (fevent, seqnum);
         gst_adaptive_demux_push_src_event (demux, fevent);
+
+        gst_adaptive_demux_stop_tasks (demux);
+      } else if ((rate > 0 && start_type != GST_SEEK_TYPE_NONE) ||
+          (rate < 0 && stop_type != GST_SEEK_TYPE_NONE)) {
+
+        gst_adaptive_demux_stop_tasks (demux);
       }
-      gst_adaptive_demux_stop_tasks (demux);
+
+      GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
+      gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
+          start, stop_type, stop, &update);
+
+      /* FIXME - this seems unatural, do_seek() is updating base when we
+       * only want the start/stop position to change, maybe do_seek() needs
+       * some fixing? */
+      if (!(flags & GST_SEEK_FLAG_FLUSH) && ((rate > 0
+                  && start_type == GST_SEEK_TYPE_NONE) || (rate < 0
+                  && stop_type == GST_SEEK_TYPE_NONE))) {
+        demux->segment.base = oldsegment.base;
+      }
+
       GST_DEBUG_OBJECT (demux, "Seeking to segment %" GST_SEGMENT_FORMAT,
           &demux->segment);
 
+      /*
+       * Handle snap seeks as follows:
+       * 1) do the snap seeking on the stream that received
+       *    the event
+       * 2) use the final position on this stream to seek
+       *    on the other streams to the same position
+       *
+       * We can't snap at all streams at the same time as
+       * they might end in different positions, so just
+       * use the one that received the event as the 'leading'
+       * one to do the snap seek.
+       */
+      if (IS_SNAP_SEEK (flags) && demux_class->stream_seek) {
+        GstAdaptiveDemuxStream *stream =
+            gst_adaptive_demux_find_stream_for_pad (demux, pad);
+        GstClockTime ts;
+        GstSeekFlags stream_seek_flags = flags;
+
+        /* snap-seek on the stream that received the event and then
+         * use the resulting position to seek on all streams */
+
+        if (rate >= 0 && start_type != GST_SEEK_TYPE_NONE) {
+          ts = start;
+        } else if (rate < 0 && stop_type != GST_SEEK_TYPE_NONE) {
+          ts = stop;
+        }
+
+        demux_class->stream_seek (stream, rate >= 0, stream_seek_flags, ts,
+            &ts);
+
+        /* replace event with a new one without snaping to seek on all streams */
+        gst_event_unref (event);
+        if (rate >= 0 && start_type != GST_SEEK_TYPE_NONE) {
+          start = ts;
+        } else if (rate < 0 && stop_type != GST_SEEK_TYPE_NONE) {
+          stop = ts;
+        }
+        event =
+            gst_event_new_seek (rate, format, REMOVE_SNAP_FLAGS (flags),
+            start_type, start, stop_type, stop);
+        GST_DEBUG_OBJECT (demux, "Adapted snap seek to %" GST_PTR_FORMAT,
+            event);
+      }
+      GST_DEBUG_OBJECT (demux, "Calling subclass seek: %" GST_PTR_FORMAT,
+          event);
       ret = demux_class->seek (demux, event);
 
       if (!ret) {
@@ -1270,6 +1373,7 @@
       } else {
         demux->priv->segment_seqnum = seqnum;
       }
+      GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
 
       if (flags & GST_SEEK_FLAG_FLUSH) {
         GstEvent *fevent;
@@ -1287,6 +1391,7 @@
         GstClockTime period_start =
             gst_adaptive_demux_get_period_start_time (demux);
 
+        GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
         for (iter = demux->streams; iter; iter = g_list_next (iter)) {
           GstAdaptiveDemuxStream *stream = iter->data;
           GstEvent *seg_evt;
@@ -1298,12 +1403,17 @@
           offset =
               gst_adaptive_demux_stream_get_presentation_offset (demux, stream);
           stream->segment.start += offset - period_start;
-          stream->segment.position = stream->segment.start;
+          if (demux->segment.rate > 0 && start_type != GST_SEEK_TYPE_NONE)
+            stream->segment.position = stream->segment.start;
+          else if (demux->segment.rate < 0 && stop_type != GST_SEEK_TYPE_NONE)
+            stream->segment.position = stream->segment.stop;
           seg_evt = gst_event_new_segment (&stream->segment);
           gst_event_set_seqnum (seg_evt, demux->priv->segment_seqnum);
           gst_event_replace (&stream->pending_segment, seg_evt);
           gst_event_unref (seg_evt);
         }
+
+        GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
       }
 
       /* Restart the demux */
@@ -1315,26 +1425,23 @@
       return ret;
     }
     case GST_EVENT_RECONFIGURE:{
-      GList *iter;
+      GstAdaptiveDemuxStream *stream;
 
       GST_MANIFEST_LOCK (demux);
+      stream = gst_adaptive_demux_find_stream_for_pad (demux, pad);
 
-      for (iter = demux->streams; iter; iter = g_list_next (iter)) {
-        GstAdaptiveDemuxStream *stream = iter->data;
-
-        if (stream->pad == pad) {
-          if (stream->last_ret == GST_FLOW_NOT_LINKED) {
-            stream->last_ret = GST_FLOW_OK;
-            stream->restart_download = TRUE;
-            stream->need_header = TRUE;
-            stream->discont = TRUE;
-            GST_DEBUG_OBJECT (stream->pad, "Restarting download loop");
-            gst_task_start (stream->download_task);
-          }
-          gst_event_unref (event);
-          GST_MANIFEST_UNLOCK (demux);
-          return TRUE;
+      if (stream) {
+        if (stream->last_ret == GST_FLOW_NOT_LINKED) {
+          stream->last_ret = GST_FLOW_OK;
+          stream->restart_download = TRUE;
+          stream->need_header = TRUE;
+          stream->discont = TRUE;
+          GST_DEBUG_OBJECT (stream->pad, "Restarting download loop");
+          gst_task_start (stream->download_task);
         }
+        gst_event_unref (event);
+        GST_MANIFEST_UNLOCK (demux);
+        return TRUE;
       }
       GST_MANIFEST_UNLOCK (demux);
     }
@@ -1421,6 +1528,11 @@
         if (can_seek) {
           if (gst_adaptive_demux_is_live (demux)) {
             ret = gst_adaptive_demux_get_live_seek_range (demux, &start, &stop);
+            if (!ret) {
+              GST_MANIFEST_UNLOCK (demux);
+              GST_INFO_OBJECT (demux, "can't answer seeking query");
+              return FALSE;
+            }
           } else {
             duration = demux_class->get_duration (demux);
             if (GST_CLOCK_TIME_IS_VALID (duration) && duration > 0)
@@ -1604,10 +1716,29 @@
 
 /* must be called with manifest_lock taken */
 static guint64
+_update_average_bitrate (GstAdaptiveDemux * demux,
+    GstAdaptiveDemuxStream * stream, guint64 new_bitrate)
+{
+  gint index = stream->moving_index % NUM_LOOKBACK_FRAGMENTS;
+
+  stream->moving_bitrate -= stream->fragment_bitrates[index];
+  stream->fragment_bitrates[index] = new_bitrate;
+  stream->moving_bitrate += new_bitrate;
+
+  stream->moving_index += 1;
+
+  if (stream->moving_index > NUM_LOOKBACK_FRAGMENTS)
+    return stream->moving_bitrate / NUM_LOOKBACK_FRAGMENTS;
+  return stream->moving_bitrate / stream->moving_index;
+}
+
+/* must be called with manifest_lock taken */
+static guint64
 gst_adaptive_demux_stream_update_current_bitrate (GstAdaptiveDemux * demux,
     GstAdaptiveDemuxStream * stream)
 {
-  guint64 bitrate;
+  guint64 average_bitrate;
+  guint64 fragment_bitrate;
 
   if (demux->connection_speed) {
     GST_LOG_OBJECT (demux, "Connection-speed is set to %u kbps, using it",
@@ -1615,12 +1746,27 @@
     return demux->connection_speed;
   }
 
-  g_object_get (stream->queue, "avg-in-rate", &bitrate, NULL);
-  bitrate *= 8;
+  g_object_get (stream->queue, "avg-in-rate", &fragment_bitrate, NULL);
+  fragment_bitrate *= 8;
   GST_DEBUG_OBJECT (demux, "Download bitrate is : %" G_GUINT64_FORMAT " bps",
-      bitrate);
-  stream->current_download_rate = bitrate;
-  return bitrate;
+      fragment_bitrate);
+
+  average_bitrate = _update_average_bitrate (demux, stream, fragment_bitrate);
+
+  GST_INFO_OBJECT (stream, "last fragment bitrate was %" G_GUINT64_FORMAT,
+      fragment_bitrate);
+  GST_INFO_OBJECT (stream,
+      "Last %u fragments average bitrate is %" G_GUINT64_FORMAT,
+      NUM_LOOKBACK_FRAGMENTS, average_bitrate);
+
+  /* Conservative approach, make sure we don't upgrade too fast */
+  stream->current_download_rate = MIN (average_bitrate, fragment_bitrate);
+
+  stream->current_download_rate *= demux->bitrate_limit;
+  GST_DEBUG_OBJECT (demux, "Bitrate after bitrate limit (%0.2f): %"
+      G_GUINT64_FORMAT, demux->bitrate_limit,
+      stream->current_download_rate * 8);
+  return stream->current_download_rate;
 }
 
 /* must be called with manifest_lock taken */
@@ -1672,6 +1818,7 @@
     GstClockTime period_start =
         gst_adaptive_demux_get_period_start_time (demux);
 
+    GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
     if (demux->segment.rate < 0)
       /* Set DISCONT flag for every first buffer in reverse playback mode
        * as each fragment for its own has to be reversed */
@@ -1691,6 +1838,8 @@
         demux->segment.position =
             stream->segment.position - offset + period_start;
     }
+    GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
+
     GST_LOG_OBJECT (stream->pad,
         "Going to push buffer with PTS %" GST_TIME_FORMAT,
         GST_TIME_ARGS (GST_BUFFER_PTS (buffer)));
@@ -1720,8 +1869,10 @@
     stream->pending_caps = NULL;
   }
   if (G_UNLIKELY (stream->pending_segment)) {
+    GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
     pending_segment = stream->pending_segment;
     stream->pending_segment = NULL;
+    GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
   }
   if (G_UNLIKELY (stream->pending_tags || stream->bitrate_changed)) {
     GstTagList *tags = stream->pending_tags;
@@ -1820,12 +1971,15 @@
 static GstFlowReturn
 _src_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer)
 {
-  GstPad *srcpad = (GstPad *) parent;
-  GstAdaptiveDemuxStream *stream = gst_pad_get_element_private (srcpad);
-  GstAdaptiveDemux *demux = stream->demux;
-  GstAdaptiveDemuxClass *klass = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);
+  GstAdaptiveDemuxStream *stream;
+  GstAdaptiveDemux *demux;
+  GstAdaptiveDemuxClass *klass;
   GstFlowReturn ret = GST_FLOW_OK;
 
+  demux = GST_ADAPTIVE_DEMUX_CAST (parent);
+  stream = gst_pad_get_element_private (pad);
+  klass = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);
+
   GST_MANIFEST_LOCK (demux);
 
   /* do not make any changes if the stream is cancelled */
@@ -1861,6 +2015,7 @@
         GST_TIME_ARGS (GST_BUFFER_PTS (buffer)));
 
     if (GST_BUFFER_PTS_IS_VALID (buffer)) {
+      GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
       stream->segment.position = GST_BUFFER_PTS (buffer);
 
       /* Convert from position inside the stream's segment to the demuxer's
@@ -1869,6 +2024,7 @@
           demux->segment.position)
         demux->segment.position =
             stream->segment.position - offset + period_start;
+      GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
     }
 
   } else {
@@ -1977,8 +2133,7 @@
 static gboolean
 _src_event (GstPad * pad, GstObject * parent, GstEvent * event)
 {
-  GstPad *srcpad = GST_PAD_CAST (parent);
-  GstAdaptiveDemuxStream *stream = gst_pad_get_element_private (srcpad);
+  GstAdaptiveDemuxStream *stream = gst_pad_get_element_private (pad);
   GstAdaptiveDemux *demux = stream->demux;
 
   switch (GST_EVENT_TYPE (event)) {
@@ -2007,6 +2162,8 @@
 static gboolean
 _src_query (GstPad * pad, GstObject * parent, GstQuery * query)
 {
+  GstAdaptiveDemuxStream *stream = gst_pad_get_element_private (pad);
+
   switch (GST_QUERY_TYPE (query)) {
     case GST_QUERY_ALLOCATION:
       return FALSE;
@@ -2015,7 +2172,7 @@
       break;
   }
 
-  return gst_pad_query_default (pad, parent, query);
+  return gst_pad_peer_query (stream->pad, query);
 }
 
 /* must be called with manifest_lock taken.
@@ -2078,45 +2235,6 @@
   return ret;
 }
 
-static gboolean
-_adaptive_demux_pad_remove_eos_sticky (GstPad * pad, GstEvent ** event,
-    gpointer udata)
-{
-  if (GST_EVENT_TYPE (*event) == GST_EVENT_EOS) {
-    gst_event_replace (event, NULL);
-    return FALSE;
-  }
-  return TRUE;
-}
-
-/* must be called with manifest_lock taken */
-static void
-gst_adaptive_demux_stream_clear_eos_and_flush_state (GstAdaptiveDemuxStream *
-    stream)
-{
-  GstPad *internal_pad;
-
-  internal_pad =
-      GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD (stream->pad)));
-  gst_pad_sticky_events_foreach (internal_pad,
-      _adaptive_demux_pad_remove_eos_sticky, NULL);
-  GST_OBJECT_FLAG_UNSET (internal_pad, GST_PAD_FLAG_EOS);
-  /* In case the stream is recovering from a flushing seek it is also needed
-   * to remove the flushing state from this pad. The flushing state is set
-   * because of the flow return propagating until the source element */
-  GST_PAD_UNSET_FLUSHING (internal_pad);
-
-  gst_object_unref (internal_pad);
-}
-
-static void
-gst_adaptive_demux_stream_queue_overrun (GstElement * queue, gpointer user_data)
-{
-  GstAdaptiveDemuxStream *stream = (GstAdaptiveDemuxStream *) user_data;
-  GST_WARNING_OBJECT (stream->pad,
-      "Queue overrun! The fragment to download is too big according to the current queue size limit");
-}
-
 /* must be called with manifest_lock taken */
 static gboolean
 gst_adaptive_demux_stream_update_source (GstAdaptiveDemuxStream * stream,
@@ -2174,7 +2292,7 @@
     GstElement *queue;
     GstPadLinkReturn pad_link_ret;
     GObjectClass *gobject_class;
-    GstPad *internal_pad;
+    gchar *internal_name, *bin_name;
 
     /* Our src consists of a bin containing uri_handler -> queue2 . The
      * purpose of the queue2 is to allow the uri_handler to download an
@@ -2188,8 +2306,6 @@
     g_object_set (queue, "max-size-bytes", (guint) SRC_QUEUE_MAX_BYTES, NULL);
     g_object_set (queue, "max-size-buffers", (guint) 0, NULL);
     g_object_set (queue, "max-size-time", (guint64) 0, NULL);
-    g_signal_connect (queue, "overrun",
-        G_CALLBACK (gst_adaptive_demux_stream_queue_overrun), stream);
 
     uri_handler = gst_element_make_from_uri (GST_URI_SRC, uri, NULL, NULL);
     if (uri_handler == NULL) {
@@ -2229,7 +2345,9 @@
     }
 
     /* Source bin creation */
-    stream->src = gst_bin_new (NULL);
+    bin_name = g_strdup_printf ("srcbin-%s", GST_PAD_NAME (stream->pad));
+    stream->src = gst_bin_new (bin_name);
+    g_free (bin_name);
     if (stream->src == NULL) {
       gst_object_unref (queue);
       gst_object_unref (uri_handler);
@@ -2268,20 +2386,27 @@
     gst_bin_add (GST_BIN_CAST (demux), stream->src);
     stream->src_srcpad = gst_element_get_static_pad (stream->src, "src");
 
-    gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (stream->pad),
-        stream->src_srcpad);
-
-    /* set up our internal pad to drop all events from
+    /* set up our internal floating pad to drop all events from
      * the http src we don't care about. On the chain function
-     * we just push the buffer forward, but this way dash can get
-     * the flow return from downstream */
-    internal_pad =
-        GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD (stream->pad)));
-    gst_pad_set_chain_function (GST_PAD_CAST (internal_pad), _src_chain);
-    gst_pad_set_event_function (GST_PAD_CAST (internal_pad), _src_event);
-    /* need to set query otherwise deadlocks happen with allocation queries */
-    gst_pad_set_query_function (GST_PAD_CAST (internal_pad), _src_query);
-    gst_object_unref (internal_pad);
+     * we just push the buffer forward */
+    internal_name = g_strdup_printf ("internal-%s", GST_PAD_NAME (stream->pad));
+    stream->internal_pad = gst_pad_new (internal_name, GST_PAD_SINK);
+    g_free (internal_name);
+    gst_object_set_parent (GST_OBJECT_CAST (stream->internal_pad),
+        GST_OBJECT_CAST (demux));
+    GST_OBJECT_FLAG_SET (stream->internal_pad, GST_PAD_FLAG_NEED_PARENT);
+    gst_pad_set_element_private (stream->internal_pad, stream);
+    gst_pad_set_active (stream->internal_pad, TRUE);
+    gst_pad_set_chain_function (stream->internal_pad, _src_chain);
+    gst_pad_set_event_function (stream->internal_pad, _src_event);
+    gst_pad_set_query_function (stream->internal_pad, _src_query);
+
+    if (gst_pad_link_full (stream->src_srcpad, stream->internal_pad,
+            GST_PAD_LINK_CHECK_NOTHING) != GST_PAD_LINK_OK) {
+      GST_ERROR_OBJECT (stream->pad, "Failed to link internal pad");
+      return FALSE;
+    }
+
     stream->uri_handler = uri_handler;
     stream->queue = queue;
   }
@@ -2385,24 +2510,11 @@
     ret = GST_FLOW_CUSTOM_ERROR;
   }
 
-  /* flush the proxypads so that the EOS state is reset */
-  gst_pad_push_event (stream->src_srcpad, gst_event_new_flush_start ());
-
-  /* sending flush stop event will serialiase on stream->src_srcpad.
-   * But the _src_chain function will first get the pad lock and then the
-   * manifest lock, so we cannot hold the manifest lock here while
-   * we will try to get the pad lock (taking locks in reversing order
-   * will lead to deadlock)
-   *
-   * In conclusion, we need to release the manifest lock before flushing
-   */
-  GST_MANIFEST_UNLOCK (demux);
-
-  gst_pad_push_event (stream->src_srcpad, gst_event_new_flush_stop (TRUE));
-
   /* changing src element state might try to join the streaming thread, so
    * we must not hold the manifest lock.
    */
+  GST_MANIFEST_UNLOCK (demux);
+
   gst_element_set_state (stream->src, GST_STATE_READY);
 
   GST_MANIFEST_LOCK (demux);
@@ -2414,7 +2526,10 @@
   }
   g_mutex_unlock (&stream->fragment_download_lock);
 
-  gst_adaptive_demux_stream_clear_eos_and_flush_state (stream);
+  /* deactivate and reactivate our ghostpad to make it fresh for a new
+   * stream */
+  gst_pad_set_active (stream->internal_pad, FALSE);
+  gst_pad_set_active (stream->internal_pad, TRUE);
 
   return ret;
 }
@@ -2560,21 +2675,25 @@
   g_mutex_unlock (&stream->fragment_download_lock);
 
   /* Check if we're done with our segment */
+  GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
   if (demux->segment.rate > 0) {
     if (GST_CLOCK_TIME_IS_VALID (demux->segment.stop)
         && stream->segment.position >= stream->segment.stop) {
+      GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
       ret = GST_FLOW_EOS;
       gst_task_stop (stream->download_task);
       goto end_of_manifest;
     }
   } else {
     if (GST_CLOCK_TIME_IS_VALID (demux->segment.start)
-        && stream->segment.position < stream->segment.start) {
+        && stream->segment.position <= stream->segment.start) {
+      GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
       ret = GST_FLOW_EOS;
       gst_task_stop (stream->download_task);
       goto end_of_manifest;
     }
   }
+  GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
 
   /* Cleanup old streams if any */
   if (G_UNLIKELY (demux->priv->old_streams != NULL)) {
@@ -2599,18 +2718,13 @@
   }
 
   if (G_UNLIKELY (stream->restart_download)) {
-    GstSegment segment;
     GstEvent *seg_event;
-    GstClockTime cur, ts;
+    GstClockTime cur, ts = 0;
     gint64 pos;
 
     GST_DEBUG_OBJECT (stream->pad,
         "Activating stream due to reconfigure event");
 
-    cur = ts =
-        gst_segment_to_stream_time (&stream->segment, GST_FORMAT_TIME,
-        stream->segment.position);
-
     if (gst_pad_peer_query_position (stream->pad, GST_FORMAT_TIME, &pos)) {
       ts = (GstClockTime) pos;
       GST_DEBUG_OBJECT (demux, "Downstream position: %"
@@ -2635,14 +2749,17 @@
       }
     }
 
+    GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
+    cur =
+        gst_segment_to_stream_time (&stream->segment, GST_FORMAT_TIME,
+        stream->segment.position);
+
     /* we might have already pushed this data */
     ts = MAX (ts, cur);
 
     GST_DEBUG_OBJECT (stream->pad, "Restarting stream at "
         "position %" GST_TIME_FORMAT, GST_TIME_ARGS (ts));
 
-    gst_segment_copy_into (&demux->segment, &segment);
-
     if (GST_CLOCK_TIME_IS_VALID (ts)) {
       GstClockTime offset, period_start;
 
@@ -2651,9 +2768,10 @@
       period_start = gst_adaptive_demux_get_period_start_time (demux);
 
       /* TODO check return */
-      gst_adaptive_demux_stream_seek (demux, stream, ts);
+      gst_adaptive_demux_stream_seek (demux, stream, demux->segment.rate >= 0,
+          0, ts, &ts);
 
-      segment.position = ts - period_start + offset;
+      stream->segment.position = ts - period_start + offset;
     }
 
     /* The stream's segment is still correct except for
@@ -2661,6 +2779,8 @@
      * updated position */
     seg_event = gst_event_new_segment (&stream->segment);
     gst_event_set_seqnum (seg_event, demux->priv->segment_seqnum);
+    GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
+
     GST_DEBUG_OBJECT (stream->pad, "Sending restart segment: %"
         GST_PTR_FORMAT, seg_event);
     gst_pad_push_event (stream->pad, seg_event);
@@ -3013,12 +3133,13 @@
 /* must be called with manifest_lock taken */
 static GstFlowReturn
 gst_adaptive_demux_stream_seek (GstAdaptiveDemux * demux,
-    GstAdaptiveDemuxStream * stream, GstClockTime ts)
+    GstAdaptiveDemuxStream * stream, gboolean forward, GstSeekFlags flags,
+    GstClockTime ts, GstClockTime * final_ts)
 {
   GstAdaptiveDemuxClass *klass = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);
 
   if (klass->stream_seek)
-    return klass->stream_seek (stream, ts);
+    return klass->stream_seek (stream, forward, flags, ts, final_ts);
   return GST_FLOW_ERROR;
 }
 
@@ -3080,7 +3201,9 @@
               GST_TYPE_CLOCK_TIME,
               stream->download_total_time * GST_USECOND, NULL)));
 
-  if (GST_CLOCK_TIME_IS_VALID (duration)) {
+  /* Don't update to the end of the segment if in reverse playback */
+  GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
+  if (GST_CLOCK_TIME_IS_VALID (duration) && demux->segment.rate > 0) {
     GstClockTime offset =
         gst_adaptive_demux_stream_get_presentation_offset (demux, stream);
     GstClockTime period_start =
@@ -3095,6 +3218,7 @@
       demux->segment.position =
           stream->segment.position - offset + period_start;
   }
+  GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
 
   if (gst_adaptive_demux_is_live (demux)
       || gst_adaptive_demux_stream_has_next_fragment (demux, stream)) {
diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.h b/gst-libs/gst/adaptivedemux/gstadaptivedemux.h
index b95af59..ae2d895 100644
--- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.h
+++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.h
@@ -114,6 +114,7 @@
 struct _GstAdaptiveDemuxStream
 {
   GstPad *pad;
+  GstPad *internal_pad;
 
   GstAdaptiveDemux *demux;
 
@@ -159,6 +160,11 @@
   gint64 download_total_bytes;
   guint64 current_download_rate;
 
+  /* Average for the last fragments */
+  guint64 moving_bitrate;
+  guint moving_index;
+  guint64 *fragment_bitrates;
+
   GstAdaptiveDemuxStreamFragment fragment;
 
   guint download_error_count;
@@ -309,7 +315,7 @@
   void          (*advance_period)  (GstAdaptiveDemux * demux);
 
   void          (*stream_free)     (GstAdaptiveDemuxStream * stream);
-  GstFlowReturn (*stream_seek)     (GstAdaptiveDemuxStream * stream, GstClockTime ts);
+  GstFlowReturn (*stream_seek)     (GstAdaptiveDemuxStream * stream, gboolean forward, GstSeekFlags flags, GstClockTime target_ts, GstClockTime * final_ts);
   gboolean      (*stream_has_next_fragment)  (GstAdaptiveDemuxStream * stream);
   GstFlowReturn (*stream_advance_fragment) (GstAdaptiveDemuxStream * stream);
   /**
@@ -429,6 +435,8 @@
 
 GstAdaptiveDemuxStream *gst_adaptive_demux_stream_new (GstAdaptiveDemux * demux,
                                                        GstPad * pad);
+GstAdaptiveDemuxStream *gst_adaptive_demux_find_stream_for_pad (GstAdaptiveDemux * demux,
+                                                                GstPad * pad);
 void gst_adaptive_demux_stream_set_caps (GstAdaptiveDemuxStream * stream,
                                          GstCaps * caps);
 void gst_adaptive_demux_stream_set_tags (GstAdaptiveDemuxStream * stream,
diff --git a/gst-libs/gst/audio/Makefile.am b/gst-libs/gst/audio/Makefile.am
new file mode 100644
index 0000000..d810148
--- /dev/null
+++ b/gst-libs/gst/audio/Makefile.am
@@ -0,0 +1,27 @@
+# variables used for enum generation
+lib_LTLIBRARIES = libgstbadaudio-@GST_API_VERSION@.la
+
+CLEANFILES =
+
+libgstbadaudio_@GST_API_VERSION@_la_SOURCES = \
+	gstaudioaggregator.c
+
+nodist_libgstbadaudio_@GST_API_VERSION@_la_SOURCES = $(BUILT_SOURCES)
+
+libgstbadaudio_@GST_API_VERSION@_la_CFLAGS = \
+	-DGST_USE_UNSTABLE_API \
+	-I$(top_srcdir)/gst-libs \
+	-I$(top_builddir)/gst-libs \
+	$(GST_CFLAGS) $(ORC_CFLAGS) \
+	$(GST_PLUGINS_BASE_CFLAGS) \
+	$(GST_BASE_CFLAGS)
+
+libgstbadaudio_@GST_API_VERSION@_la_LIBADD = \
+	$(top_builddir)/gst-libs/gst/base/libgstbadbase-$(GST_API_VERSION).la \
+	$(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) \
+	$(GST_BASE_LIBS) $(GST_LIBS) $(ORC_LIBS) $(LIBM)
+
+libgstbadaudio_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
+
+libgstaudio_@GST_API_VERSION@includedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/audio
+libgstaudio_@GST_API_VERSION@include_HEADERS = gstaudioaggregator.h
diff --git a/ext/mpg123/Makefile.in b/gst-libs/gst/audio/Makefile.in
similarity index 79%
copy from ext/mpg123/Makefile.in
copy to gst-libs/gst/audio/Makefile.in
index e0f8f27..c854e91 100644
--- a/ext/mpg123/Makefile.in
+++ b/gst-libs/gst/audio/Makefile.in
@@ -90,7 +90,7 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-subdir = ext/mpg123
+subdir = gst-libs/gst/audio
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -116,19 +116,19 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+DIST_COMMON = $(srcdir)/Makefile.am \
+	$(libgstaudio_@GST_API_VERSION@include_HEADERS) \
 	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
@@ -161,22 +161,29 @@
     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
+am__installdirs = "$(DESTDIR)$(libdir)" \
+	"$(DESTDIR)$(libgstaudio_@GST_API_VERSION@includedir)"
+LTLIBRARIES = $(lib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-libgstmpg123_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+libgstbadaudio_@GST_API_VERSION@_la_DEPENDENCIES = $(top_builddir)/gst-libs/gst/base/libgstbadbase-$(GST_API_VERSION).la \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
-am_libgstmpg123_la_OBJECTS = libgstmpg123_la-gstmpg123audiodec.lo
-libgstmpg123_la_OBJECTS = $(am_libgstmpg123_la_OBJECTS)
+am_libgstbadaudio_@GST_API_VERSION@_la_OBJECTS =  \
+	libgstbadaudio_@GST_API_VERSION@_la-gstaudioaggregator.lo
+nodist_libgstbadaudio_@GST_API_VERSION@_la_OBJECTS =
+libgstbadaudio_@GST_API_VERSION@_la_OBJECTS =  \
+	$(am_libgstbadaudio_@GST_API_VERSION@_la_OBJECTS) \
+	$(nodist_libgstbadaudio_@GST_API_VERSION@_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-libgstmpg123_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(libgstmpg123_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(CCLD) $(libgstmpg123_la_CFLAGS) $(CFLAGS) \
-	$(libgstmpg123_la_LDFLAGS) $(LDFLAGS) -o $@
+libgstbadaudio_@GST_API_VERSION@_la_LINK = $(LIBTOOL) $(AM_V_lt) \
+	--tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	$(CCLD) $(libgstbadaudio_@GST_API_VERSION@_la_CFLAGS) \
+	$(CFLAGS) $(libgstbadaudio_@GST_API_VERSION@_la_LDFLAGS) \
+	$(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -211,33 +218,16 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libgstmpg123_la_SOURCES)
-DIST_SOURCES = $(libgstmpg123_la_SOURCES)
+SOURCES = $(libgstbadaudio_@GST_API_VERSION@_la_SOURCES) \
+	$(nodist_libgstbadaudio_@GST_API_VERSION@_la_SOURCES)
+DIST_SOURCES = $(libgstbadaudio_@GST_API_VERSION@_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
-HEADERS = $(noinst_HEADERS)
+HEADERS = $(libgstaudio_@GST_API_VERSION@include_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -324,7 +314,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +335,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +356,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +517,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +531,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +617,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +668,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +689,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +728,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -783,18 +767,30 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
-plugin_LTLIBRARIES = libgstmpg123.la
-libgstmpg123_la_SOURCES = gstmpg123audiodec.c
-libgstmpg123_la_CFLAGS = -DGST_USE_UNSTABLE_API \
+
+# variables used for enum generation
+lib_LTLIBRARIES = libgstbadaudio-@GST_API_VERSION@.la
+CLEANFILES = 
+libgstbadaudio_@GST_API_VERSION@_la_SOURCES = \
+	gstaudioaggregator.c
+
+nodist_libgstbadaudio_@GST_API_VERSION@_la_SOURCES = $(BUILT_SOURCES)
+libgstbadaudio_@GST_API_VERSION@_la_CFLAGS = \
+	-DGST_USE_UNSTABLE_API \
+	-I$(top_srcdir)/gst-libs \
+	-I$(top_builddir)/gst-libs \
+	$(GST_CFLAGS) $(ORC_CFLAGS) \
 	$(GST_PLUGINS_BASE_CFLAGS) \
-	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(MPG123_CFLAGS)
+	$(GST_BASE_CFLAGS)
 
-libgstmpg123_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_API_VERSION@ \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(MPG123_LIBS)
+libgstbadaudio_@GST_API_VERSION@_la_LIBADD = \
+	$(top_builddir)/gst-libs/gst/base/libgstbadbase-$(GST_API_VERSION).la \
+	$(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) \
+	$(GST_BASE_LIBS) $(GST_LIBS) $(ORC_LIBS) $(LIBM)
 
-libgstmpg123_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstmpg123_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = gstmpg123audiodec.h
+libgstbadaudio_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
+libgstaudio_@GST_API_VERSION@includedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/audio
+libgstaudio_@GST_API_VERSION@include_HEADERS = gstaudioaggregator.h
 all: all-am
 
 .SUFFIXES:
@@ -808,9 +804,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/mpg123/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst-libs/gst/audio/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu ext/mpg123/Makefile
+	  $(AUTOMAKE) --gnu gst-libs/gst/audio/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -829,33 +825,33 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
 	list2=; for p in $$list; do \
 	  if test -f $$p; then \
 	    list2="$$list2 $$p"; \
 	  else :; fi; \
 	done; \
 	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
 	}
 
-uninstall-pluginLTLIBRARIES:
+uninstall-libLTLIBRARIES:
 	@$(NORMAL_UNINSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
 	for p in $$list; do \
 	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
+	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
 	done
 
-clean-pluginLTLIBRARIES:
-	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
-	@list='$(plugin_LTLIBRARIES)'; \
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; \
 	locs=`for p in $$list; do echo $$p; done | \
 	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
 	      sort -u`; \
@@ -864,8 +860,8 @@
 	  rm -f $${locs}; \
 	}
 
-libgstmpg123.la: $(libgstmpg123_la_OBJECTS) $(libgstmpg123_la_DEPENDENCIES) $(EXTRA_libgstmpg123_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libgstmpg123_la_LINK) -rpath $(plugindir) $(libgstmpg123_la_OBJECTS) $(libgstmpg123_la_LIBADD) $(LIBS)
+libgstbadaudio-@GST_API_VERSION@.la: $(libgstbadaudio_@GST_API_VERSION@_la_OBJECTS) $(libgstbadaudio_@GST_API_VERSION@_la_DEPENDENCIES) $(EXTRA_libgstbadaudio_@GST_API_VERSION@_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libgstbadaudio_@GST_API_VERSION@_la_LINK) -rpath $(libdir) $(libgstbadaudio_@GST_API_VERSION@_la_OBJECTS) $(libgstbadaudio_@GST_API_VERSION@_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -873,7 +869,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstbadaudio_@GST_API_VERSION@_la-gstaudioaggregator.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -899,70 +895,45 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-libgstmpg123_la-gstmpg123audiodec.lo: gstmpg123audiodec.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpg123_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpg123_la_CFLAGS) $(CFLAGS) -MT libgstmpg123_la-gstmpg123audiodec.lo -MD -MP -MF $(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Tpo -c -o libgstmpg123_la-gstmpg123audiodec.lo `test -f 'gstmpg123audiodec.c' || echo '$(srcdir)/'`gstmpg123audiodec.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Tpo $(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstmpg123audiodec.c' object='libgstmpg123_la-gstmpg123audiodec.lo' libtool=yes @AMDEPBACKSLASH@
+libgstbadaudio_@GST_API_VERSION@_la-gstaudioaggregator.lo: gstaudioaggregator.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstbadaudio_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstbadaudio_@GST_API_VERSION@_la-gstaudioaggregator.lo -MD -MP -MF $(DEPDIR)/libgstbadaudio_@GST_API_VERSION@_la-gstaudioaggregator.Tpo -c -o libgstbadaudio_@GST_API_VERSION@_la-gstaudioaggregator.lo `test -f 'gstaudioaggregator.c' || echo '$(srcdir)/'`gstaudioaggregator.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstbadaudio_@GST_API_VERSION@_la-gstaudioaggregator.Tpo $(DEPDIR)/libgstbadaudio_@GST_API_VERSION@_la-gstaudioaggregator.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstaudioaggregator.c' object='libgstbadaudio_@GST_API_VERSION@_la-gstaudioaggregator.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 $(libgstmpg123_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpg123_la_CFLAGS) $(CFLAGS) -c -o libgstmpg123_la-gstmpg123audiodec.lo `test -f 'gstmpg123audiodec.c' || echo '$(srcdir)/'`gstmpg123audiodec.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstbadaudio_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstbadaudio_@GST_API_VERSION@_la-gstaudioaggregator.lo `test -f 'gstaudioaggregator.c' || echo '$(srcdir)/'`gstaudioaggregator.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
+install-libgstaudio_@GST_API_VERSION@includeHEADERS: $(libgstaudio_@GST_API_VERSION@include_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(libgstaudio_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstaudio_@GST_API_VERSION@includedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libgstaudio_@GST_API_VERSION@includedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libgstaudio_@GST_API_VERSION@includedir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libgstaudio_@GST_API_VERSION@includedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(libgstaudio_@GST_API_VERSION@includedir)" || exit $$?; \
+	done
 
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
+uninstall-libgstaudio_@GST_API_VERSION@includeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgstaudio_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstaudio_@GST_API_VERSION@includedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libgstaudio_@GST_API_VERSION@includedir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
 
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
+ctags CTAGS:
 
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
+cscope cscopelist:
 
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -998,7 +969,7 @@
 check: check-am
 all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
-	for dir in "$(DESTDIR)$(plugindir)"; do \
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libgstaudio_@GST_API_VERSION@includedir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -1023,6 +994,7 @@
 mostlyclean-generic:
 
 clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
@@ -1033,14 +1005,13 @@
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
 	mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
+distclean-am: clean-am distclean-compile distclean-generic
 
 dvi: dvi-am
 
@@ -1054,13 +1025,13 @@
 
 info-am:
 
-install-data-am: install-pluginLTLIBRARIES
+install-data-am: install-libgstaudio_@GST_API_VERSION@includeHEADERS
 
 install-dvi: install-dvi-am
 
 install-dvi-am:
 
-install-exec-am:
+install-exec-am: install-libLTLIBRARIES
 
 install-html: install-html-am
 
@@ -1100,24 +1071,27 @@
 
 ps-am:
 
-uninstall-am: uninstall-pluginLTLIBRARIES
+uninstall-am: uninstall-libLTLIBRARIES \
+	uninstall-libgstaudio_@GST_API_VERSION@includeHEADERS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-pluginLTLIBRARIES install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
-	uninstall-pluginLTLIBRARIES
+.PHONY: all all-am check check-am clean clean-generic \
+	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags-am \
+	distclean distclean-compile distclean-generic \
+	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am \
+	install-libLTLIBRARIES \
+	install-libgstaudio_@GST_API_VERSION@includeHEADERS \
+	install-man install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+	uninstall-am uninstall-libLTLIBRARIES \
+	uninstall-libgstaudio_@GST_API_VERSION@includeHEADERS
 
 .PRECIOUS: Makefile
 
diff --git a/gst/audiomixer/gstaudioaggregator.c b/gst-libs/gst/audio/gstaudioaggregator.c
similarity index 100%
rename from gst/audiomixer/gstaudioaggregator.c
rename to gst-libs/gst/audio/gstaudioaggregator.c
diff --git a/gst/audiomixer/gstaudioaggregator.h b/gst-libs/gst/audio/gstaudioaggregator.h
similarity index 100%
rename from gst/audiomixer/gstaudioaggregator.h
rename to gst-libs/gst/audio/gstaudioaggregator.h
diff --git a/gst-libs/gst/base/Makefile.am b/gst-libs/gst/base/Makefile.am
index 0d55368..993701d 100644
--- a/gst-libs/gst/base/Makefile.am
+++ b/gst-libs/gst/base/Makefile.am
@@ -9,8 +9,8 @@
 libgstbadbase_@GST_API_VERSION@_la_LIBADD = $(GST_LIBS)
 libgstbadbase_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
 
-noinst_HEADERS =	\
-	gstaggregator.h
+libgstbase_@GST_API_VERSION@includedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/base
+libgstbase_@GST_API_VERSION@include_HEADERS = gstaggregator.h
 
 EXTRA_DIST = 
 
diff --git a/gst-libs/gst/base/Makefile.in b/gst-libs/gst/base/Makefile.in
index d73b45a..f7c8438 100644
--- a/gst-libs/gst/base/Makefile.in
+++ b/gst-libs/gst/base/Makefile.in
@@ -116,19 +116,19 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+DIST_COMMON = $(srcdir)/Makefile.am \
+	$(libgstbase_@GST_API_VERSION@include_HEADERS) \
 	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
@@ -161,7 +161,8 @@
     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
-am__installdirs = "$(DESTDIR)$(libdir)"
+am__installdirs = "$(DESTDIR)$(libdir)" \
+	"$(DESTDIR)$(libgstbase_@GST_API_VERSION@includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libgstbadbase_@GST_API_VERSION@_la_DEPENDENCIES =  \
@@ -219,26 +220,8 @@
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
-HEADERS = $(noinst_HEADERS)
+HEADERS = $(libgstbase_@GST_API_VERSION@include_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -325,7 +308,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +329,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +350,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +511,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +525,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +611,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +662,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +683,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +722,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -793,9 +770,8 @@
 
 libgstbadbase_@GST_API_VERSION@_la_LIBADD = $(GST_LIBS)
 libgstbadbase_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
-noinst_HEADERS = \
-	gstaggregator.h
-
+libgstbase_@GST_API_VERSION@includedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/base
+libgstbase_@GST_API_VERSION@include_HEADERS = gstaggregator.h
 EXTRA_DIST = 
 all: all-am
 
@@ -913,58 +889,33 @@
 
 clean-libtool:
 	-rm -rf .libs _libs
+install-libgstbase_@GST_API_VERSION@includeHEADERS: $(libgstbase_@GST_API_VERSION@include_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(libgstbase_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstbase_@GST_API_VERSION@includedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libgstbase_@GST_API_VERSION@includedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libgstbase_@GST_API_VERSION@includedir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libgstbase_@GST_API_VERSION@includedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(libgstbase_@GST_API_VERSION@includedir)" || exit $$?; \
+	done
 
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
+uninstall-libgstbase_@GST_API_VERSION@includeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgstbase_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstbase_@GST_API_VERSION@includedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libgstbase_@GST_API_VERSION@includedir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
 
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
+ctags CTAGS:
 
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
+cscope cscopelist:
 
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -1000,7 +951,7 @@
 check: check-am
 all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libgstbase_@GST_API_VERSION@includedir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -1041,8 +992,7 @@
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
+distclean-am: clean-am distclean-compile distclean-generic
 
 dvi: dvi-am
 
@@ -1056,7 +1006,7 @@
 
 info-am:
 
-install-data-am:
+install-data-am: install-libgstbase_@GST_API_VERSION@includeHEADERS
 
 install-dvi: install-dvi-am
 
@@ -1102,23 +1052,27 @@
 
 ps-am:
 
-uninstall-am: uninstall-libLTLIBRARIES
+uninstall-am: uninstall-libLTLIBRARIES \
+	uninstall-libgstbase_@GST_API_VERSION@includeHEADERS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-libLTLIBRARIES install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES
+.PHONY: all all-am check check-am clean clean-generic \
+	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags-am \
+	distclean distclean-compile distclean-generic \
+	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am \
+	install-libLTLIBRARIES \
+	install-libgstbase_@GST_API_VERSION@includeHEADERS install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags-am uninstall uninstall-am \
+	uninstall-libLTLIBRARIES \
+	uninstall-libgstbase_@GST_API_VERSION@includeHEADERS
 
 .PRECIOUS: Makefile
 
diff --git a/gst-libs/gst/basecamerabinsrc/Makefile.in b/gst-libs/gst/basecamerabinsrc/Makefile.in
index 6bf6b54..2ead3f1 100644
--- a/gst-libs/gst/basecamerabinsrc/Makefile.in
+++ b/gst-libs/gst/basecamerabinsrc/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am \
@@ -314,7 +313,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -336,7 +334,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -358,9 +355,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -522,6 +516,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -535,8 +530,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -623,8 +616,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -676,6 +667,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -696,6 +688,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -733,7 +727,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/gst/codecparsers/Makefile.am b/gst-libs/gst/codecparsers/Makefile.am
index e2498db..b180570 100644
--- a/gst-libs/gst/codecparsers/Makefile.am
+++ b/gst-libs/gst/codecparsers/Makefile.am
@@ -5,18 +5,20 @@
 	gsth265parser.c gstvp8parser.c gstvp8rangedecoder.c \
 	parserutils.c nalutils.c dboolhuff.c vp8utils.c \
 	gstjpegparser.c \
-	gstmpegvideometa.c
+	gstmpegvideometa.c \
+	gstvp9parser.c vp9utils.c
 
 libgstcodecparsers_@GST_API_VERSION@includedir = \
 	$(includedir)/gstreamer-@GST_API_VERSION@/gst/codecparsers
 
-noinst_HEADERS = parserutils.h nalutils.h dboolhuff.h vp8utils.h
+noinst_HEADERS = parserutils.h nalutils.h dboolhuff.h vp8utils.h vp9utils.h
 
 libgstcodecparsers_@GST_API_VERSION@include_HEADERS = \
 	gstmpegvideoparser.h gsth264parser.h gstvc1parser.h gstmpeg4parser.h \
 	gsth265parser.h gstvp8parser.h gstvp8rangedecoder.h \
 	gstjpegparser.h \
-	gstmpegvideometa.h
+	gstmpegvideometa.h \
+	gstvp9parser.h
 
 libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) \
diff --git a/gst-libs/gst/codecparsers/Makefile.in b/gst-libs/gst/codecparsers/Makefile.in
index 9e44209..10119ba 100644
--- a/gst-libs/gst/codecparsers/Makefile.in
+++ b/gst-libs/gst/codecparsers/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am \
@@ -182,7 +181,9 @@
 	libgstcodecparsers_@GST_API_VERSION@_la-dboolhuff.lo \
 	libgstcodecparsers_@GST_API_VERSION@_la-vp8utils.lo \
 	libgstcodecparsers_@GST_API_VERSION@_la-gstjpegparser.lo \
-	libgstcodecparsers_@GST_API_VERSION@_la-gstmpegvideometa.lo
+	libgstcodecparsers_@GST_API_VERSION@_la-gstmpegvideometa.lo \
+	libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo \
+	libgstcodecparsers_@GST_API_VERSION@_la-vp9utils.lo
 libgstcodecparsers_@GST_API_VERSION@_la_OBJECTS =  \
 	$(am_libgstcodecparsers_@GST_API_VERSION@_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -342,7 +343,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -364,7 +364,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -386,9 +385,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -550,6 +546,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -563,8 +560,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -651,8 +646,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -704,6 +697,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -724,6 +718,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -761,7 +757,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -807,17 +802,19 @@
 	gsth265parser.c gstvp8parser.c gstvp8rangedecoder.c \
 	parserutils.c nalutils.c dboolhuff.c vp8utils.c \
 	gstjpegparser.c \
-	gstmpegvideometa.c
+	gstmpegvideometa.c \
+	gstvp9parser.c vp9utils.c
 
 libgstcodecparsers_@GST_API_VERSION@includedir = \
 	$(includedir)/gstreamer-@GST_API_VERSION@/gst/codecparsers
 
-noinst_HEADERS = parserutils.h nalutils.h dboolhuff.h vp8utils.h
+noinst_HEADERS = parserutils.h nalutils.h dboolhuff.h vp8utils.h vp9utils.h
 libgstcodecparsers_@GST_API_VERSION@include_HEADERS = \
 	gstmpegvideoparser.h gsth264parser.h gstvc1parser.h gstmpeg4parser.h \
 	gsth265parser.h gstvp8parser.h gstvp8rangedecoder.h \
 	gstjpegparser.h \
-	gstmpegvideometa.h
+	gstmpegvideometa.h \
+	gstvp9parser.h
 
 libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS = \
 	$(GST_PLUGINS_BAD_CFLAGS) \
@@ -926,9 +923,11 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstvc1parser.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstvp8parser.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstvp8rangedecoder.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-nalutils.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-parserutils.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-vp8utils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-vp9utils.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -1045,6 +1044,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstcodecparsers_@GST_API_VERSION@_la-gstmpegvideometa.lo `test -f 'gstmpegvideometa.c' || echo '$(srcdir)/'`gstmpegvideometa.c
 
+libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo: gstvp9parser.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo -MD -MP -MF $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.Tpo -c -o libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo `test -f 'gstvp9parser.c' || echo '$(srcdir)/'`gstvp9parser.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.Tpo $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstvp9parser.c' object='libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo `test -f 'gstvp9parser.c' || echo '$(srcdir)/'`gstvp9parser.c
+
+libgstcodecparsers_@GST_API_VERSION@_la-vp9utils.lo: vp9utils.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstcodecparsers_@GST_API_VERSION@_la-vp9utils.lo -MD -MP -MF $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-vp9utils.Tpo -c -o libgstcodecparsers_@GST_API_VERSION@_la-vp9utils.lo `test -f 'vp9utils.c' || echo '$(srcdir)/'`vp9utils.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-vp9utils.Tpo $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-vp9utils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='vp9utils.c' object='libgstcodecparsers_@GST_API_VERSION@_la-vp9utils.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstcodecparsers_@GST_API_VERSION@_la-vp9utils.lo `test -f 'vp9utils.c' || echo '$(srcdir)/'`vp9utils.c
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
diff --git a/gst-libs/gst/codecparsers/dboolhuff.h b/gst-libs/gst/codecparsers/dboolhuff.h
index 5d27eaf..1ca51c1 100644
--- a/gst-libs/gst/codecparsers/dboolhuff.h
+++ b/gst-libs/gst/codecparsers/dboolhuff.h
@@ -15,6 +15,7 @@
 #include <stdint.h>
 #include <stddef.h>
 #include <limits.h>
+#include <glib.h>
 
 typedef size_t VP8_BD_VALUE;
 
@@ -42,14 +43,17 @@
     void                *decrypt_state;
 } BOOL_DECODER;
 
+G_GNUC_INTERNAL
 extern const unsigned char vp8_norm[256];
 
+G_GNUC_INTERNAL
 int vp8dx_start_decode(BOOL_DECODER *br,
                        const unsigned char *source,
                        unsigned int source_sz,
                        vp8_decrypt_cb *decrypt_cb,
                        void *decrypt_state);
 
+G_GNUC_INTERNAL
 void vp8dx_bool_decoder_fill(BOOL_DECODER *br);
 
 
diff --git a/gst-libs/gst/codecparsers/gstvp9parser.c b/gst-libs/gst/codecparsers/gstvp9parser.c
new file mode 100644
index 0000000..e518dee
--- /dev/null
+++ b/gst-libs/gst/codecparsers/gstvp9parser.c
@@ -0,0 +1,819 @@
+/* gstvp9parser.c
+ *
+ *  Copyright (C) 2013-2014 Intel Corporation
+ *  Copyright (C) 2015 Intel Corporation
+ *    Author: XuGuangxin<Guangxin.Xu@intel.com>
+ *    Author: Sreerenj Balachandran<sreerenj.balachandran@intel.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+/**
+ * SECTION:gstvp9parser
+ * @short_description: Convenience library for parsing vp9 video bitstream.
+ *
+ * For more details about the structures, you can refer to the
+ * specifications:
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+#include <stdlib.h>
+#include <gst/base/gstbitreader.h>
+#include "vp9utils.h"
+#include "gstvp9parser.h"
+
+#define MIN_TILE_WIDTH_B64 4
+#define MAX_TILE_WIDTH_B64 64
+
+/* order of sb64, where sb64 = 64x64 */
+#define ALIGN_SB64(w) ((w + 63) >> 6)
+
+GST_DEBUG_CATEGORY (gst_vp9_parser_debug);
+#define GST_CAT_DEFAULT gst_vp9_parser_debug
+
+static gboolean initialized = FALSE;
+#define INITIALIZE_DEBUG_CATEGORY \
+  if (!initialized) { \
+    GST_DEBUG_CATEGORY_INIT (gst_vp9_parser_debug, "codecparsers_vp9", 0, \
+        "vp9 parser library"); \
+    initialized = TRUE; \
+  }
+
+#define gst_vp9_read_bit(br) gst_bit_reader_get_bits_uint8_unchecked(br, 1)
+#define gst_vp9_read_bits(br, bits) gst_bit_reader_get_bits_uint32_unchecked(br, bits)
+
+#define GST_VP9_PARSER_GET_PRIVATE(parser)  ((GstVp9ParserPrivate *)(parser->priv))
+
+typedef struct _ReferenceSize
+{
+  guint32 width;
+  guint32 height;
+} ReferenceSize;
+
+typedef struct
+{
+  /* for loop filters */
+  gint8 ref_deltas[GST_VP9_MAX_REF_LF_DELTAS];
+  gint8 mode_deltas[GST_VP9_MAX_MODE_LF_DELTAS];
+
+  guint8 segmentation_abs_delta;
+  GstVp9SegmentationInfoData segmentation[GST_VP9_MAX_SEGMENTS];
+
+  ReferenceSize reference[GST_VP9_REF_FRAMES];
+} GstVp9ParserPrivate;
+
+static gint32
+gst_vp9_read_signed_bits (GstBitReader * br, int bits)
+{
+  const gint32 value = gst_vp9_read_bits (br, bits);
+  return gst_vp9_read_bit (br) ? -value : value;
+}
+
+static gboolean
+verify_frame_marker (GstBitReader * br)
+{
+  guint8 frame_marker = gst_vp9_read_bits (br, 2);
+  if (frame_marker != GST_VP9_FRAME_MARKER) {
+    GST_ERROR ("Invalid VP9 Frame Marker !");
+    return FALSE;
+  }
+  return TRUE;
+}
+
+static gboolean
+verify_sync_code (GstBitReader * const br)
+{
+  return (gst_vp9_read_bits (br, 24) == GST_VP9_SYNC_CODE);
+}
+
+static gboolean
+parse_bitdepth_colorspace_sampling (GstBitReader * const br,
+    GstVp9FrameHdr * frame_hdr)
+{
+  if (frame_hdr->profile > GST_VP9_PROFILE_1)
+    frame_hdr->bit_depth =
+        gst_vp9_read_bit (br) ? GST_VP9_BIT_DEPTH_12 : GST_VP9_BIT_DEPTH_10;
+  else
+    frame_hdr->bit_depth = GST_VP9_BIT_DEPTH_8;
+
+  frame_hdr->color_space = gst_vp9_read_bits (br, 3);
+  if (frame_hdr->color_space != GST_VP9_CS_SRGB) {
+    frame_hdr->color_range = gst_vp9_read_bit (br);
+
+    if (frame_hdr->profile == GST_VP9_PROFILE_1
+        || frame_hdr->profile == GST_VP9_PROFILE_3) {
+
+      frame_hdr->subsampling_x = gst_vp9_read_bit (br);
+      frame_hdr->subsampling_y = gst_vp9_read_bit (br);
+
+      if (frame_hdr->subsampling_x == 1 && frame_hdr->subsampling_y == 1) {
+        GST_ERROR
+            ("4:2:0 subsampling is not supported in profile_1 or profile_3");
+        goto error;
+      }
+
+      if (gst_vp9_read_bit (br)) {
+        GST_ERROR ("Reserved bit set!");
+        goto error;
+      }
+    } else {
+      frame_hdr->subsampling_y = frame_hdr->subsampling_x = 1;
+    }
+  } else {
+    frame_hdr->color_range = GST_VP9_CR_FULL;
+
+    if (frame_hdr->profile == GST_VP9_PROFILE_1
+        || frame_hdr->profile == GST_VP9_PROFILE_3) {
+      if (gst_vp9_read_bit (br)) {
+        GST_ERROR ("Reserved bit set!");
+        goto error;
+      }
+    } else {
+      GST_ERROR
+          ("4:4:4 subsampling is not supported in profile_0 and profile_2");
+      goto error;
+    }
+  }
+  return TRUE;
+
+error:
+  return FALSE;
+}
+
+static guint
+parse_profile (GstBitReader * br)
+{
+  guint8 profile = gst_vp9_read_bit (br);
+  profile |= gst_vp9_read_bit (br) << 1;
+  if (profile > 2)
+    profile += gst_vp9_read_bit (br);
+  return profile;
+}
+
+static void
+parse_frame_size (GstBitReader * br, guint32 * width, guint32 * height)
+{
+  const guint32 w = gst_vp9_read_bits (br, 16) + 1;
+  const guint32 h = gst_vp9_read_bits (br, 16) + 1;
+  *width = w;
+  *height = h;
+}
+
+static void
+parse_display_frame_size (GstBitReader * br, GstVp9FrameHdr * frame_hdr)
+{
+  frame_hdr->display_size_enabled = gst_vp9_read_bit (br);
+  if (frame_hdr->display_size_enabled)
+    parse_frame_size (br, &frame_hdr->display_width,
+        &frame_hdr->display_height);
+}
+
+static void
+parse_frame_size_from_refs (const GstVp9Parser * parser,
+    GstVp9FrameHdr * frame_hdr, GstBitReader * br)
+{
+  gboolean found = FALSE;
+  int i;
+  GstVp9ParserPrivate *priv = GST_VP9_PARSER_GET_PRIVATE (parser);
+
+  for (i = 0; i < GST_VP9_REFS_PER_FRAME; i++) {
+    found = gst_vp9_read_bit (br);
+
+    if (found) {
+      guint8 idx = frame_hdr->ref_frame_indices[i];
+      frame_hdr->width = priv->reference[idx].width;
+      frame_hdr->height = priv->reference[idx].height;
+      break;
+    }
+  }
+  if (!found)
+    parse_frame_size (br, &frame_hdr->width, &frame_hdr->height);
+}
+
+static GstVp9InterpolationFilter
+parse_interp_filter (GstBitReader * br)
+{
+  static const GstVp9InterpolationFilter filter_map[] = {
+    GST_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH,
+    GST_VP9_INTERPOLATION_FILTER_EIGHTTAP,
+    GST_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP,
+    GST_VP9_INTERPOLATION_FILTER_BILINEAR
+  };
+
+  return gst_vp9_read_bit (br) ? GST_VP9_INTERPOLATION_FILTER_SWITCHABLE :
+      filter_map[gst_vp9_read_bits (br, 2)];
+}
+
+static void
+parse_loopfilter (GstVp9LoopFilter * lf, GstBitReader * br)
+{
+  lf->filter_level = gst_vp9_read_bits (br, 6);
+  lf->sharpness_level = gst_vp9_read_bits (br, 3);
+
+  lf->mode_ref_delta_update = 0;
+
+  lf->mode_ref_delta_enabled = gst_vp9_read_bit (br);
+  if (lf->mode_ref_delta_enabled) {
+    lf->mode_ref_delta_update = gst_vp9_read_bit (br);
+    if (lf->mode_ref_delta_update) {
+      int i;
+      for (i = 0; i < GST_VP9_MAX_REF_LF_DELTAS; i++) {
+        lf->update_ref_deltas[i] = gst_vp9_read_bit (br);
+        if (lf->update_ref_deltas[i])
+          lf->ref_deltas[i] = gst_vp9_read_signed_bits (br, 6);
+      }
+
+      for (i = 0; i < GST_VP9_MAX_MODE_LF_DELTAS; i++) {
+        lf->update_mode_deltas[i] = gst_vp9_read_bit (br);
+        if (lf->update_mode_deltas[i])
+          lf->mode_deltas[i] = gst_vp9_read_signed_bits (br, 6);
+      }
+    }
+  }
+}
+
+static gint8
+parse_delta_q (GstBitReader * br)
+{
+  return gst_vp9_read_bit (br) ? gst_vp9_read_signed_bits (br, 4) : 0;
+}
+
+static void
+parse_quantization (GstVp9QuantIndices * quant_indices, GstBitReader * br)
+{
+  quant_indices->y_ac_qi = gst_vp9_read_bits (br, QINDEX_BITS);
+  quant_indices->y_dc_delta = parse_delta_q (br);
+  quant_indices->uv_dc_delta = parse_delta_q (br);
+  quant_indices->uv_ac_delta = parse_delta_q (br);
+}
+
+static void
+parse_segmentation (GstVp9SegmentationInfo * seg, GstBitReader * br)
+{
+  int i;
+
+  seg->update_map = FALSE;
+  seg->update_data = FALSE;
+
+  seg->enabled = gst_vp9_read_bit (br);
+  if (!seg->enabled)
+    return;
+
+  /* Segmentation map update */
+  seg->update_map = gst_vp9_read_bit (br);
+  if (seg->update_map) {
+    for (i = 0; i < GST_VP9_SEG_TREE_PROBS; i++) {
+      seg->update_tree_probs[i] = gst_vp9_read_bit (br);
+      seg->tree_probs[i] = seg->update_tree_probs[i] ?
+          gst_vp9_read_bits (br, 8) : GST_VP9_MAX_PROB;
+    }
+
+    seg->temporal_update = gst_vp9_read_bit (br);
+    if (seg->temporal_update) {
+      for (i = 0; i < GST_VP9_PREDICTION_PROBS; i++) {
+        seg->update_pred_probs[i] = gst_vp9_read_bit (br);
+        seg->pred_probs[i] = seg->update_pred_probs[i] ?
+            gst_vp9_read_bits (br, 8) : GST_VP9_MAX_PROB;
+      }
+    } else {
+      for (i = 0; i < GST_VP9_PREDICTION_PROBS; i++)
+        seg->pred_probs[i] = GST_VP9_MAX_PROB;
+    }
+  }
+
+  /* Segmentation data update */
+  seg->update_data = gst_vp9_read_bit (br);
+
+  if (seg->update_data) {
+    /* clear all features */
+    memset (seg->data, 0, sizeof (seg->data));
+
+    seg->abs_delta = gst_vp9_read_bit (br);
+
+    for (i = 0; i < GST_VP9_MAX_SEGMENTS; i++) {
+      GstVp9SegmentationInfoData *seg_data = seg->data + i;
+      guint8 data;
+
+      /* SEG_LVL_ALT_Q */
+      seg_data->alternate_quantizer_enabled = gst_vp9_read_bit (br);
+      if (seg_data->alternate_quantizer_enabled) {
+        data = gst_vp9_read_bits (br, 8);
+        seg_data->alternate_quantizer = gst_vp9_read_bit (br) ? -data : data;
+      }
+
+      /* SEG_LVL_ALT_LF */
+      seg_data->alternate_loop_filter_enabled = gst_vp9_read_bit (br);
+      if (seg_data->alternate_loop_filter_enabled) {
+        data = gst_vp9_read_bits (br, 6);
+        seg_data->alternate_loop_filter = gst_vp9_read_bit (br) ? -data : data;
+      }
+
+      /* SEG_LVL_REF_FRAME */
+      seg_data->reference_frame_enabled = gst_vp9_read_bit (br);
+      if (seg_data->reference_frame_enabled) {
+        seg_data->reference_frame = gst_vp9_read_bits (br, 2);
+      }
+
+      seg_data->reference_skip = gst_vp9_read_bit (br);
+    }
+  }
+}
+
+static guint32
+get_max_lb_tile_cols (guint32 sb_cols)
+{
+  gint max_log2 = 1;
+  while ((sb_cols >> max_log2) >= MIN_TILE_WIDTH_B64)
+    ++max_log2;
+  return max_log2 - 1;
+}
+
+static guint32
+get_min_lb_tile_cols (guint32 sb_cols)
+{
+  gint min_log2 = 0;
+  while ((MAX_TILE_WIDTH_B64 << min_log2) < sb_cols)
+    ++min_log2;
+  return min_log2;
+}
+
+static gboolean
+parse_tile_info (GstVp9FrameHdr * frame_hdr, GstBitReader * br)
+{
+  guint32 max_ones;
+  const guint32 sb_cols = ALIGN_SB64 (frame_hdr->width);
+  guint32 min_lb_tile_cols = get_min_lb_tile_cols (sb_cols);
+  guint32 max_lb_tile_cols = get_max_lb_tile_cols (sb_cols);
+
+  g_assert (min_lb_tile_cols <= max_lb_tile_cols);
+  max_ones = max_lb_tile_cols - min_lb_tile_cols;
+
+  /* columns */
+  frame_hdr->log2_tile_columns = min_lb_tile_cols;
+  while (max_ones-- && gst_vp9_read_bit (br))
+    frame_hdr->log2_tile_columns++;
+
+  if (frame_hdr->log2_tile_columns > 6) {
+    GST_ERROR ("Invalid number of tile columns..!");
+    return FALSE;
+  }
+
+  /* row */
+  frame_hdr->log2_tile_rows = gst_vp9_read_bit (br);
+  if (frame_hdr->log2_tile_rows)
+    frame_hdr->log2_tile_rows += gst_vp9_read_bit (br);
+
+  return TRUE;
+}
+
+static void
+loop_filter_update (GstVp9Parser * parser, const GstVp9LoopFilter * lf)
+{
+  GstVp9ParserPrivate *priv = GST_VP9_PARSER_GET_PRIVATE (parser);
+  int i;
+
+  for (i = 0; i < GST_VP9_MAX_REF_LF_DELTAS; i++) {
+    if (lf->update_ref_deltas[i])
+      priv->ref_deltas[i] = lf->ref_deltas[i];
+  }
+
+  for (i = 0; i < GST_VP9_MAX_MODE_LF_DELTAS; i++) {
+    if (lf->update_mode_deltas[i])
+      priv->mode_deltas[i] = lf->mode_deltas[i];
+  }
+}
+
+static guint8
+seg_get_base_qindex (const GstVp9Parser * parser,
+    const GstVp9FrameHdr * frame_hdr, int segid)
+{
+  int seg_base = frame_hdr->quant_indices.y_ac_qi;
+  GstVp9ParserPrivate *priv = GST_VP9_PARSER_GET_PRIVATE (parser);
+  const GstVp9SegmentationInfoData *seg = priv->segmentation + segid;
+  /* DEBUG("id = %d, seg_base = %d, seg enable = %d, alt eanble = %d, abs = %d, alt= %d\n",segid,
+     seg_base, frame_hdr->segmentation.enabled, seg->alternate_quantizer_enabled, priv->segmentation_abs_delta,  seg->alternate_quantizer);
+   */
+  if (frame_hdr->segmentation.enabled && seg->alternate_quantizer_enabled) {
+    if (priv->segmentation_abs_delta)
+      seg_base = seg->alternate_quantizer;
+    else
+      seg_base += seg->alternate_quantizer;
+  }
+  return CLAMP (seg_base, 0, MAXQ);
+}
+
+static guint8
+seg_get_filter_level (const GstVp9Parser * parser,
+    const GstVp9FrameHdr * frame_hdr, int segid)
+{
+  int seg_filter = frame_hdr->loopfilter.filter_level;
+  GstVp9ParserPrivate *priv = GST_VP9_PARSER_GET_PRIVATE (parser);
+  const GstVp9SegmentationInfoData *seg = priv->segmentation + segid;
+
+  if (frame_hdr->segmentation.enabled && seg->alternate_loop_filter_enabled) {
+    if (priv->segmentation_abs_delta)
+      seg_filter = seg->alternate_loop_filter;
+    else
+      seg_filter += seg->alternate_loop_filter;
+  }
+  return CLAMP (seg_filter, 0, GST_VP9_MAX_LOOP_FILTER);
+}
+
+/*save segmentation info from frame header to parser*/
+static void
+segmentation_save (GstVp9Parser * parser, const GstVp9FrameHdr * frame_hdr)
+{
+  const GstVp9SegmentationInfo *info = &frame_hdr->segmentation;
+  if (!info->enabled)
+    return;
+
+  if (info->update_map) {
+    g_assert (G_N_ELEMENTS (parser->mb_segment_tree_probs) ==
+        G_N_ELEMENTS (info->tree_probs));
+    g_assert (G_N_ELEMENTS (parser->segment_pred_probs) ==
+        G_N_ELEMENTS (info->pred_probs));
+    memcpy (parser->mb_segment_tree_probs, info->tree_probs,
+        sizeof (info->tree_probs));
+    memcpy (parser->segment_pred_probs, info->pred_probs,
+        sizeof (info->pred_probs));
+  }
+
+  if (info->update_data) {
+    GstVp9ParserPrivate *priv = GST_VP9_PARSER_GET_PRIVATE (parser);
+    priv->segmentation_abs_delta = info->abs_delta;
+    g_assert (G_N_ELEMENTS (priv->segmentation) == G_N_ELEMENTS (info->data));
+    memcpy (priv->segmentation, info->data, sizeof (info->data));
+  }
+}
+
+static void
+segmentation_update (GstVp9Parser * parser, const GstVp9FrameHdr * frame_hdr)
+{
+  int i = 0;
+  const GstVp9ParserPrivate *priv = GST_VP9_PARSER_GET_PRIVATE (parser);
+  const GstVp9LoopFilter *lf = &frame_hdr->loopfilter;
+  const GstVp9QuantIndices *quant_indices = &frame_hdr->quant_indices;
+  int default_filter = lf->filter_level;
+  const int scale = 1 << (default_filter >> 5);
+
+  segmentation_save (parser, frame_hdr);
+
+  for (i = 0; i < GST_VP9_MAX_SEGMENTS; i++) {
+    guint8 q = seg_get_base_qindex (parser, frame_hdr, i);
+
+    GstVp9Segmentation *seg = parser->segmentation + i;
+    const GstVp9SegmentationInfoData *info = priv->segmentation + i;
+
+    seg->luma_dc_quant_scale =
+        gst_vp9_dc_quant (q, quant_indices->y_dc_delta, frame_hdr->bit_depth);
+    seg->luma_ac_quant_scale = gst_vp9_ac_quant (q, 0, frame_hdr->bit_depth);
+    seg->chroma_dc_quant_scale =
+        gst_vp9_dc_quant (q, quant_indices->uv_dc_delta, frame_hdr->bit_depth);
+    seg->chroma_ac_quant_scale =
+        gst_vp9_ac_quant (q, quant_indices->uv_ac_delta, frame_hdr->bit_depth);
+
+    if (lf->filter_level) {
+      guint8 filter = seg_get_filter_level (parser, frame_hdr, i);
+
+      if (!lf->mode_ref_delta_enabled) {
+        memset (seg->filter_level, filter, sizeof (seg->filter_level));
+      } else {
+        int ref, mode;
+        const int intra_filter =
+            filter + priv->ref_deltas[GST_VP9_REF_FRAME_INTRA] * scale;
+        seg->filter_level[GST_VP9_REF_FRAME_INTRA][0] =
+            CLAMP (intra_filter, 0, GST_VP9_MAX_LOOP_FILTER);
+        for (ref = GST_VP9_REF_FRAME_LAST; ref < GST_VP9_REF_FRAME_MAX; ++ref) {
+          for (mode = 0; mode < GST_VP9_MAX_MODE_LF_DELTAS; ++mode) {
+            const int inter_filter = filter + priv->ref_deltas[ref] * scale
+                + priv->mode_deltas[mode] * scale;
+            seg->filter_level[ref][mode] =
+                CLAMP (inter_filter, 0, GST_VP9_MAX_LOOP_FILTER);
+          }
+        }
+      }
+    }
+    seg->reference_frame_enabled = info->reference_frame_enabled;;
+    seg->reference_frame = info->reference_frame;
+    seg->reference_skip = info->reference_skip;
+  }
+}
+
+static void
+reference_update (GstVp9Parser * parser, const GstVp9FrameHdr * const frame_hdr)
+{
+  guint8 flag = 1;
+  guint8 refresh_frame_flags;
+  int i;
+  GstVp9ParserPrivate *priv = GST_VP9_PARSER_GET_PRIVATE (parser);
+  ReferenceSize *reference = priv->reference;
+  if (frame_hdr->frame_type == GST_VP9_KEY_FRAME) {
+    refresh_frame_flags = 0xff;
+  } else {
+    refresh_frame_flags = frame_hdr->refresh_frame_flags;
+  }
+  for (i = 0; i < GST_VP9_REF_FRAMES; i++) {
+    if (refresh_frame_flags & flag) {
+      reference[i].width = frame_hdr->width;
+      reference[i].height = frame_hdr->height;
+    }
+    flag <<= 1;
+  }
+}
+
+static inline int
+frame_is_intra_only (const GstVp9FrameHdr * frame_hdr)
+{
+  return frame_hdr->frame_type == GST_VP9_KEY_FRAME || frame_hdr->intra_only;
+}
+
+static void
+set_default_lf_deltas (GstVp9Parser * parser)
+{
+  GstVp9ParserPrivate *priv = GST_VP9_PARSER_GET_PRIVATE (parser);
+  priv->ref_deltas[GST_VP9_REF_FRAME_INTRA] = 1;
+  priv->ref_deltas[GST_VP9_REF_FRAME_LAST] = 0;
+  priv->ref_deltas[GST_VP9_REF_FRAME_GOLDEN] = -1;
+  priv->ref_deltas[GST_VP9_REF_FRAME_ALTREF] = -1;
+
+  priv->mode_deltas[0] = 0;
+  priv->mode_deltas[1] = 0;
+}
+
+static void
+set_default_segmentation_info (GstVp9Parser * parser)
+{
+  GstVp9ParserPrivate *priv = GST_VP9_PARSER_GET_PRIVATE (parser);
+
+  memset (priv->segmentation, 0, sizeof (priv->segmentation));
+
+  priv->segmentation_abs_delta = FALSE;
+}
+
+static void
+setup_past_independence (GstVp9Parser * parser,
+    GstVp9FrameHdr * const frame_hdr)
+{
+  set_default_lf_deltas (parser);
+  set_default_segmentation_info (parser);
+
+  memset (frame_hdr->ref_frame_sign_bias, 0,
+      sizeof (frame_hdr->ref_frame_sign_bias));
+}
+
+static void
+gst_vp9_parser_init (GstVp9Parser * parser)
+{
+  GstVp9ParserPrivate *priv = parser->priv;
+
+  memset (parser, 0, sizeof (GstVp9Parser));
+  memset (priv, 0, sizeof (GstVp9ParserPrivate));
+
+  parser->priv = priv;
+}
+
+static GstVp9ParserResult
+gst_vp9_parser_update (GstVp9Parser * parser, GstVp9FrameHdr * const frame_hdr)
+{
+  if (frame_hdr->frame_type == GST_VP9_KEY_FRAME)
+    gst_vp9_parser_init (parser);
+
+  if (frame_is_intra_only (frame_hdr) || frame_hdr->error_resilient_mode)
+    setup_past_independence (parser, frame_hdr);
+
+  loop_filter_update (parser, &frame_hdr->loopfilter);
+  segmentation_update (parser, frame_hdr);
+  reference_update (parser, frame_hdr);
+
+  return GST_VP9_PARSER_OK;
+}
+
+
+/******** API *************/
+
+/**
+ * gst_vp9_parser_new:
+ *
+ * Creates a new #GstVp9Parser. It should be freed with
+ * gst_vp9_parser_free() after use.
+ *
+ * Returns: a new #GstVp9Parser
+ *
+ * Since: 1.8
+ */
+GstVp9Parser *
+gst_vp9_parser_new (void)
+{
+  GstVp9Parser *parser;
+  GstVp9ParserPrivate *priv;
+
+  INITIALIZE_DEBUG_CATEGORY;
+  GST_DEBUG ("Create VP9 Parser");
+
+  parser = g_slice_new (GstVp9Parser);
+  if (!parser)
+    return NULL;
+
+  priv = g_slice_new (GstVp9ParserPrivate);
+  if (!priv)
+    return NULL;
+
+  parser->priv = priv;
+  gst_vp9_parser_init (parser);
+
+  return parser;
+}
+
+/**
+ * gst_vp9_parser_free:
+ * @parser: the #GstVp9Parser to free
+ *
+ * Frees @parser.
+ *
+ * Since: 1.8
+ */
+void
+gst_vp9_parser_free (GstVp9Parser * parser)
+{
+  if (parser) {
+    if (parser->priv) {
+      g_slice_free (GstVp9ParserPrivate, parser->priv);
+      parser->priv = NULL;
+    }
+    g_slice_free (GstVp9Parser, parser);
+  }
+}
+
+/**
+ * gst_vp9_parser_parse_frame_header:
+ * @parser: The #GstVp9Parser
+ * @frame_hdr: The #GstVp9FrameHdr to fill
+ * @data: The data to parse
+ * @size: The size of the @data to parse
+ *
+ * Parses the VP9 bitstream contained in @data, and fills in @frame_hdr
+ * with the information. The @size argument represent the whole frame size.
+ *
+ * Returns: a #GstVp9ParserResult
+ *
+ * Since: 1.8
+ */
+GstVp9ParserResult
+gst_vp9_parser_parse_frame_header (GstVp9Parser * parser,
+    GstVp9FrameHdr * frame_hdr, const guint8 * data, gsize size)
+{
+  GstBitReader bit_reader;
+  GstBitReader *br = &bit_reader;
+
+  gst_bit_reader_init (br, data, size);
+  memset (frame_hdr, 0, sizeof (*frame_hdr));
+
+  /* Parsing Uncompressed Data Chunk */
+
+  if (!verify_frame_marker (br))
+    goto error;
+
+  frame_hdr->profile = parse_profile (br);
+  if (frame_hdr->profile > GST_VP9_PROFILE_UNDEFINED) {
+    GST_ERROR ("Stream has undefined VP9  profile !");
+    goto error;
+  }
+
+  frame_hdr->show_existing_frame = gst_vp9_read_bit (br);
+  if (frame_hdr->show_existing_frame) {
+    frame_hdr->frame_to_show = gst_vp9_read_bits (br, GST_VP9_REF_FRAMES_LOG2);
+    return GST_VP9_PARSER_OK;
+  }
+
+  frame_hdr->frame_type = gst_vp9_read_bit (br);
+  frame_hdr->show_frame = gst_vp9_read_bit (br);
+  frame_hdr->error_resilient_mode = gst_vp9_read_bit (br);
+
+  if (frame_hdr->frame_type == GST_VP9_KEY_FRAME) {
+
+    if (!verify_sync_code (br)) {
+      GST_ERROR ("Invalid VP9 Key-frame sync code !");
+      goto error;
+    }
+
+    if (!parse_bitdepth_colorspace_sampling (br, frame_hdr)) {
+      GST_ERROR ("Failed to parse color_space/bit_depth info !");
+      goto error;
+    }
+
+    parse_frame_size (br, &frame_hdr->width, &frame_hdr->height);
+
+    parse_display_frame_size (br, frame_hdr);
+
+  } else {
+    frame_hdr->intra_only = frame_hdr->show_frame ? 0 : gst_vp9_read_bit (br);
+    frame_hdr->reset_frame_context = frame_hdr->error_resilient_mode ?
+        0 : gst_vp9_read_bits (br, 2);
+
+    if (frame_hdr->intra_only) {
+
+      if (!verify_sync_code (br)) {
+        GST_ERROR ("Invalid VP9 sync code in intra-only frame !");
+        goto error;
+      }
+
+      if (frame_hdr->profile > GST_VP9_PROFILE_0) {
+        if (!parse_bitdepth_colorspace_sampling (br, frame_hdr)) {
+          GST_ERROR ("Failed to parse color_space/bit_depth info !");
+          goto error;
+        }
+      } else {
+        frame_hdr->color_space = GST_VP9_CS_BT_601;
+        frame_hdr->color_range = GST_VP9_CR_LIMITED;
+        frame_hdr->subsampling_y = frame_hdr->subsampling_x = 1;
+        frame_hdr->bit_depth = GST_VP9_BIT_DEPTH_8;
+      }
+
+      frame_hdr->refresh_frame_flags =
+          gst_vp9_read_bits (br, GST_VP9_REF_FRAMES);
+      parse_frame_size (br, &frame_hdr->width, &frame_hdr->height);
+      parse_display_frame_size (br, frame_hdr);
+
+    } else {
+      int i;
+      frame_hdr->refresh_frame_flags =
+          gst_vp9_read_bits (br, GST_VP9_REF_FRAMES);
+
+      for (i = 0; i < GST_VP9_REFS_PER_FRAME; i++) {
+        frame_hdr->ref_frame_indices[i] =
+            gst_vp9_read_bits (br, GST_VP9_REF_FRAMES_LOG2);
+        frame_hdr->ref_frame_sign_bias[i] = gst_vp9_read_bit (br);
+      }
+
+      parse_frame_size_from_refs (parser, frame_hdr, br);
+      parse_display_frame_size (br, frame_hdr);
+
+      frame_hdr->allow_high_precision_mv = gst_vp9_read_bit (br);
+      frame_hdr->mcomp_filter_type = parse_interp_filter (br);
+
+      /* Assing defalut values */
+      frame_hdr->color_space = GST_VP9_CS_BT_601;
+      frame_hdr->color_range = GST_VP9_CR_LIMITED;
+      frame_hdr->subsampling_y = frame_hdr->subsampling_x = 1;
+      frame_hdr->bit_depth = GST_VP9_BIT_DEPTH_8;
+    }
+  }
+
+  frame_hdr->refresh_frame_context =
+      frame_hdr->error_resilient_mode ? 0 : gst_vp9_read_bit (br);
+  frame_hdr->frame_parallel_decoding_mode =
+      frame_hdr->error_resilient_mode ? 1 : gst_vp9_read_bit (br);
+  frame_hdr->frame_context_idx =
+      gst_vp9_read_bits (br, GST_VP9_FRAME_CONTEXTS_LOG2);
+
+  /* loopfilter header  */
+  parse_loopfilter (&frame_hdr->loopfilter, br);
+
+  /* quantization header */
+  parse_quantization (&frame_hdr->quant_indices, br);
+  /* set lossless_flag */
+  frame_hdr->lossless_flag = frame_hdr->quant_indices.y_ac_qi == 0 &&
+      frame_hdr->quant_indices.y_dc_delta == 0 &&
+      frame_hdr->quant_indices.uv_dc_delta == 0
+      && frame_hdr->quant_indices.uv_ac_delta == 0;
+
+  /* segmentation header */
+  parse_segmentation (&frame_hdr->segmentation, br);
+
+  /* tile header */
+  if (!parse_tile_info (frame_hdr, br)) {
+    GST_ERROR ("Failed to parse tile info...!");
+    goto error;
+  }
+
+  /* size of the rest of the header */
+  frame_hdr->first_partition_size = gst_vp9_read_bits (br, 16);
+  if (!frame_hdr->first_partition_size) {
+    GST_ERROR ("Failed to parse the first partition size...!");
+    goto error;
+  }
+
+  frame_hdr->frame_header_length_in_bytes =
+      (gst_bit_reader_get_pos (br) + 7) / 8;
+
+  return gst_vp9_parser_update (parser, frame_hdr);
+
+error:
+  return GST_VP9_PARSER_ERROR;
+}
diff --git a/gst-libs/gst/codecparsers/gstvp9parser.h b/gst-libs/gst/codecparsers/gstvp9parser.h
new file mode 100644
index 0000000..fd45e54
--- /dev/null
+++ b/gst-libs/gst/codecparsers/gstvp9parser.h
@@ -0,0 +1,493 @@
+/*
+ * gstvp9parser.h
+ *
+ *  Copyright (C) 2013-2014 Intel Corporation
+ *  Copyright (C) 2015 Intel Corporation
+ *    Author: XuGuangxin<Guangxin.Xu@intel.com>
+ *    Author: Sreerenj Balachandran<sreerenj.balachandran@intel.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef GST_VP9_PARSER_H
+#define GST_VP9_PARSER_H
+
+#ifndef GST_USE_UNSTABLE_API
+#warning "The VP9 parsing library is unstable API and may change in future."
+#warning "You can define GST_USE_UNSTABLE_API to avoid this warning."
+#endif
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define GST_VP9_FRAME_MARKER 0x02
+#define GST_VP9_SYNC_CODE 0x498342
+
+#define GST_VP9_MAX_LOOP_FILTER    63
+#define GST_VP9_MAX_PROB           255
+
+#define GST_VP9_REFS_PER_FRAME     3
+#define GST_VP9_REF_FRAMES_LOG2    3
+#define GST_VP9_REF_FRAMES         (1 << GST_VP9_REF_FRAMES_LOG2)
+
+#define GST_VP9_FRAME_CONTEXTS_LOG2 2
+
+#define GST_VP9_MAX_LOOP_FILTER    63
+#define GST_VP9_MAX_SHARPNESS      7
+
+#define GST_VP9_MAX_REF_LF_DELTAS  4
+#define GST_VP9_MAX_MODE_LF_DELTAS 2
+
+#define GST_VP9_SEGMENT_DELTADATA  0
+#define GST_VP9_SEGMENT_ABSDATA    1
+
+#define GST_VP9_MAX_SEGMENTS       8
+#define GST_VP9_SEG_TREE_PROBS     (GST_VP9_MAX_SEGMENTS-1)
+
+#define GST_VP9_PREDICTION_PROBS   3
+
+typedef struct _GstVp9Parser               GstVp9Parser;
+typedef struct _GstVp9FrameHdr             GstVp9FrameHdr;
+typedef struct _GstVp9LoopFilter           GstVp9LoopFilter;
+typedef struct _GstVp9QuantIndices         GstVp9QuantIndices;
+typedef struct _GstVp9Segmentation         GstVp9Segmentation;
+typedef struct _GstVp9SegmentationInfo     GstVp9SegmentationInfo;
+typedef struct _GstVp9SegmentationInfoData GstVp9SegmentationInfoData;
+
+/**
+ * GstVp9ParseResult:
+ * @GST_VP9_PARSER_OK: The parsing went well
+ * @GST_VP9_PARSER_BROKEN_DATA: The data to parse is broken
+ * @GST_VP9_PARSER_NO_PACKET_ERROR: An error occured during the parsing
+ *
+ * Result type of any parsing function.
+ *
+ * Since: 1.8
+ */
+typedef enum
+{
+  GST_VP9_PARSER_OK,
+  GST_VP9_PARSER_BROKEN_DATA,
+  GST_VP9_PARSER_ERROR,
+} GstVp9ParserResult;
+
+/**
+ * GstVp9Profile: Bitstream profiles indicated by 2-3 bits in the uncompressed header
+ * @GST_VP9_PROFILE_0: Profile 0, 8-bit 4:2:0 only.
+ * @GST_VP9_PROFILE_1: Profile 1, 8-bit 4:4:4, 4:2:2, and 4:4:0.
+ * @GST_VP9_PROFILE_2: Profile 2, 10-bit and 12-bit color only, with 4:2:0 sampling.
+ * @GST_VP9_PROFILE_3: Profile 3, 10-bit and 12-bit color only, with 4:2:2/4:4:4/4:4:0 sampling.
+ * @GST_VP9_PROFILE_UNDEFINED: Undefined profile
+ *
+ * VP9 Profiles
+ *
+ * Since: 1.8
+ */
+typedef enum {
+  GST_VP9_PROFILE_0,
+  GST_VP9_PROFILE_1,
+  GST_VP9_PROFILE_2,
+  GST_VP9_PROFILE_3,
+  GST_VP9_PROFILE_UNDEFINED
+} GstVP9Profile;
+
+/**
+ * GstVp9FrameType:
+ * @GST_VP9_KEY_FRAME: Key frame, only have intra blocks
+ * @GST_VP9_INTER_FRAME: Inter frame, both intra and inter blocks
+ *
+ * VP9 frame types
+ *
+ * Since: 1.8
+ */
+typedef enum {
+  GST_VP9_KEY_FRAME   = 0,
+  GST_VP9_INTER_FRAME = 1
+} GstVp9FrameType;
+
+/**
+ * GstVp9BitDepth:
+ * @GST_VP9_BIT_DEPTH_8: Bit depth is 8
+ * @GST_VP9_BIT_DEPTH_10 Bit depth is 10
+ * @GST_VP9_BIT_DEPTH_12:Bit depth is 12
+ *
+ * Bit depths of encoded frames
+ *
+ * Since: 1.8
+ */
+typedef enum {
+  GST_VP9_BIT_DEPTH_8  = 8,
+  GST_VP9_BIT_DEPTH_10 = 10,
+  GST_VP9_BIT_DEPTH_12 = 12
+} GstVp9BitDepth;
+
+/**
+ * GstVp9ColorSpace:
+ * @GST_VP9_CS_UNKNOWN: Unknown color space
+ * @GST_VP9_CS_BT_601: BT.601
+ * @GST_VP9_CS_BT_709: BT.709
+ * @GST_VP9_CS_SMPTE_170: SMPTE.170
+ * @GST_VP9_CS_SMPTE_240: SMPTE.240
+ * @GST_VP9_CS_BT_2020: BT.2020
+ * @GST_VP9_CS_RESERVED: Reserved
+ * @GST_VP9_CS_SRGB: sRGB
+ *
+ * Supported ColorSpace standards
+ *
+ * Since: 1.8
+ */
+typedef enum {
+  GST_VP9_CS_UNKNOWN               = 0,
+  GST_VP9_CS_BT_601                = 1,
+  GST_VP9_CS_BT_709                = 2,
+  GST_VP9_CS_SMPTE_170             = 3,
+  GST_VP9_CS_SMPTE_240             = 4,
+  GST_VP9_CS_BT_2020               = 5,
+  GST_VP9_CS_RESERVED_2            = 6,
+  GST_VP9_CS_SRGB                  = 7
+} GstVp9ColorSpace;
+
+/**
+ * GstVp9ColorRange:
+ * @GST_VP9_CR_LIMITED: Y range is [16-235], UV range is [16-240]
+ * @GST_VP9_CR_FULL: Full range for Y,U and V [0-255]
+ *
+ * Possible color value ranges
+ *
+ * Since: 1.8
+ */
+typedef enum {
+  GST_VP9_CR_LIMITED,
+  GST_VP9_CR_FULL
+} GstVp9ColorRange;
+
+/**
+ * GstVp9InterpolationFilter:
+ * @GST_VP9_INTERPOLATION_FILTER_EIGHTTAP: EightTap interpolation filter
+ * @GST_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH: Smooth interpolation filter
+ * @GST_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP: Shart interpolation filter
+ * @GST_VP9_INTERPOLATION_FILTER_BILINEAR: Bilinear interpolation filter
+ * @GST_VP9_INTERPOLATION_FILTER_SWITCHABLE: Selectable interpolation filter
+ *
+ * Interpolation Filters Types
+ *
+ * Since: 1.8
+ */
+typedef enum {
+  GST_VP9_INTERPOLATION_FILTER_EIGHTTAP        = 0,
+  GST_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1,
+  GST_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP  = 2,
+  GST_VP9_INTERPOLATION_FILTER_BILINEAR        = 3,
+  GST_VP9_INTERPOLATION_FILTER_SWITCHABLE      = 4
+} GstVp9InterpolationFilter;
+
+/**
+ * GstVp9RefFrameType:
+ * @GST_VP9_REF_FRAME_INTRA: Intra reference frame
+ * @GST_VP9_REF_FRAME_LAST: Last Reference frame
+ * @GST_VP9_REF_FRAME_GOLDEN: Golden Reference frame
+ * @GST_VP9_REF_FRAME_ALTREF: Alternate Reference frame
+ * @GST_VP9_REF_FRAME_MAX:
+ *
+ * Reference Frame types
+ *
+ * Since: 1.8
+ */
+typedef enum {
+  GST_VP9_REF_FRAME_INTRA  = 0,
+  GST_VP9_REF_FRAME_LAST   = 1,
+  GST_VP9_REF_FRAME_GOLDEN = 2,
+  GST_VP9_REF_FRAME_ALTREF = 3,
+  GST_VP9_REF_FRAME_MAX    = 4
+} GstVp9RefFrameType;
+
+/**
+ * GstVp9QuantIndices:
+ * @y_ac_qi: indicates the dequantization table index used for the
+ *   luma AC coefficients
+ * @y_dc_delta: indicates the delta value that is added to the
+ *   baseline index to obtain the luma DC coefficient dequantization
+ *   index
+ * @uv_dc_delta: indicates the delta value that is added to the
+ *   baseline index to obtain the chroma DC coefficient dequantization
+ *   index
+ * @uv_ac_delta: indicates the delta value that is added to the
+ *   baseline index to obtain the chroma AC coefficient dequantization
+ *   index
+ *
+ * Dequantization indices.
+ *
+ * Since: 1.8
+ */
+struct _GstVp9QuantIndices
+{
+  guint8 y_ac_qi;
+  gint8 y_dc_delta;
+  gint8 uv_dc_delta;
+  gint8 uv_ac_delta;
+};
+
+/**
+ * GstVp9LoopFilter:
+ * @filter_level: indicates loop filter level for the current frame
+ * @sharpness_level: indicates sharpness level for thecurrent frame
+ * @mode_ref_delta_enabled: indicate if filter adjust is on
+ * @mode_ref_delta_update: indicates if the delta values used in an
+ *   adjustment are updated in the current frame
+ * @update_ref_deltas: indicate which ref deltas are updated
+ * @ref_deltas:  Loop filter strength adjustments based on
+ *  frame type (intra, inter)
+ * @update_mode_deltas: indicate with mode deltas are updated
+ * @mode_deltas: Loop filter strength adjustments based on
+ *   mode (zero, new mv)
+ *
+ * Loop filter values
+ *
+ * Since: 1.8
+ */
+struct _GstVp9LoopFilter {
+  gint filter_level;
+  gint sharpness_level;
+
+  guint8 mode_ref_delta_enabled;
+  guint8 mode_ref_delta_update;
+  guint8 update_ref_deltas[GST_VP9_MAX_REF_LF_DELTAS];
+  gint8 ref_deltas[GST_VP9_MAX_REF_LF_DELTAS];
+  guint8 update_mode_deltas[GST_VP9_MAX_MODE_LF_DELTAS];
+  gint8 mode_deltas[GST_VP9_MAX_MODE_LF_DELTAS];
+};
+
+/**
+ * GstVp9SegmentationInfoData:
+ * @alternate_quantizer_enabled: indicate alternate quantizer enabled at segment level
+ * @alternate_quantizer: alternate quantizer value
+ * @alternate_loop_filter_enabled: indicate alternate loop filter enabled at segment level
+ * @alternate_loop_filter: alternate loop filter
+ * @reference_frame_enabled: indicate alternate reference frame at segment level
+ * @reference_frame: alternate reference frame
+ * @reference_skip: a block skip mode that implies both the use of a (0,0)
+ *   motion vector and that no residual will be coded.
+ *
+ * Segmentation info for each segment
+ *
+ * Since: 1.8
+ */
+struct _GstVp9SegmentationInfoData {
+  /* SEG_LVL_ALT_Q */
+  guint8 alternate_quantizer_enabled;
+  gint16 alternate_quantizer;
+
+  /* SEG_LVL_ALT_LF */
+  guint8 alternate_loop_filter_enabled;
+  gint8 alternate_loop_filter;
+
+  /* SEG_LVL_REF_FRAME */
+  guint8 reference_frame_enabled;
+  gint reference_frame;
+
+  guint8 reference_skip;
+};
+
+/**
+ * GstVp9SegmentationInfo:
+ * @enabled: enables the segmentation feature for the current frame
+ * @update_map: determines if segmentation is updated in the current frame
+ * @update_tree_probs: determines if tree probabilities updated or not
+ * @tree_probs: segment tree probabilities
+ * @update_pred_probs:determines if prediction probabilities updated or not
+ * @pred_probs: prediction probabilities
+ * @abs_delta: interpretation of segment data values
+ * @temporal_update: type of map update
+ * @update_data: indicates if the segment feature data
+ *   is updated in the current frame
+ * @data: segment feature data
+ *
+ * Segmentation info
+ *
+ * Since: 1.8
+ */
+struct _GstVp9SegmentationInfo {
+  /* enable in setup_segmentation*/
+  guint8  enabled;
+  /* update_map in setup_segmentation*/
+  guint8 update_map;
+  /* tree_probs exist or not*/
+  guint8 update_tree_probs[GST_VP9_SEG_TREE_PROBS];
+  guint8 tree_probs[GST_VP9_SEG_TREE_PROBS];
+  /* pred_probs exist or not*/
+  guint8 update_pred_probs[GST_VP9_PREDICTION_PROBS];
+  guint8 pred_probs[GST_VP9_PREDICTION_PROBS];
+
+  /* abs_delta in setup_segmentation */
+  guint8 abs_delta;
+  /* temporal_update in setup_segmentation */
+  guint8 temporal_update;
+
+  /* update_data in setup_segmentation*/
+  guint8 update_data;
+  GstVp9SegmentationInfoData data[GST_VP9_MAX_SEGMENTS];
+};
+
+/**
+ * GstVp9FrameHdr:
+ * @profile: encoded profile
+ * @show_existing_frame: display already decoded frame instead of doing the decoding
+ * @frame_to_show: which frame to show if show_existing_frame is true
+ * @frame_type: frame type
+ * @show_frame: indicate whether it is a displayable frame or not
+ * @error_resilient_mode: error resilent mode
+ * @subsampling_x: horizontal subsampling
+ * @subsampling_y: vertical subsampling
+ * @width: frame width
+ * @height: frame height
+ * @display_size_enabled: display size enabled (cropping)
+ * @display_width: display width
+ * @display_height: display height
+ * @frame_context_idx: frame context index
+ * @bit_depth: bit depth of the stream
+ * @color_space: color space standard
+ * @color_range: color range standard
+ * @intra_only: intra only frame
+ * @reset_frame_context: reset frame context
+ * @refresh_frame_flags: refresh reference frame flags
+ * @ref_frame_indices: reference frame index
+ * @ref_frame_sign_bias: sign bias for selecting altref,last and golden frames
+ * @allow_high_precision_mv: allow hight precision motion vector
+ * @mcomp_filter_type: interpolation filter type
+ * @refresh_frame_context: refresh frame context indicator
+ * @frame_parallel_decoding_mode: enable or disable parallel decoding support.
+ * @loopfilter: loopfilter values
+ * @quant_indices: quantization indeces
+ * @segmentation: segmentation info
+ * @log2_tile_rows: tile row indicator
+ * @log2_tile_columns:  tile column indicator
+ * @first_partition_size: first partition size (after the uncompressed header)
+ * @lossless_flag: lossless mode decode
+ * @frame_header_length_in_bytes: length of uncompressed header
+ *
+ * Frame header
+ *
+ * Since: 1.8
+ */
+struct _GstVp9FrameHdr
+{
+  guint profile;
+  guint8 show_existing_frame;
+  gint  frame_to_show;
+  guint frame_type;
+  guint8 show_frame;
+  guint8 error_resilient_mode;
+  gint subsampling_x;
+  gint subsampling_y;
+  guint32 width;
+  guint32 height;
+  guint8 display_size_enabled;
+  guint32 display_width;
+  guint32 display_height;
+  guint frame_context_idx;
+
+  guint bit_depth;
+  guint color_space;
+  guint color_range;
+
+  guint8 intra_only;
+  gint reset_frame_context;
+  gint refresh_frame_flags;
+
+  gint ref_frame_indices[GST_VP9_REFS_PER_FRAME];
+  gint ref_frame_sign_bias[GST_VP9_REFS_PER_FRAME];
+  gint allow_high_precision_mv;
+  guint8 mcomp_filter_type;
+
+  gint refresh_frame_context;
+  /* frame_parallel_decoding_mode in vp9 code*/
+  gint frame_parallel_decoding_mode;
+
+  GstVp9LoopFilter loopfilter;
+  GstVp9QuantIndices quant_indices;
+  GstVp9SegmentationInfo segmentation;
+
+  gint log2_tile_rows;
+  gint log2_tile_columns;
+
+  guint32 first_partition_size;
+
+  /* calculated values */
+  guint lossless_flag;
+  guint32 frame_header_length_in_bytes;
+};
+
+/**
+ * GstVp9Segmentation:
+ * @filter_level: loop filter level
+ * @luma_ac_quant_scale: AC quant scale for luma(Y) component
+ * @luma_dc_quant_scale: DC quant scale for luma(Y) component
+ * @chroma_ac_quant_scale AC quant scale for chroma(U/V) component
+ * @chroma_dc_quant_scale: DC quant scale for chroma (U/V) component
+ * @reference_frame_enabled: alternate reference frame enablement
+ * @reference_frame: alternate reference frame
+ * @reference_skip:  a block skip mode that implies both the use of a (0,0)
+ *   motion vector and that no residual will be coded
+ *
+ * Segmentation info kept across multipe frames
+ *
+ * Since: 1.8
+ */
+struct _GstVp9Segmentation
+{
+  guint8 filter_level[4][2];
+  gint16 luma_ac_quant_scale;
+  gint16 luma_dc_quant_scale;
+  gint16 chroma_ac_quant_scale;
+  gint16 chroma_dc_quant_scale;
+
+  guint8 reference_frame_enabled;
+  gint reference_frame;
+
+  guint8 reference_skip;
+};
+
+/**
+ * GstVp9Parser:
+ * @priv: GstVp9ParserPrivate struct to keep track of state variables
+ * @mb_segment_tree_probs: decoding tree probabilities
+ * @segment_pred_probs: segment prediction probabiilties
+ * @segmentation: Segmentation info
+ *
+ * Parser context that needs to be live across frames
+ *
+ * Since: 1.8
+ */
+struct _GstVp9Parser
+{
+  /* private stuct for tracking state variables across frames */
+  void *priv;
+
+  guint8 mb_segment_tree_probs[GST_VP9_SEG_TREE_PROBS];
+  guint8 segment_pred_probs[GST_VP9_PREDICTION_PROBS];
+  GstVp9Segmentation segmentation[GST_VP9_MAX_SEGMENTS];
+};
+
+GstVp9Parser *     gst_vp9_parser_new (void);
+
+GstVp9ParserResult gst_vp9_parser_parse_frame_header (GstVp9Parser* parser, GstVp9FrameHdr * frame_hdr, const guint8 * data, gsize size);
+
+void               gst_vp9_parser_free (GstVp9Parser * parser);
+
+G_END_DECLS
+
+#endif /* GST_VP9_PARSER_H */
diff --git a/gst-libs/gst/codecparsers/nalutils.h b/gst-libs/gst/codecparsers/nalutils.h
index 11cbe7a..7e23ab1 100644
--- a/gst-libs/gst/codecparsers/nalutils.h
+++ b/gst-libs/gst/codecparsers/nalutils.h
@@ -53,19 +53,35 @@
   guint64 cache;                /* cached bytes */
 } NalReader;
 
+G_GNUC_INTERNAL
 void nal_reader_init (NalReader * nr, const guint8 * data, guint size);
 
+G_GNUC_INTERNAL
 gboolean nal_reader_read (NalReader * nr, guint nbits);
+
+G_GNUC_INTERNAL
 gboolean nal_reader_skip (NalReader * nr, guint nbits);
+
+G_GNUC_INTERNAL
 gboolean nal_reader_skip_long (NalReader * nr, guint nbits);
+
+G_GNUC_INTERNAL
 guint nal_reader_get_pos (const NalReader * nr);
+
+G_GNUC_INTERNAL
 guint nal_reader_get_remaining (const NalReader * nr);
+
+G_GNUC_INTERNAL
 guint nal_reader_get_epb_count (const NalReader * nr);
 
+G_GNUC_INTERNAL
 gboolean nal_reader_is_byte_aligned (NalReader * nr);
+
+G_GNUC_INTERNAL
 gboolean nal_reader_has_more_data (NalReader * nr);
 
 #define NAL_READER_READ_BITS_H(bits) \
+G_GNUC_INTERNAL \
 gboolean nal_reader_get_bits_uint##bits (NalReader *nr, guint##bits *val, guint nbits)
 
 NAL_READER_READ_BITS_H (8);
@@ -73,11 +89,15 @@
 NAL_READER_READ_BITS_H (32);
 
 #define NAL_READER_PEEK_BITS_H(bits) \
+G_GNUC_INTERNAL \
 gboolean nal_reader_peek_bits_uint##bits (const NalReader *nr, guint##bits *val, guint nbits)
 
 NAL_READER_PEEK_BITS_H (8);
 
+G_GNUC_INTERNAL
 gboolean nal_reader_get_ue (NalReader * nr, guint32 * val);
+
+G_GNUC_INTERNAL
 gboolean nal_reader_get_se (NalReader * nr, gint32 * val);
 
 #define CHECK_ALLOWED_MAX(val, max) { \
@@ -159,4 +179,5 @@
   val = tmp; \
 }
 
+G_GNUC_INTERNAL
 gint scan_for_start_codes (const guint8 * data, guint size);
diff --git a/gst-libs/gst/codecparsers/parserutils.h b/gst-libs/gst/codecparsers/parserutils.h
index 6b54ded..e1bf18f 100644
--- a/gst-libs/gst/codecparsers/parserutils.h
+++ b/gst-libs/gst/codecparsers/parserutils.h
@@ -101,7 +101,7 @@
   guint cbits;
 };
 
-gboolean
+G_GNUC_INTERNAL gboolean
 decode_vlc (GstBitReader * br, guint * res, const VLCTable * table,
     guint length);
 
diff --git a/gst-libs/gst/codecparsers/vp8utils.h b/gst-libs/gst/codecparsers/vp8utils.h
index c8fc96b..5715a5b 100644
--- a/gst-libs/gst/codecparsers/vp8utils.h
+++ b/gst-libs/gst/codecparsers/vp8utils.h
@@ -25,19 +25,19 @@
 
 #include <gst/codecparsers/gstvp8parser.h>
 
-void
+G_GNUC_INTERNAL void
 gst_vp8_token_update_probs_init (GstVp8TokenProbs * probs);
 
-void
+G_GNUC_INTERNAL void
 gst_vp8_token_probs_init_defaults (GstVp8TokenProbs * probs);
 
-void
+G_GNUC_INTERNAL void
 gst_vp8_mv_update_probs_init (GstVp8MvProbs * probs);
 
-void
+G_GNUC_INTERNAL void
 gst_vp8_mv_probs_init_defaults (GstVp8MvProbs * probs);
 
-void
+G_GNUC_INTERNAL void
 gst_vp8_mode_probs_init_defaults (GstVp8ModeProbs * probs, gboolean key_frame);
 
 #endif /* GST_VP8_UTILS_H */
diff --git a/gst-libs/gst/codecparsers/vp9utils.c b/gst-libs/gst/codecparsers/vp9utils.c
new file mode 100644
index 0000000..009fa24
--- /dev/null
+++ b/gst-libs/gst/codecparsers/vp9utils.c
@@ -0,0 +1,290 @@
+/*
+ *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *   * Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ *
+ *   * Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in
+ *     the documentation and/or other materials provided with the
+ *     distribution.
+ *
+ *   * Neither the name of Google, nor the WebM Project, nor the names
+ *     of its contributors may be used to endorse or promote products
+ *     derived from this software without specific prior written
+ *     permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "vp9utils.h"
+
+static const int16_t dc_qlookup[QINDEX_RANGE] = {
+  4, 8, 8, 9, 10, 11, 12, 12,
+  13, 14, 15, 16, 17, 18, 19, 19,
+  20, 21, 22, 23, 24, 25, 26, 26,
+  27, 28, 29, 30, 31, 32, 32, 33,
+  34, 35, 36, 37, 38, 38, 39, 40,
+  41, 42, 43, 43, 44, 45, 46, 47,
+  48, 48, 49, 50, 51, 52, 53, 53,
+  54, 55, 56, 57, 57, 58, 59, 60,
+  61, 62, 62, 63, 64, 65, 66, 66,
+  67, 68, 69, 70, 70, 71, 72, 73,
+  74, 74, 75, 76, 77, 78, 78, 79,
+  80, 81, 81, 82, 83, 84, 85, 85,
+  87, 88, 90, 92, 93, 95, 96, 98,
+  99, 101, 102, 104, 105, 107, 108, 110,
+  111, 113, 114, 116, 117, 118, 120, 121,
+  123, 125, 127, 129, 131, 134, 136, 138,
+  140, 142, 144, 146, 148, 150, 152, 154,
+  156, 158, 161, 164, 166, 169, 172, 174,
+  177, 180, 182, 185, 187, 190, 192, 195,
+  199, 202, 205, 208, 211, 214, 217, 220,
+  223, 226, 230, 233, 237, 240, 243, 247,
+  250, 253, 257, 261, 265, 269, 272, 276,
+  280, 284, 288, 292, 296, 300, 304, 309,
+  313, 317, 322, 326, 330, 335, 340, 344,
+  349, 354, 359, 364, 369, 374, 379, 384,
+  389, 395, 400, 406, 411, 417, 423, 429,
+  435, 441, 447, 454, 461, 467, 475, 482,
+  489, 497, 505, 513, 522, 530, 539, 549,
+  559, 569, 579, 590, 602, 614, 626, 640,
+  654, 668, 684, 700, 717, 736, 755, 775,
+  796, 819, 843, 869, 896, 925, 955, 988,
+  1022, 1058, 1098, 1139, 1184, 1232, 1282, 1336,
+};
+
+static const int16_t dc_qlookup_10[QINDEX_RANGE] = {
+  4, 9, 10, 13, 15, 17, 20, 22,
+  25, 28, 31, 34, 37, 40, 43, 47,
+  50, 53, 57, 60, 64, 68, 71, 75,
+  78, 82, 86, 90, 93, 97, 101, 105,
+  109, 113, 116, 120, 124, 128, 132, 136,
+  140, 143, 147, 151, 155, 159, 163, 166,
+  170, 174, 178, 182, 185, 189, 193, 197,
+  200, 204, 208, 212, 215, 219, 223, 226,
+  230, 233, 237, 241, 244, 248, 251, 255,
+  259, 262, 266, 269, 273, 276, 280, 283,
+  287, 290, 293, 297, 300, 304, 307, 310,
+  314, 317, 321, 324, 327, 331, 334, 337,
+  343, 350, 356, 362, 369, 375, 381, 387,
+  394, 400, 406, 412, 418, 424, 430, 436,
+  442, 448, 454, 460, 466, 472, 478, 484,
+  490, 499, 507, 516, 525, 533, 542, 550,
+  559, 567, 576, 584, 592, 601, 609, 617,
+  625, 634, 644, 655, 666, 676, 687, 698,
+  708, 718, 729, 739, 749, 759, 770, 782,
+  795, 807, 819, 831, 844, 856, 868, 880,
+  891, 906, 920, 933, 947, 961, 975, 988,
+  1001, 1015, 1030, 1045, 1061, 1076, 1090, 1105,
+  1120, 1137, 1153, 1170, 1186, 1202, 1218, 1236,
+  1253, 1271, 1288, 1306, 1323, 1342, 1361, 1379,
+  1398, 1416, 1436, 1456, 1476, 1496, 1516, 1537,
+  1559, 1580, 1601, 1624, 1647, 1670, 1692, 1717,
+  1741, 1766, 1791, 1817, 1844, 1871, 1900, 1929,
+  1958, 1990, 2021, 2054, 2088, 2123, 2159, 2197,
+  2236, 2276, 2319, 2363, 2410, 2458, 2508, 2561,
+  2616, 2675, 2737, 2802, 2871, 2944, 3020, 3102,
+  3188, 3280, 3375, 3478, 3586, 3702, 3823, 3953,
+  4089, 4236, 4394, 4559, 4737, 4929, 5130, 5347,
+};
+
+static const int16_t dc_qlookup_12[QINDEX_RANGE] = {
+  4, 12, 18, 25, 33, 41, 50, 60,
+  70, 80, 91, 103, 115, 127, 140, 153,
+  166, 180, 194, 208, 222, 237, 251, 266,
+  281, 296, 312, 327, 343, 358, 374, 390,
+  405, 421, 437, 453, 469, 484, 500, 516,
+  532, 548, 564, 580, 596, 611, 627, 643,
+  659, 674, 690, 706, 721, 737, 752, 768,
+  783, 798, 814, 829, 844, 859, 874, 889,
+  904, 919, 934, 949, 964, 978, 993, 1008,
+  1022, 1037, 1051, 1065, 1080, 1094, 1108, 1122,
+  1136, 1151, 1165, 1179, 1192, 1206, 1220, 1234,
+  1248, 1261, 1275, 1288, 1302, 1315, 1329, 1342,
+  1368, 1393, 1419, 1444, 1469, 1494, 1519, 1544,
+  1569, 1594, 1618, 1643, 1668, 1692, 1717, 1741,
+  1765, 1789, 1814, 1838, 1862, 1885, 1909, 1933,
+  1957, 1992, 2027, 2061, 2096, 2130, 2165, 2199,
+  2233, 2267, 2300, 2334, 2367, 2400, 2434, 2467,
+  2499, 2532, 2575, 2618, 2661, 2704, 2746, 2788,
+  2830, 2872, 2913, 2954, 2995, 3036, 3076, 3127,
+  3177, 3226, 3275, 3324, 3373, 3421, 3469, 3517,
+  3565, 3621, 3677, 3733, 3788, 3843, 3897, 3951,
+  4005, 4058, 4119, 4181, 4241, 4301, 4361, 4420,
+  4479, 4546, 4612, 4677, 4742, 4807, 4871, 4942,
+  5013, 5083, 5153, 5222, 5291, 5367, 5442, 5517,
+  5591, 5665, 5745, 5825, 5905, 5984, 6063, 6149,
+  6234, 6319, 6404, 6495, 6587, 6678, 6769, 6867,
+  6966, 7064, 7163, 7269, 7376, 7483, 7599, 7715,
+  7832, 7958, 8085, 8214, 8352, 8492, 8635, 8788,
+  8945, 9104, 9275, 9450, 9639, 9832, 10031, 10245,
+  10465, 10702, 10946, 11210, 11482, 11776, 12081, 12409,
+  12750, 13118, 13501, 13913, 14343, 14807, 15290, 15812,
+  16356, 16943, 17575, 18237, 18949, 19718, 20521, 21387,
+};
+
+static const int16_t ac_qlookup[QINDEX_RANGE] = {
+  4, 8, 9, 10, 11, 12, 13, 14,
+  15, 16, 17, 18, 19, 20, 21, 22,
+  23, 24, 25, 26, 27, 28, 29, 30,
+  31, 32, 33, 34, 35, 36, 37, 38,
+  39, 40, 41, 42, 43, 44, 45, 46,
+  47, 48, 49, 50, 51, 52, 53, 54,
+  55, 56, 57, 58, 59, 60, 61, 62,
+  63, 64, 65, 66, 67, 68, 69, 70,
+  71, 72, 73, 74, 75, 76, 77, 78,
+  79, 80, 81, 82, 83, 84, 85, 86,
+  87, 88, 89, 90, 91, 92, 93, 94,
+  95, 96, 97, 98, 99, 100, 101, 102,
+  104, 106, 108, 110, 112, 114, 116, 118,
+  120, 122, 124, 126, 128, 130, 132, 134,
+  136, 138, 140, 142, 144, 146, 148, 150,
+  152, 155, 158, 161, 164, 167, 170, 173,
+  176, 179, 182, 185, 188, 191, 194, 197,
+  200, 203, 207, 211, 215, 219, 223, 227,
+  231, 235, 239, 243, 247, 251, 255, 260,
+  265, 270, 275, 280, 285, 290, 295, 300,
+  305, 311, 317, 323, 329, 335, 341, 347,
+  353, 359, 366, 373, 380, 387, 394, 401,
+  408, 416, 424, 432, 440, 448, 456, 465,
+  474, 483, 492, 501, 510, 520, 530, 540,
+  550, 560, 571, 582, 593, 604, 615, 627,
+  639, 651, 663, 676, 689, 702, 715, 729,
+  743, 757, 771, 786, 801, 816, 832, 848,
+  864, 881, 898, 915, 933, 951, 969, 988,
+  1007, 1026, 1046, 1066, 1087, 1108, 1129, 1151,
+  1173, 1196, 1219, 1243, 1267, 1292, 1317, 1343,
+  1369, 1396, 1423, 1451, 1479, 1508, 1537, 1567,
+  1597, 1628, 1660, 1692, 1725, 1759, 1793, 1828,
+};
+
+static const int16_t ac_qlookup_10[QINDEX_RANGE] = {
+  4, 9, 11, 13, 16, 18, 21, 24,
+  27, 30, 33, 37, 40, 44, 48, 51,
+  55, 59, 63, 67, 71, 75, 79, 83,
+  88, 92, 96, 100, 105, 109, 114, 118,
+  122, 127, 131, 136, 140, 145, 149, 154,
+  158, 163, 168, 172, 177, 181, 186, 190,
+  195, 199, 204, 208, 213, 217, 222, 226,
+  231, 235, 240, 244, 249, 253, 258, 262,
+  267, 271, 275, 280, 284, 289, 293, 297,
+  302, 306, 311, 315, 319, 324, 328, 332,
+  337, 341, 345, 349, 354, 358, 362, 367,
+  371, 375, 379, 384, 388, 392, 396, 401,
+  409, 417, 425, 433, 441, 449, 458, 466,
+  474, 482, 490, 498, 506, 514, 523, 531,
+  539, 547, 555, 563, 571, 579, 588, 596,
+  604, 616, 628, 640, 652, 664, 676, 688,
+  700, 713, 725, 737, 749, 761, 773, 785,
+  797, 809, 825, 841, 857, 873, 889, 905,
+  922, 938, 954, 970, 986, 1002, 1018, 1038,
+  1058, 1078, 1098, 1118, 1138, 1158, 1178, 1198,
+  1218, 1242, 1266, 1290, 1314, 1338, 1362, 1386,
+  1411, 1435, 1463, 1491, 1519, 1547, 1575, 1603,
+  1631, 1663, 1695, 1727, 1759, 1791, 1823, 1859,
+  1895, 1931, 1967, 2003, 2039, 2079, 2119, 2159,
+  2199, 2239, 2283, 2327, 2371, 2415, 2459, 2507,
+  2555, 2603, 2651, 2703, 2755, 2807, 2859, 2915,
+  2971, 3027, 3083, 3143, 3203, 3263, 3327, 3391,
+  3455, 3523, 3591, 3659, 3731, 3803, 3876, 3952,
+  4028, 4104, 4184, 4264, 4348, 4432, 4516, 4604,
+  4692, 4784, 4876, 4972, 5068, 5168, 5268, 5372,
+  5476, 5584, 5692, 5804, 5916, 6032, 6148, 6268,
+  6388, 6512, 6640, 6768, 6900, 7036, 7172, 7312,
+};
+
+static const int16_t ac_qlookup_12[QINDEX_RANGE] = {
+  4, 13, 19, 27, 35, 44, 54, 64,
+  75, 87, 99, 112, 126, 139, 154, 168,
+  183, 199, 214, 230, 247, 263, 280, 297,
+  314, 331, 349, 366, 384, 402, 420, 438,
+  456, 475, 493, 511, 530, 548, 567, 586,
+  604, 623, 642, 660, 679, 698, 716, 735,
+  753, 772, 791, 809, 828, 846, 865, 884,
+  902, 920, 939, 957, 976, 994, 1012, 1030,
+  1049, 1067, 1085, 1103, 1121, 1139, 1157, 1175,
+  1193, 1211, 1229, 1246, 1264, 1282, 1299, 1317,
+  1335, 1352, 1370, 1387, 1405, 1422, 1440, 1457,
+  1474, 1491, 1509, 1526, 1543, 1560, 1577, 1595,
+  1627, 1660, 1693, 1725, 1758, 1791, 1824, 1856,
+  1889, 1922, 1954, 1987, 2020, 2052, 2085, 2118,
+  2150, 2183, 2216, 2248, 2281, 2313, 2346, 2378,
+  2411, 2459, 2508, 2556, 2605, 2653, 2701, 2750,
+  2798, 2847, 2895, 2943, 2992, 3040, 3088, 3137,
+  3185, 3234, 3298, 3362, 3426, 3491, 3555, 3619,
+  3684, 3748, 3812, 3876, 3941, 4005, 4069, 4149,
+  4230, 4310, 4390, 4470, 4550, 4631, 4711, 4791,
+  4871, 4967, 5064, 5160, 5256, 5352, 5448, 5544,
+  5641, 5737, 5849, 5961, 6073, 6185, 6297, 6410,
+  6522, 6650, 6778, 6906, 7034, 7162, 7290, 7435,
+  7579, 7723, 7867, 8011, 8155, 8315, 8475, 8635,
+  8795, 8956, 9132, 9308, 9484, 9660, 9836, 10028,
+  10220, 10412, 10604, 10812, 11020, 11228, 11437, 11661,
+  11885, 12109, 12333, 12573, 12813, 13053, 13309, 13565,
+  13821, 14093, 14365, 14637, 14925, 15213, 15502, 15806,
+  16110, 16414, 16734, 17054, 17390, 17726, 18062, 18414,
+  18766, 19134, 19502, 19886, 20270, 20670, 21070, 21486,
+  21902, 22334, 22766, 23214, 23662, 24126, 24590, 25070,
+  25551, 26047, 26559, 27071, 27599, 28143, 28687, 29247,
+};
+
+static int
+clamp (int value, int low, int high)
+{
+  return value < low ? low : (value > high ? high : value);
+}
+
+int16_t
+gst_vp9_dc_quant (int qindex, int delta, int bit_depth)
+{
+  const uint8_t q_table_idx = clamp (qindex + delta, 0, MAXQ);
+
+  switch (bit_depth) {
+    case 8:
+      return dc_qlookup[q_table_idx];
+    case 10:
+      return dc_qlookup_10[q_table_idx];
+    case 12:
+      return dc_qlookup_12[q_table_idx];
+    default:
+      return -1;
+  }
+  return -1;
+}
+
+int16_t
+gst_vp9_ac_quant (int qindex, int delta, int bit_depth)
+{
+  const uint8_t q_table_idx = clamp (qindex + delta, 0, MAXQ);
+
+  switch (bit_depth) {
+    case 8:
+      return ac_qlookup[q_table_idx];
+    case 10:
+      return ac_qlookup_10[q_table_idx];
+    case 12:
+      return ac_qlookup_12[q_table_idx];
+    default:
+      return -1;
+  }
+  return -1;
+}
diff --git a/gst-libs/gst/codecparsers/vp9utils.h b/gst-libs/gst/codecparsers/vp9utils.h
new file mode 100644
index 0000000..7f8240b
--- /dev/null
+++ b/gst-libs/gst/codecparsers/vp9utils.h
@@ -0,0 +1,51 @@
+/*
+ *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *   * Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ *
+ *   * Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in
+ *     the documentation and/or other materials provided with the
+ *     distribution.
+ *
+ *   * Neither the name of Google, nor the WebM Project, nor the names
+ *     of its contributors may be used to endorse or promote products
+ *     derived from this software without specific prior written
+ *     permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
+ */
+
+#ifndef __VP9_QUANT_H__
+#define __VP9_QUANT_H__
+
+#include <stdint.h>
+#include <glib.h>
+
+#define MAXQ 255
+#define QINDEX_RANGE 256
+#define QINDEX_BITS 8
+
+G_GNUC_INTERNAL
+int16_t gst_vp9_dc_quant(int qindex, int delta, int bit_depth);
+
+G_GNUC_INTERNAL
+int16_t gst_vp9_ac_quant(int qindex, int delta, int bit_depth);
+
+
+#endif //__VP9_QUANT_H__
diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am
index edc1370..f1cb9e1 100644
--- a/gst-libs/gst/gl/Makefile.am
+++ b/gst-libs/gst/gl/Makefile.am
@@ -4,8 +4,6 @@
 SUBDIRS = glprototypes
 DIST_SUBDIRS = glprototypes android x11 win32 cocoa wayland dispmanx egl eagl
 
-noinst_HEADERS =
-
 built_sys_header_configure = gstglconfig.h
 
 libgstgl_@GST_API_VERSION@_la_SOURCES = \
@@ -34,8 +32,8 @@
 	gstglsyncmeta.c \
 	gstglviewconvert.c \
 	gstgloverlaycompositor.c \
-	gstglsl_private.h \
-	utils/opengl_versions.h
+	gstglquery.c \
+	gstglcontrolbindingproxy.c
 
 libgstgl_@GST_API_VERSION@includedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/gl
 libgstgl_@GST_API_VERSION@include_HEADERS = \
@@ -64,10 +62,18 @@
 	gstglsyncmeta.h \
 	gstglviewconvert.h \
 	gstgloverlaycompositor.h \
+	gstglquery.h \
+	gstglcontrolbindingproxy.h \
 	gstgl_fwd.h \
 	gstgl_enums.h \
 	gl.h
 
+noinst_HEADERS = \
+	gstglsl_private.h \
+	utils/opengl_versions.h \
+	utils/gles_versions.h
+
+
 libgstgl_@GST_API_VERSION@_la_LIBADD = \
 	$(GMODULE_NO_EXPORT_LIBS) \
 	$(GST_PLUGINS_BASE_LIBS) \
@@ -166,7 +172,7 @@
 		--pkg gstreamer-base-@GST_API_VERSION@ \
 		--pkg gstreamer-video-@GST_API_VERSION@ \
 		--pkg-export gstreamer-gl-@GST_API_VERSION@ \
-		--add-init-section="gst_init(NULL,NULL);" \
+		--add-init-section="$(INTROSPECTION_INIT)" \
 		-DGST_USE_UNSTABLE_API \
 		--output $@ \
 		$(gir_headers) \
diff --git a/gst-libs/gst/gl/Makefile.in b/gst-libs/gst/gl/Makefile.in
index 64779ea..42e795f 100644
--- a/gst-libs/gst/gl/Makefile.in
+++ b/gst-libs/gst/gl/Makefile.in
@@ -134,16 +134,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am \
@@ -218,7 +217,9 @@
 	libgstgl_@GST_API_VERSION@_la-gstglframebuffer.lo \
 	libgstgl_@GST_API_VERSION@_la-gstglsyncmeta.lo \
 	libgstgl_@GST_API_VERSION@_la-gstglviewconvert.lo \
-	libgstgl_@GST_API_VERSION@_la-gstgloverlaycompositor.lo
+	libgstgl_@GST_API_VERSION@_la-gstgloverlaycompositor.lo \
+	libgstgl_@GST_API_VERSION@_la-gstglquery.lo \
+	libgstgl_@GST_API_VERSION@_la-gstglcontrolbindingproxy.lo
 libgstgl_@GST_API_VERSION@_la_OBJECTS =  \
 	$(am_libgstgl_@GST_API_VERSION@_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -419,7 +420,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -441,7 +441,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -463,9 +462,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -627,6 +623,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -640,8 +637,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -728,8 +723,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -781,6 +774,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -801,6 +795,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -838,7 +834,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -883,7 +878,6 @@
 	$(am__append_7) $(am__append_9) $(am__append_11) \
 	$(am__append_13) $(am__append_15)
 DIST_SUBDIRS = glprototypes android x11 win32 cocoa wayland dispmanx egl eagl
-noinst_HEADERS = 
 built_sys_header_configure = gstglconfig.h
 libgstgl_@GST_API_VERSION@_la_SOURCES = \
 	gstgldisplay.c \
@@ -911,8 +905,8 @@
 	gstglsyncmeta.c \
 	gstglviewconvert.c \
 	gstgloverlaycompositor.c \
-	gstglsl_private.h \
-	utils/opengl_versions.h
+	gstglquery.c \
+	gstglcontrolbindingproxy.c
 
 libgstgl_@GST_API_VERSION@includedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/gl
 libgstgl_@GST_API_VERSION@include_HEADERS = \
@@ -941,10 +935,17 @@
 	gstglsyncmeta.h \
 	gstglviewconvert.h \
 	gstgloverlaycompositor.h \
+	gstglquery.h \
+	gstglcontrolbindingproxy.h \
 	gstgl_fwd.h \
 	gstgl_enums.h \
 	gl.h
 
+noinst_HEADERS = \
+	gstglsl_private.h \
+	utils/opengl_versions.h \
+	utils/gles_versions.h
+
 libgstgl_@GST_API_VERSION@_la_LIBADD = $(GMODULE_NO_EXPORT_LIBS) \
 	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
 	$(GST_BASE_LIBS) $(GST_LIBS) $(GL_LIBS) $(am__append_2) \
@@ -1066,6 +1067,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglbufferpool.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglcolorconvert.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglcontext.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglcontrolbindingproxy.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstgldebug.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstgldisplay.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglfeature.Plo@am__quote@
@@ -1075,6 +1077,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglmemory.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglmemorypbo.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstgloverlaycompositor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglquery.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglshader.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglshaderstrings.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglsl.Plo@am__quote@
@@ -1284,6 +1287,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstgl_@GST_API_VERSION@_la-gstgloverlaycompositor.lo `test -f 'gstgloverlaycompositor.c' || echo '$(srcdir)/'`gstgloverlaycompositor.c
 
+libgstgl_@GST_API_VERSION@_la-gstglquery.lo: gstglquery.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstgl_@GST_API_VERSION@_la-gstglquery.lo -MD -MP -MF $(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglquery.Tpo -c -o libgstgl_@GST_API_VERSION@_la-gstglquery.lo `test -f 'gstglquery.c' || echo '$(srcdir)/'`gstglquery.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglquery.Tpo $(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglquery.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstglquery.c' object='libgstgl_@GST_API_VERSION@_la-gstglquery.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstgl_@GST_API_VERSION@_la-gstglquery.lo `test -f 'gstglquery.c' || echo '$(srcdir)/'`gstglquery.c
+
+libgstgl_@GST_API_VERSION@_la-gstglcontrolbindingproxy.lo: gstglcontrolbindingproxy.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstgl_@GST_API_VERSION@_la-gstglcontrolbindingproxy.lo -MD -MP -MF $(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglcontrolbindingproxy.Tpo -c -o libgstgl_@GST_API_VERSION@_la-gstglcontrolbindingproxy.lo `test -f 'gstglcontrolbindingproxy.c' || echo '$(srcdir)/'`gstglcontrolbindingproxy.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglcontrolbindingproxy.Tpo $(DEPDIR)/libgstgl_@GST_API_VERSION@_la-gstglcontrolbindingproxy.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstglcontrolbindingproxy.c' object='libgstgl_@GST_API_VERSION@_la-gstglcontrolbindingproxy.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstgl_@GST_API_VERSION@_la-gstglcontrolbindingproxy.lo `test -f 'gstglcontrolbindingproxy.c' || echo '$(srcdir)/'`gstglcontrolbindingproxy.c
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -1694,7 +1711,7 @@
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-base-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-video-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--pkg-export gstreamer-gl-@GST_API_VERSION@ \
-@HAVE_INTROSPECTION_TRUE@		--add-init-section="gst_init(NULL,NULL);" \
+@HAVE_INTROSPECTION_TRUE@		--add-init-section="$(INTROSPECTION_INIT)" \
 @HAVE_INTROSPECTION_TRUE@		-DGST_USE_UNSTABLE_API \
 @HAVE_INTROSPECTION_TRUE@		--output $@ \
 @HAVE_INTROSPECTION_TRUE@		$(gir_headers) \
diff --git a/gst-libs/gst/gl/android/Makefile.in b/gst-libs/gst/gl/android/Makefile.in
index e7fe150..e5e7826 100644
--- a/gst-libs/gst/gl/android/Makefile.in
+++ b/gst-libs/gst/gl/android/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(libgstglandroidinclude_HEADERS) \
@@ -322,7 +321,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -344,7 +342,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -366,9 +363,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -530,6 +524,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -543,8 +538,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -631,8 +624,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -684,6 +675,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -704,6 +696,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -741,7 +735,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/gst/gl/android/gstglwindow_android_egl.c b/gst-libs/gst/gl/android/gstglwindow_android_egl.c
index 798a800..f234acf 100644
--- a/gst-libs/gst/gl/android/gstglwindow_android_egl.c
+++ b/gst-libs/gst/gl/android/gstglwindow_android_egl.c
@@ -106,7 +106,7 @@
 
   if (context_egl->egl_surface) {
     gint width, height;
-    gint window_width, window_height;
+    guint window_width, window_height;
 
     gst_gl_window_get_surface_dimensions (window, &window_width,
         &window_height);
diff --git a/gst-libs/gst/gl/cocoa/Makefile.in b/gst-libs/gst/gl/cocoa/Makefile.in
index 20141a2..4c02234 100644
--- a/gst-libs/gst/gl/cocoa/Makefile.in
+++ b/gst-libs/gst/gl/cocoa/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(libgstgl_cocoainclude_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/gst/gl/dispmanx/Makefile.in b/gst-libs/gst/gl/dispmanx/Makefile.in
index 1f40452..fd27c9a 100644
--- a/gst-libs/gst/gl/dispmanx/Makefile.in
+++ b/gst-libs/gst/gl/dispmanx/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -294,7 +293,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -316,7 +314,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -338,9 +335,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -502,6 +496,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -515,8 +510,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -603,8 +596,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -656,6 +647,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -676,6 +668,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -713,7 +707,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/gst/gl/eagl/Makefile.in b/gst-libs/gst/gl/eagl/Makefile.in
index 4c38a4d..869eabe 100644
--- a/gst-libs/gst/gl/eagl/Makefile.in
+++ b/gst-libs/gst/gl/eagl/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -294,7 +293,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -316,7 +314,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -338,9 +335,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -502,6 +496,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -515,8 +510,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -603,8 +596,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -656,6 +647,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -676,6 +668,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -713,7 +707,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/gst/gl/egl/Makefile.in b/gst-libs/gst/gl/egl/Makefile.in
index 776836e..2e35a7a 100644
--- a/gst-libs/gst/gl/egl/Makefile.in
+++ b/gst-libs/gst/gl/egl/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(libgstgl_eglinclude_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/gst/gl/egl/gsteglimagememory.c b/gst-libs/gst/gl/egl/gsteglimagememory.c
index 7005e47..e6d2c10 100644
--- a/gst-libs/gst/gl/egl/gsteglimagememory.c
+++ b/gst-libs/gst/gl/egl/gsteglimagememory.c
@@ -450,7 +450,7 @@
 
   if (!img) {
     GST_WARNING_OBJECT (allocator, "eglCreateImage failed: %s",
-        gst_gl_context_egl_get_error_string ());
+        gst_gl_context_egl_get_error_string (eglGetError ()));
     return NULL;
   }
 
diff --git a/gst-libs/gst/gl/egl/gstglcontext_egl.c b/gst-libs/gst/gl/egl/gstglcontext_egl.c
index 7911fc5..ceafdf3 100644
--- a/gst-libs/gst/gl/egl/gstglcontext_egl.c
+++ b/gst-libs/gst/gl/egl/gstglcontext_egl.c
@@ -30,6 +30,8 @@
 
 #include "gstglcontext_egl.h"
 #include <gst/gl/egl/gstegl.h>
+#include "../utils/opengl_versions.h"
+#include "../utils/gles_versions.h"
 
 #if GST_GL_HAVE_WINDOW_X11
 #include "../x11/gstglwindow_x11.h"
@@ -108,11 +110,9 @@
 }
 
 const gchar *
-gst_gl_context_egl_get_error_string (void)
+gst_gl_context_egl_get_error_string (EGLint err)
 {
-  EGLint nErr = eglGetError ();
-
-  switch (nErr) {
+  switch (err) {
     case EGL_SUCCESS:
       return "EGL_SUCCESS";
     case EGL_BAD_DISPLAY:
@@ -173,19 +173,36 @@
 }
 
 static gboolean
-gst_gl_context_egl_choose_config (GstGLContextEGL * egl,
-    GstGLContext * other_context, GError ** error)
+gst_gl_context_egl_choose_config (GstGLContextEGL * egl, GstGLAPI gl_api,
+    gint major, GError ** error)
 {
+  gboolean create_context;
   EGLint numConfigs;
   gint i = 0;
   EGLint config_attrib[20];
 
+  create_context =
+      gst_gl_check_extension ("EGL_KHR_create_context", egl->egl_exts);
+  /* silence unused warnings */
+  (void) create_context;
+
   config_attrib[i++] = EGL_SURFACE_TYPE;
   config_attrib[i++] = EGL_WINDOW_BIT;
   config_attrib[i++] = EGL_RENDERABLE_TYPE;
-  if (egl->gl_api & GST_GL_API_GLES2)
-    config_attrib[i++] = EGL_OPENGL_ES2_BIT;
-  else
+  if (gl_api & GST_GL_API_GLES2) {
+    if (major == 3) {
+#if defined(EGL_KHR_create_context)
+      if (create_context) {
+        config_attrib[i++] = EGL_OPENGL_ES3_BIT_KHR;
+      } else
+#endif
+      {
+        return FALSE;
+      }
+    } else {
+      config_attrib[i++] = EGL_OPENGL_ES2_BIT;
+    }
+  } else
     config_attrib[i++] = EGL_OPENGL_BIT;
 #if defined(USE_EGL_RPI) && GST_GL_HAVE_WINDOW_WAYLAND
   /* The configurations with a=0 seems to be buggy whereas
@@ -210,7 +227,7 @@
   } else {
     g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_WRONG_CONFIG,
         "Failed to set window configuration: %s",
-        gst_gl_context_egl_get_error_string ());
+        gst_gl_context_egl_get_error_string (eglGetError ()));
     goto failure;
   }
 
@@ -220,6 +237,71 @@
   return FALSE;
 }
 
+static EGLContext
+_create_context_with_flags (GstGLContextEGL * egl, EGLContext share_context,
+    GstGLAPI gl_api, gint major, gint minor, gint contextFlags,
+    gint profileMask)
+{
+  gboolean create_context;
+#define N_ATTRIBS 20
+  gint attribs[N_ATTRIBS];
+  gint n = 0;
+
+  /* fail creation of apis/versions/flags that require EGL_KHR_create_context
+   * if the extension doesn't exist, namely:0
+   *
+   * - profile mask
+   * - context flags
+   * - GL3 > 3.1
+   * - GLES2 && minor > 0
+   */
+  create_context =
+      gst_gl_check_extension ("EGL_KHR_create_context", egl->egl_exts);
+  (void) create_context;
+  if (!create_context && (profileMask || contextFlags
+          || ((gl_api & GST_GL_API_OPENGL3)
+              && GST_GL_CHECK_GL_VERSION (major, minor, 3, 2))
+          || ((gl_api & GST_GL_API_GLES2) && minor > 0))) {
+    return 0;
+  }
+
+  GST_DEBUG_OBJECT (egl, "attempting to create OpenGL%s context version %d.%d "
+      "flags %x profile %x", gl_api & GST_GL_API_GLES2 ? " ES" : "", major,
+      minor, contextFlags, profileMask);
+
+#if defined(EGL_KHR_create_context)
+  if (create_context) {
+    if (major) {
+      attribs[n++] = EGL_CONTEXT_MAJOR_VERSION_KHR;
+      attribs[n++] = major;
+    }
+    if (minor) {
+      attribs[n++] = EGL_CONTEXT_MINOR_VERSION_KHR;
+      attribs[n++] = minor;
+    }
+    if (contextFlags) {
+      attribs[n++] = EGL_CONTEXT_FLAGS_KHR;
+      attribs[n++] = contextFlags;
+    }
+    if (profileMask) {
+      attribs[n++] = EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR;
+      attribs[n++] = profileMask;
+    }
+  } else
+#endif
+  {
+    attribs[n++] = EGL_CONTEXT_CLIENT_VERSION;
+    attribs[n++] = major;
+  }
+  attribs[n++] = EGL_NONE;
+
+  g_assert (n < N_ATTRIBS);
+#undef N_ATTRIBS
+
+  return eglCreateContext (egl->egl_display, egl->egl_config, share_context,
+      attribs);
+}
+
 static gboolean
 gst_gl_context_egl_create_context (GstGLContext * context,
     GstGLAPI gl_api, GstGLContext * other_context, GError ** error)
@@ -227,11 +309,8 @@
   GstGLContextEGL *egl;
   GstGLWindow *window = NULL;
   EGLNativeWindowType window_handle = (EGLNativeWindowType) 0;
-  gint i = 0;
-  EGLint context_attrib[5];
   EGLint majorVersion;
   EGLint minorVersion;
-  const gchar *egl_exts;
   gboolean need_surface = TRUE;
   guintptr external_gl_context = 0;
   GstGLDisplay *display;
@@ -251,7 +330,8 @@
     external_gl_context = gst_gl_context_get_gl_context (other_context);
   }
 
-  if ((gl_api & (GST_GL_API_OPENGL | GST_GL_API_GLES2)) == GST_GL_API_NONE) {
+  if ((gl_api & (GST_GL_API_OPENGL | GST_GL_API_OPENGL3 | GST_GL_API_GLES2)) ==
+      GST_GL_API_NONE) {
     g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_WRONG_API,
         "EGL supports opengl or gles2");
     goto failure;
@@ -288,11 +368,17 @@
   } else {
     g_set_error (error, GST_GL_CONTEXT_ERROR,
         GST_GL_CONTEXT_ERROR_RESOURCE_UNAVAILABLE,
-        "Failed to initialize egl: %s", gst_gl_context_egl_get_error_string ());
+        "Failed to initialize egl: %s",
+        gst_gl_context_egl_get_error_string (eglGetError ()));
     goto failure;
   }
 
-  if (gl_api & GST_GL_API_OPENGL) {
+  egl->egl_exts = eglQueryString (egl->egl_display, EGL_EXTENSIONS);
+
+  if (gl_api & (GST_GL_API_OPENGL | GST_GL_API_OPENGL3)) {
+    GstGLAPI chosen_gl_api = 0;
+    gint i;
+
     /* egl + opengl only available with EGL 1.4+ */
     if (majorVersion == 1 && minorVersion <= 3) {
       if ((gl_api & ~GST_GL_API_OPENGL) == GST_GL_API_NONE) {
@@ -318,67 +404,115 @@
     if (!eglBindAPI (EGL_OPENGL_API)) {
       g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_FAILED,
           "Failed to bind OpenGL API: %s",
-          gst_gl_context_egl_get_error_string ());
+          gst_gl_context_egl_get_error_string (eglGetError ()));
       goto failure;
     }
 
-    GST_INFO ("Using OpenGL");
-    egl->gl_api = GST_GL_API_OPENGL;
+    GST_INFO ("Bound OpenGL");
+
+    /* api, version only matters for gles */
+    if (!gst_gl_context_egl_choose_config (egl, GST_GL_API_OPENGL, 0, error)) {
+      g_assert (error == NULL || *error != NULL);
+      goto failure;
+    }
+
+    for (i = 0; i < G_N_ELEMENTS (opengl_versions); i++) {
+      gint profileMask = 0;
+      gint contextFlags = 0;
+
+      if (GST_GL_CHECK_GL_VERSION (opengl_versions[i].major,
+              opengl_versions[i].minor, 3, 2)) {
+        /* skip gl3 contexts if requested */
+        if ((gl_api & GST_GL_API_OPENGL3) == 0)
+          continue;
+
+        chosen_gl_api = GST_GL_API_OPENGL3;
+#if defined(EGL_KHR_create_context)
+        profileMask |= EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR;
+        contextFlags |= EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR;
+#endif
+      } else if (opengl_versions[i].major == 3 && opengl_versions[i].minor == 1) {
+        /* skip 3.1, the implementation is free to give us either a core or a
+         * compatibility context (we have no say) */
+        continue;
+      } else {
+        /* skip legacy contexts if requested */
+        if ((gl_api & GST_GL_API_OPENGL) == 0)
+          continue;
+
+        chosen_gl_api = GST_GL_API_OPENGL;
+      }
+
+      egl->egl_context =
+          _create_context_with_flags (egl, (EGLContext) external_gl_context,
+          chosen_gl_api, opengl_versions[i].major,
+          opengl_versions[i].minor, contextFlags, profileMask);
+
+      if (egl->egl_context)
+        break;
+
+#if defined(EGL_KHR_create_context)
+      profileMask &= ~EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR;
+
+      egl->egl_context =
+          _create_context_with_flags (egl, (EGLContext) external_gl_context,
+          chosen_gl_api, opengl_versions[i].major,
+          opengl_versions[i].minor, contextFlags, profileMask);
+
+      if (egl->egl_context)
+        break;
+#endif
+    }
+
+    egl->gl_api = chosen_gl_api;
   } else if (gl_api & GST_GL_API_GLES2) {
+    gint i;
+
   try_gles2:
     if (!eglBindAPI (EGL_OPENGL_ES_API)) {
       g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_FAILED,
           "Failed to bind OpenGL|ES API: %s",
-          gst_gl_context_egl_get_error_string ());
+          gst_gl_context_egl_get_error_string (eglGetError ()));
       goto failure;
     }
 
-    GST_INFO ("Using OpenGL|ES 2.0");
+    GST_INFO ("Bound OpenGL|ES");
+
+    for (i = 0; i < G_N_ELEMENTS (gles2_versions); i++) {
+      gint profileMask = 0;
+      gint contextFlags = 0;
+
+      if (!gst_gl_context_egl_choose_config (egl, GST_GL_API_GLES2,
+              gles2_versions[i].major, error)) {
+        continue;
+      }
+#if defined(EGL_KHR_create_context)
+      /* try a debug context */
+      contextFlags |= EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR;
+
+      egl->egl_context =
+          _create_context_with_flags (egl, (EGLContext) external_gl_context,
+          GST_GL_API_GLES2, gles2_versions[i].major,
+          gles2_versions[i].minor, contextFlags, profileMask);
+
+      if (egl->egl_context)
+        break;
+
+      /* try without a debug context */
+      contextFlags &= ~EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR;
+#endif
+
+      egl->egl_context =
+          _create_context_with_flags (egl, (EGLContext) external_gl_context,
+          GST_GL_API_GLES2, gles2_versions[i].major,
+          gles2_versions[i].minor, contextFlags, profileMask);
+
+      if (egl->egl_context)
+        break;
+    }
     egl->gl_api = GST_GL_API_GLES2;
   }
 
-  if (!gst_gl_context_egl_choose_config (egl, other_context, error)) {
-    g_assert (error == NULL || *error != NULL);
-    goto failure;
-  }
-
-  egl_exts = eglQueryString (egl->egl_display, EGL_EXTENSIONS);
-
-  GST_DEBUG ("about to create gl context");
-
-  if (egl->gl_api & GST_GL_API_GLES2) {
-    context_attrib[i++] = EGL_CONTEXT_CLIENT_VERSION;
-    context_attrib[i++] = 2;
-  }
-#if !defined(GST_DISABLE_GST_DEBUG) && defined(EGL_KHR_create_context)
-  if (gst_gl_check_extension ("EGL_KHR_create_context", egl_exts)) {
-    context_attrib[i++] = EGL_CONTEXT_FLAGS_KHR;
-    context_attrib[i++] = EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR;
-  }
-#endif
-  context_attrib[i++] = EGL_NONE;
-
-  egl->egl_context =
-      eglCreateContext (egl->egl_display, egl->egl_config,
-      (EGLContext) external_gl_context, context_attrib);
-
-#ifdef EGL_KHR_create_context
-  if (egl->egl_context == EGL_NO_CONTEXT && egl->gl_api & GST_GL_API_GLES2
-      && eglGetError () != EGL_SUCCESS) {
-    /* try without EGL_CONTEXT_FLAGS flags as it was added to
-     * EGL_KHR_create_context for gles contexts */
-    int i;
-    for (i = 0; i < G_N_ELEMENTS (context_attrib); i++) {
-      if (context_attrib[i] == EGL_CONTEXT_FLAGS_KHR ||
-          context_attrib[i] == EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR)
-        context_attrib[i] = EGL_NONE;
-    }
-    egl->egl_context =
-        eglCreateContext (egl->egl_display, egl->egl_config,
-        (EGLContext) external_gl_context, context_attrib);
-  }
-#endif
-
   if (egl->egl_context != EGL_NO_CONTEXT) {
     GST_INFO ("gl context created: %" G_GUINTPTR_FORMAT,
         (guintptr) egl->egl_context);
@@ -386,7 +520,7 @@
     g_set_error (error, GST_GL_CONTEXT_ERROR,
         GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
         "Failed to create a OpenGL context: %s",
-        gst_gl_context_egl_get_error_string ());
+        gst_gl_context_egl_get_error_string (eglGetError ()));
     goto failure;
   }
   /* FIXME do we want a window vfunc ? */
@@ -428,7 +562,8 @@
         window_handle, NULL);
     /* Store window handle for later comparision */
     egl->window_handle = window_handle;
-  } else if (!gst_gl_check_extension ("EGL_KHR_surfaceless_context", egl_exts)) {
+  } else if (!gst_gl_check_extension ("EGL_KHR_surfaceless_context",
+          egl->egl_exts)) {
     EGLint surface_attrib[7];
     gint j = 0;
 
@@ -458,7 +593,7 @@
     } else {
       g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_FAILED,
           "Failed to create window surface: %s",
-          gst_gl_context_egl_get_error_string ());
+          gst_gl_context_egl_get_error_string (eglGetError ()));
       goto failure;
     }
   }
@@ -469,7 +604,7 @@
         "eglCreateImage");
     egl->eglDestroyImage = gst_gl_context_get_proc_address (context,
         "eglDestroyImage");
-  } else if (gst_gl_check_extension ("EGL_KHR_image_base", egl_exts)) {
+  } else if (gst_gl_check_extension ("EGL_KHR_image_base", egl->egl_exts)) {
     egl->eglCreateImage = gst_gl_context_get_proc_address (context,
         "eglCreateImageKHR");
     egl->eglDestroyImage = gst_gl_context_get_proc_address (context,
@@ -540,7 +675,7 @@
         egl->egl_surface = EGL_NO_SURFACE;
         if (!result) {
           GST_ERROR_OBJECT (context, "Failed to destroy old window surface: %s",
-              gst_gl_context_egl_get_error_string ());
+              gst_gl_context_egl_get_error_string (eglGetError ()));
           goto done;
         }
       }
@@ -551,21 +686,22 @@
 
       if (egl->egl_surface == EGL_NO_SURFACE) {
         GST_ERROR_OBJECT (context, "Failed to create window surface: %s",
-            gst_gl_context_egl_get_error_string ());
+            gst_gl_context_egl_get_error_string (eglGetError ()));
         result = FALSE;
         goto done;
       }
     }
     result = eglMakeCurrent (egl->egl_display, egl->egl_surface,
         egl->egl_surface, egl->egl_context);
-  } else
+  } else {
     result = eglMakeCurrent (egl->egl_display, EGL_NO_SURFACE,
         EGL_NO_SURFACE, EGL_NO_CONTEXT);
+  }
 
   if (!result) {
     GST_ERROR_OBJECT (context,
         "Failed to bind context to the current rendering thread: %s",
-        gst_gl_context_egl_get_error_string ());
+        gst_gl_context_egl_get_error_string (eglGetError ()));
   }
 
 done:
diff --git a/gst-libs/gst/gl/egl/gstglcontext_egl.h b/gst-libs/gst/gl/egl/gstglcontext_egl.h
index 8339e5a..90abb03 100644
--- a/gst-libs/gst/gl/egl/gstglcontext_egl.h
+++ b/gst-libs/gst/gl/egl/gstglcontext_egl.h
@@ -48,6 +48,8 @@
 
   GstGLAPI gl_api;
 
+  const gchar *egl_exts;
+
   EGLImageKHR (*eglCreateImage) (EGLDisplay dpy, EGLContext ctx, EGLenum target,
       EGLClientBuffer buffer, const EGLint *attrib_list);
   EGLBoolean (*eglDestroyImage) (EGLDisplay dpy, EGLImageKHR image);
@@ -64,7 +66,7 @@
 guintptr            gst_gl_context_egl_get_current_context  (void);
 gpointer            gst_gl_context_egl_get_proc_address     (GstGLAPI gl_api, const gchar * name);
 
-const gchar * gst_gl_context_egl_get_error_string (void);
+const gchar * gst_gl_context_egl_get_error_string (EGLint err);
 
 
 /* TODO:
diff --git a/gst-libs/gst/gl/gl.h b/gst-libs/gst/gl/gl.h
index dd54565..b17a4c6 100644
--- a/gst-libs/gst/gl/gl.h
+++ b/gst-libs/gst/gl/gl.h
@@ -52,5 +52,7 @@
 #include <gst/gl/gstglfilter.h>
 #include <gst/gl/gstglsyncmeta.h>
 #include <gst/gl/gstgloverlaycompositor.h>
+#include <gst/gl/gstglquery.h>
+#include <gst/gl/gstglcontrolbindingproxy.h>
 
 #endif /* __GST_GL_H__ */
diff --git a/gst-libs/gst/gl/glprototypes/Makefile.am b/gst-libs/gst/gl/glprototypes/Makefile.am
index 6ea90db..54ebc27 100644
--- a/gst-libs/gst/gl/glprototypes/Makefile.am
+++ b/gst-libs/gst/gl/glprototypes/Makefile.am
@@ -15,5 +15,6 @@
 	debug.h \
 	vao.h \
 	sync.h \
-	buffers.h
+	buffers.h \
+	query.h
 
diff --git a/gst-libs/gst/gl/glprototypes/Makefile.in b/gst-libs/gst/gl/glprototypes/Makefile.in
index 8937e4e..50d7df6 100644
--- a/gst-libs/gst/gl/glprototypes/Makefile.in
+++ b/gst-libs/gst/gl/glprototypes/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(prototype_HEADERS) \
@@ -286,7 +285,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -308,7 +306,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -330,9 +327,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -494,6 +488,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -507,8 +502,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -595,8 +588,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -648,6 +639,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -668,6 +660,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -705,7 +699,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -761,7 +754,8 @@
 	debug.h \
 	vao.h \
 	sync.h \
-	buffers.h
+	buffers.h \
+	query.h
 
 all: all-am
 
diff --git a/gst-libs/gst/gl/glprototypes/all_functions.h b/gst-libs/gst/gl/glprototypes/all_functions.h
index c6af415..9f7e4f1 100644
--- a/gst-libs/gst/gl/glprototypes/all_functions.h
+++ b/gst-libs/gst/gl/glprototypes/all_functions.h
@@ -30,3 +30,4 @@
 #include "vao.h"
 #include "sync.h"
 #include "buffers.h"
+#include "query.h"
diff --git a/gst-libs/gst/gl/glprototypes/base.h b/gst-libs/gst/gl/glprototypes/base.h
index f0528b7..8394a38 100644
--- a/gst-libs/gst/gl/glprototypes/base.h
+++ b/gst-libs/gst/gl/glprototypes/base.h
@@ -255,7 +255,7 @@
                   "ARB\0",
                   "vertex_buffer_object\0")
 GST_GL_EXT_FUNCTION (void, GenBuffers,
-                     (GLuint		 n,
+                     (GLsizei		 n,
                       GLuint		*buffers))
 GST_GL_EXT_FUNCTION (void, BindBuffer,
                      (GLenum		 target,
diff --git a/gst-libs/gst/gl/glprototypes/gstgl_compat.h b/gst-libs/gst/gl/glprototypes/gstgl_compat.h
index a4f963d..31b1e00 100644
--- a/gst-libs/gst/gl/glprototypes/gstgl_compat.h
+++ b/gst-libs/gst/gl/glprototypes/gstgl_compat.h
@@ -42,6 +42,9 @@
 #if !GST_GL_HAVE_GLUINT64
 typedef guint64 GLuint64;
 #endif
+#if !GST_GL_HAVE_GLINT64
+typedef gint64 GLint64;
+#endif
 
 #if !defined(GST_GL_DEBUG_PROC)
 #if defined(GLDEBUGPROC)
diff --git a/gst-libs/gst/gl/glprototypes/query.h b/gst-libs/gst/gl/glprototypes/query.h
new file mode 100644
index 0000000..09f1ba2
--- /dev/null
+++ b/gst-libs/gst/gl/glprototypes/query.h
@@ -0,0 +1,63 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+GST_GL_EXT_BEGIN (timer_query,
+                  GST_GL_API_OPENGL3,
+                  3, 3,
+                  3, 0,
+                  "ARB:\0ANGLE\0EXT\0",
+                  "timer_query\0disjoint_timer_query\0")
+GST_GL_EXT_FUNCTION (void, GenQueries,
+                     (GLsizei n,
+                     GLuint *ids))
+GST_GL_EXT_FUNCTION (void, DeleteQueries,
+                     (GLsizei n,
+                      GLuint *ids))
+GST_GL_EXT_FUNCTION (GLboolean, IsQuery,
+                     (GLuint id))
+GST_GL_EXT_FUNCTION (void, BeginQuery,
+                     (GLenum target,
+                      GLuint id))
+GST_GL_EXT_FUNCTION (void, EndQuery,
+                     (GLenum target))
+GST_GL_EXT_FUNCTION (void, QueryCounter,
+                     (GLuint id,
+                     GLenum target))
+GST_GL_EXT_FUNCTION (void, GetQueryiv,
+                     (GLenum target,
+                      GLenum pname,
+                      GLint *params))
+GST_GL_EXT_FUNCTION (void, GetQueryObjectiv,
+                     (GLuint id,
+                      GLenum pname,
+                      GLint *params))
+GST_GL_EXT_FUNCTION (void, GetQueryObjectuiv,
+                     (GLuint id,
+                      GLenum pname,
+                      GLuint *params))
+GST_GL_EXT_FUNCTION (void, GetQueryObjecti64v,
+                     (GLuint id,
+                      GLenum pname,
+                      GLint64 *params))
+GST_GL_EXT_FUNCTION (void, GetQueryObjectui64v,
+                     (GLuint id,
+                      GLenum pname,
+                      GLuint64 *params))
+GST_GL_EXT_END ()
diff --git a/gst-libs/gst/gl/glprototypes/sync.h b/gst-libs/gst/gl/glprototypes/sync.h
index d2fa99d..2123344 100644
--- a/gst-libs/gst/gl/glprototypes/sync.h
+++ b/gst-libs/gst/gl/glprototypes/sync.h
@@ -22,8 +22,8 @@
                   GST_GL_API_OPENGL3,
                   3, 2,
                   3, 0,
-                  "APPLE",
-                  "sync")
+                  "APPLE\0",
+                  "sync\0")
 GST_GL_EXT_FUNCTION (GLsync, FenceSync,
                      (GLenum condition,
                       GLbitfield flags))
diff --git a/gst-libs/gst/gl/gstgl_fwd.h b/gst-libs/gst/gl/gstgl_fwd.h
index 2a8a798..fb64ff6 100644
--- a/gst-libs/gst/gl/gstgl_fwd.h
+++ b/gst-libs/gst/gl/gstgl_fwd.h
@@ -89,6 +89,8 @@
 typedef struct _GstGLOverlayCompositor GstGLOverlayCompositor;
 typedef struct _GstGLOverlayCompositorClass GstGLOverlayCompositorClass;
 
+typedef struct _GstGLQuery GstGLQuery;
+
 #include <gst/gl/gstgl_enums.h>
 
 #ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
diff --git a/gst-libs/gst/gl/gstglbasefilter.c b/gst-libs/gst/gl/gstglbasefilter.c
index c5d330e..a4e97b9 100644
--- a/gst-libs/gst/gl/gstglbasefilter.c
+++ b/gst-libs/gst/gl/gstglbasefilter.c
@@ -50,9 +50,9 @@
 #define gst_gl_base_filter_parent_class parent_class
 G_DEFINE_TYPE_WITH_CODE (GstGLBaseFilter, gst_gl_base_filter,
     GST_TYPE_BASE_TRANSFORM, GST_DEBUG_CATEGORY_INIT (gst_gl_base_filter_debug,
-        "glbasefilter", 0, "glbasefilter element");
-    );
+        "glbasefilter", 0, "glbasefilter element"););
 
+static void gst_gl_base_filter_finalize (GObject * object);
 static void gst_gl_base_filter_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
 static void gst_gl_base_filter_get_property (GObject * object, guint prop_id,
@@ -67,6 +67,8 @@
 static void gst_gl_base_filter_reset (GstGLBaseFilter * filter);
 static gboolean gst_gl_base_filter_start (GstBaseTransform * bt);
 static gboolean gst_gl_base_filter_stop (GstBaseTransform * bt);
+static gboolean gst_gl_base_filter_set_caps (GstBaseTransform * bt,
+    GstCaps * incaps, GstCaps * outcaps);
 static gboolean gst_gl_base_filter_decide_allocation (GstBaseTransform * trans,
     GstQuery * query);
 
@@ -85,10 +87,12 @@
   gobject_class = (GObjectClass *) klass;
   element_class = GST_ELEMENT_CLASS (klass);
 
+  gobject_class->finalize = gst_gl_base_filter_finalize;
   gobject_class->set_property = gst_gl_base_filter_set_property;
   gobject_class->get_property = gst_gl_base_filter_get_property;
 
   GST_BASE_TRANSFORM_CLASS (klass)->query = gst_gl_base_filter_query;
+  GST_BASE_TRANSFORM_CLASS (klass)->set_caps = gst_gl_base_filter_set_caps;
   GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_base_filter_start;
   GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_base_filter_stop;
   GST_BASE_TRANSFORM_CLASS (klass)->decide_allocation =
@@ -109,10 +113,23 @@
 static void
 gst_gl_base_filter_init (GstGLBaseFilter * filter)
 {
+  gst_base_transform_set_qos_enabled (GST_BASE_TRANSFORM (filter), TRUE);
+
   filter->priv = GST_GL_BASE_FILTER_GET_PRIVATE (filter);
 }
 
 static void
+gst_gl_base_filter_finalize (GObject * object)
+{
+  GstGLBaseFilter *filter = GST_GL_BASE_FILTER (object);
+
+  gst_caps_replace (&filter->in_caps, NULL);
+  gst_caps_replace (&filter->out_caps, NULL);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
 gst_gl_base_filter_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec)
 {
@@ -325,6 +342,16 @@
   filter->priv->gl_started = FALSE;
 }
 
+static void
+_gl_set_caps (GstGLContext * context, GstGLBaseFilter * filter)
+{
+  GstGLBaseFilterClass *filter_class = GST_GL_BASE_FILTER_GET_CLASS (filter);
+
+  if (filter_class->gl_set_caps)
+    filter->priv->gl_result =
+        filter_class->gl_set_caps (filter, filter->in_caps, filter->out_caps);
+}
+
 static gboolean
 gst_gl_base_filter_decide_allocation (GstBaseTransform * trans,
     GstQuery * query)
@@ -357,7 +384,7 @@
     GST_OBJECT_UNLOCK (filter->display);
   }
 
-  if (new_context) {
+  if (new_context || !filter->priv->gl_started) {
     if (filter->priv->gl_started)
       gst_gl_context_thread_add (filter->context, gst_gl_base_filter_gl_stop,
           filter);
@@ -369,6 +396,11 @@
       goto error;
   }
 
+  gst_gl_context_thread_add (filter->context,
+      (GstGLContextThreadFunc) _gl_set_caps, filter);
+  if (!filter->priv->gl_result)
+    goto error;
+
   return GST_BASE_TRANSFORM_CLASS (parent_class)->decide_allocation (trans,
       query);
 
@@ -387,6 +419,18 @@
   }
 }
 
+static gboolean
+gst_gl_base_filter_set_caps (GstBaseTransform * bt, GstCaps * incaps,
+    GstCaps * outcaps)
+{
+  GstGLBaseFilter *filter = GST_GL_BASE_FILTER (bt);
+
+  gst_caps_replace (&filter->in_caps, incaps);
+  gst_caps_replace (&filter->out_caps, outcaps);
+
+  return TRUE;
+}
+
 static GstStateChangeReturn
 gst_gl_base_filter_change_state (GstElement * element,
     GstStateChange transition)
diff --git a/gst-libs/gst/gl/gstglbasefilter.h b/gst-libs/gst/gl/gstglbasefilter.h
index 5ed3980..84f7a96 100644
--- a/gst-libs/gst/gl/gstglbasefilter.h
+++ b/gst-libs/gst/gl/gstglbasefilter.h
@@ -55,6 +55,9 @@
   GstGLDisplay      *display;
   GstGLContext      *context;
 
+  GstCaps           *in_caps;
+  GstCaps           *out_caps;
+
   /* <private> */
   gpointer _padding[GST_PADDING];
 
@@ -66,6 +69,7 @@
  * @base_transform_class: parent class
  * @gl_start: called in the GL thread to setup the element GL state.
  * @gl_stop: called in the GL thread to setup the element GL state.
+ * @gl_set_caps: called in the GL thread when caps are set on @filter.
  */
 struct _GstGLBaseFilterClass
 {
@@ -74,6 +78,7 @@
 
   gboolean (*gl_start)          (GstGLBaseFilter *filter);
   void     (*gl_stop)           (GstGLBaseFilter *filter);
+  gboolean (*gl_set_caps)       (GstGLBaseFilter *filter, GstCaps * incaps, GstCaps * outcaps);
 
   gpointer _padding[GST_PADDING];
 };
diff --git a/gst-libs/gst/gl/gstglbasememory.c b/gst-libs/gst/gl/gstglbasememory.c
index a55603a..88cb881 100644
--- a/gst-libs/gst/gl/gstglbasememory.c
+++ b/gst-libs/gst/gl/gstglbasememory.c
@@ -76,11 +76,15 @@
   GstGLBaseMemoryAllocatorClass *alloc_class;
   GError *error = NULL;
 
+  GST_CAT_TRACE (GST_CAT_GL_BASE_MEMORY, "Create memory %p", transfer->mem);
+
   alloc_class =
       GST_GL_BASE_MEMORY_ALLOCATOR_GET_CLASS (transfer->mem->mem.allocator);
 
   g_return_if_fail (alloc_class->create != NULL);
 
+  transfer->mem->query = gst_gl_query_new (context, GST_GL_QUERY_TIME_ELAPSED);
+
   if ((transfer->result = alloc_class->create (transfer->mem, &error)))
     return;
 
@@ -418,6 +422,9 @@
   g_return_if_fail (alloc_class->destroy != NULL);
 
   alloc_class->destroy (mem);
+
+  if (mem->query)
+    gst_gl_query_free (mem->query);
 }
 
 static void
@@ -442,6 +449,8 @@
     mem->notify (mem->user_data);
 
   gst_object_unref (mem->context);
+
+  g_free (memory);
 }
 
 /**
@@ -527,11 +536,6 @@
   if (!gst_gl_base_memory_alloc_data (GST_GL_BASE_MEMORY_CAST (dest)))
     return FALSE;
 
-  if (dest == NULL) {
-    GST_CAT_WARNING (GST_CAT_GL_BASE_MEMORY, "Could not copy GL Buffer");
-    return FALSE;
-  }
-
   if (!gst_memory_map ((GstMemory *) src, &sinfo, GST_MAP_READ)) {
     GST_CAT_WARNING (GST_CAT_GL_BASE_MEMORY,
         "could not read map source memory %p", src);
@@ -659,11 +663,9 @@
     GstGLAllocationParams * dest)
 {
   gst_gl_allocation_params_init (dest, src->struct_size, src->alloc_flags,
-      src->copy, src->free, NULL, src->alloc_size, NULL, src->wrapped_data,
-      src->gl_handle, src->user_data, src->notify);
+      src->copy, src->free, src->context, src->alloc_size, NULL,
+      src->wrapped_data, src->gl_handle, src->user_data, src->notify);
 
-  if (src->context)
-    dest->context = gst_object_ref (src->context);
   if (src->alloc_params)
     dest->alloc_params = gst_allocation_params_copy (src->alloc_params);
 }
diff --git a/gst-libs/gst/gl/gstglbasememory.h b/gst-libs/gst/gl/gstglbasememory.h
index ad9f68f..adea5ba 100644
--- a/gst-libs/gst/gl/gstglbasememory.h
+++ b/gst-libs/gst/gl/gstglbasememory.h
@@ -90,6 +90,8 @@
 
   gpointer              data;
 
+  GstGLQuery           *query;
+
   /* <private> */
   gsize                 alloc_size;     /* because maxsize is used for mapping */
   gpointer              alloc_data;
diff --git a/gst-libs/gst/gl/gstglbufferpool.c b/gst-libs/gst/gl/gstglbufferpool.c
index 16b5c9e..c419ad5 100644
--- a/gst-libs/gst/gl/gstglbufferpool.c
+++ b/gst-libs/gst/gl/gstglbufferpool.c
@@ -271,11 +271,8 @@
   GstGLMemoryAllocator *alloc;
   GstGLBufferPool *glpool = GST_GL_BUFFER_POOL_CAST (pool);
   GstGLBufferPoolPrivate *priv = glpool->priv;
-  GstVideoInfo *info;
   GstBuffer *buf;
 
-  info = priv->gl_params->v_info;
-
   if (!(buf = gst_buffer_new ())) {
     goto no_buffer;
   }
@@ -283,7 +280,8 @@
   if (priv->want_eglimage) {
     /* alloc and append memories, also add video_meta and
      * texture_upload_meta */
-    if (!gst_egl_image_memory_setup_buffer (glpool->context, info, buf))
+    if (!gst_egl_image_memory_setup_buffer (glpool->context,
+            priv->gl_params->v_info, buf))
       goto egl_image_mem_create_failed;
 
     *buffer = buf;
diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c
index ae0557a..afb6aff 100644
--- a/gst-libs/gst/gl/gstglcolorconvert.c
+++ b/gst-libs/gst/gl/gstglcolorconvert.c
@@ -127,7 +127,9 @@
     "uniform vec2 tex_scale1;\n" \
     "uniform vec2 tex_scale2;\n" \
     "uniform float width;\n"     \
-    "uniform float height;\n"
+    "uniform float height;\n"    \
+    "uniform float poffset_x;\n" \
+    "uniform float poffset_y;\n"
 
 #define MAX_FUNCTIONS 4
 
@@ -246,10 +248,14 @@
      * @chroma_sampling.  The result is the average of all the values in the
      * block computed with a rolling average.
      */
-    "vec2 size = vec2(width, height);\n"
-    "vec2 pos = texcoord * size;\n"
+    "vec2 unnormalization;\n"
+    "if (texcoord.x == v_texcoord.x) {\n"
+    "  unnormalization = vec2(width, height);\n"
+    "} else {\n"
+    "  unnormalization = vec2 (1.0);\n"
+    "}\n"
      /* scale for chroma size */
-    "vec2 chroma_pos = texcoord * chroma_sampling * size;\n"
+    "vec2 chroma_pos = texcoord * chroma_sampling * unnormalization;\n"
      /* offset chroma to the center of the first texel in the block */
     "chroma_pos -= clamp(chroma_sampling * 0.5 - 0.5, vec2(0.0), chroma_sampling);\n"
     "if (chroma_pos.x < width && chroma_pos.y < height) {\n"
@@ -258,13 +264,12 @@
     "    for (int j = 0; j < int(chroma_sampling.y); j++) {\n"
     "      int n = (i+1)*(j+1);\n"
     "      delta.y = float(j);\n"
-    "      vec4 sample = texture2D(tex, (chroma_pos + delta) / size).%c%c%c%c;\n"
+    "      vec4 sample = texture2D(tex, (chroma_pos + delta) / unnormalization).%c%c%c%c;\n"
            /* rolling average */
     "      uv_texel = (float(n-1) * uv_texel + sample) / float(n);\n"
     "    }\n"
     "  }\n"
     "}\n"
-
     "yuv.x = rgb_to_yuv (texel.rgb, offset, coeff1, coeff2, coeff3).x;\n"
     "yuv.yz = rgb_to_yuv (uv_texel.rgb, offset, coeff1, coeff2, coeff3).yz;\n"
     "gl_FragData[0] = vec4(yuv.x, 0.0, 0.0, 1.0);\n"
@@ -316,10 +321,11 @@
     "vec4 rgba, uv_texel;\n"
     "vec3 yuv;\n"
     /* FIXME: should get the sampling right... */
-    "float dx1 = -1.0 / width;\n"
+    "float dx1 = -poffset_x;\n"
     "float dx2 = 0.0;\n"
     "yuv.x = texture2D(Ytex, texcoord * tex_scale0).%c;\n"
-    "float inorder = mod (texcoord.x * width, 2.0);\n"
+    /* v_texcoord are normalized, texcoord may not be e.g. rectangle textures */
+    "float inorder = mod (v_texcoord.x * width, 2.0);\n"
     "if (inorder < 1.0) {\n"
     "  dx2 = -dx1;\n"
     "  dx1 = 0.0;\n"
@@ -340,9 +346,10 @@
     "vec4 texel1, texel2;\n"
     "vec3 yuv, yuv1, yuv2;\n"
     "float fx, dx, fy;\n"
-    "float inorder = mod (texcoord.x * width, 2.0);\n"
+    /* v_texcoord are normalized, texcoord may not be e.g. rectangle textures */
+    "float inorder = mod (v_texcoord.x * width, 2.0);\n"
     "fx = texcoord.x;\n"
-    "dx = 1.0 / width;\n"
+    "dx = poffset_x;\n"
     "if (inorder > 1.0) {\n"
     "  dx = -dx;\n"
     "}\n"
@@ -414,6 +421,12 @@
   GLuint vbo_indices;
   GLuint attr_position;
   GLuint attr_texture;
+
+  GstCaps *in_caps;
+  GstCaps *out_caps;
+
+  GstBufferPool *pool;
+  gboolean pool_started;
 };
 
 GST_DEBUG_CATEGORY_STATIC (gst_gl_color_convert_debug);
@@ -543,6 +556,15 @@
     convert->shader = NULL;
   }
 
+  if (convert->priv->pool) {
+    convert->priv->pool_started = FALSE;
+
+    gst_object_unref (convert->priv->pool);
+    convert->priv->pool = NULL;
+  }
+  gst_caps_replace (&convert->priv->in_caps, NULL);
+  gst_caps_replace (&convert->priv->out_caps, NULL);
+
   if (convert->context) {
     gst_gl_context_thread_add (convert->context,
         (GstGLContextThreadFunc) _reset_gl, convert);
@@ -659,9 +681,24 @@
       && to_target != GST_GL_TEXTURE_TARGET_RECTANGLE)
     return FALSE;
 
+  {
+    guint yuv_gray_flags, in_flags, out_flags;
+
+    in_flags = GST_VIDEO_FORMAT_INFO_FLAGS (in_info.finfo);
+    out_flags = GST_VIDEO_FORMAT_INFO_FLAGS (out_info.finfo);
+    yuv_gray_flags = GST_VIDEO_FORMAT_FLAG_YUV | GST_VIDEO_FORMAT_FLAG_GRAY;
+
+    /* GRAY/YUV -> GRAY/YUV is not supported for non-passthrough */
+    if (!passthrough && (in_flags & yuv_gray_flags) != 0
+        && (out_flags & yuv_gray_flags) != 0)
+      return FALSE;
+  }
+
   gst_gl_color_convert_reset (convert);
   convert->in_info = in_info;
   convert->out_info = out_info;
+  gst_caps_replace (&convert->priv->in_caps, in_caps);
+  gst_caps_replace (&convert->priv->out_caps, out_caps);
   convert->priv->from_texture_target = from_target;
   convert->priv->to_texture_target = to_target;
   convert->initted = FALSE;
@@ -701,69 +738,184 @@
   return ret;
 }
 
-static guint
-_get_target_bitmask_from_g_value (const GValue * targets)
+gboolean
+gst_gl_color_convert_decide_allocation (GstGLColorConvert * convert,
+    GstQuery * query)
 {
-  guint new_targets = 0;
+  GstBufferPool *pool = NULL;
+  GstStructure *config;
+  GstCaps *caps;
+  guint min, max, size, n, i;
+  gboolean update_pool;
+  GstGLVideoAllocationParams *params;
+  GstVideoInfo vinfo;
 
-  if (targets == NULL) {
-    new_targets = 1 << GST_GL_TEXTURE_TARGET_2D;
-  } else if (G_TYPE_CHECK_VALUE_TYPE (targets, G_TYPE_STRING)) {
-    GstGLTextureTarget target;
-    const gchar *str;
+  gst_query_parse_allocation (query, &caps, NULL);
+  if (!caps)
+    return FALSE;
 
-    str = g_value_get_string (targets);
-    target = gst_gl_texture_target_from_string (str);
+  gst_video_info_from_caps (&vinfo, caps);
 
-    if (target)
-      new_targets |= 1 << target;
-  } else if (G_TYPE_CHECK_VALUE_TYPE (targets, GST_TYPE_LIST)) {
-    gint j, m;
+  n = gst_query_get_n_allocation_pools (query);
+  if (n > 0) {
+    update_pool = TRUE;
+    for (i = 0; i < n; i++) {
+      gst_query_parse_nth_allocation_pool (query, i, &pool, &size, &min, &max);
 
-    m = gst_value_list_get_size (targets);
-    for (j = 0; j < m; j++) {
-      const GValue *val = gst_value_list_get_value (targets, j);
-      GstGLTextureTarget target;
-      const gchar *str;
-
-      str = g_value_get_string (val);
-      target = gst_gl_texture_target_from_string (str);
-      if (target)
-        new_targets |= 1 << target;
+      if (!pool || !GST_IS_GL_BUFFER_POOL (pool)) {
+        if (pool)
+          gst_object_unref (pool);
+        pool = NULL;
+      }
     }
   }
 
-  return new_targets;
+  if (!pool) {
+    GstVideoInfo vinfo;
+
+    gst_video_info_init (&vinfo);
+    size = vinfo.size;
+    min = max = 0;
+    update_pool = FALSE;
+  }
+
+  if (!pool)
+    pool = gst_gl_buffer_pool_new (convert->context);
+
+  config = gst_buffer_pool_get_config (pool);
+
+  gst_buffer_pool_config_set_params (config, caps, size, min, max);
+  gst_buffer_pool_config_add_option (config, GST_BUFFER_POOL_OPTION_VIDEO_META);
+  if (gst_query_find_allocation_meta (query, GST_GL_SYNC_META_API_TYPE, NULL))
+    gst_buffer_pool_config_add_option (config,
+        GST_BUFFER_POOL_OPTION_GL_SYNC_META);
+
+  params = gst_gl_video_allocation_params_new (convert->context, NULL, &vinfo,
+      0, NULL, convert->priv->to_texture_target);
+  gst_buffer_pool_config_set_gl_allocation_params (config,
+      (GstGLAllocationParams *) params);
+  gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
+
+  if (!gst_buffer_pool_set_config (pool, config))
+    GST_WARNING_OBJECT (convert, "Failed to set buffer pool config");
+
+  if (update_pool)
+    gst_query_set_nth_allocation_pool (query, 0, pool, size, min, max);
+  else
+    gst_query_add_allocation_pool (query, pool, size, min, max);
+
+  if (convert->priv->pool) {
+    gst_object_unref (convert->priv->pool);
+    convert->priv->pool_started = FALSE;
+  }
+  convert->priv->pool = pool;
+
+  return TRUE;
+}
+
+static void
+_init_value_string_list (GValue * list, ...)
+{
+  GValue item = G_VALUE_INIT;
+  gchar *str;
+  va_list args;
+
+  g_value_init (list, GST_TYPE_LIST);
+
+  va_start (args, list);
+  while ((str = va_arg (args, gchar *))) {
+    g_value_init (&item, G_TYPE_STRING);
+    g_value_set_string (&item, str);
+
+    gst_value_list_append_value (list, &item);
+    g_value_unset (&item);
+  }
+  va_end (args);
 }
 
 /* copies the given caps */
 static GstCaps *
-gst_gl_color_convert_caps_remove_format_info (GstCaps * caps)
+gst_gl_color_convert_caps_transform_format_info (GstCaps * caps)
 {
   GstStructure *st;
   GstCapsFeatures *f;
   gint i, n;
   GstCaps *res;
+  GValue rgb_formats = G_VALUE_INIT;
+
+  _init_value_string_list (&rgb_formats, "RGBA", "ARGB", "BGRA", "ABGR", "RGBx",
+      "xRGB", "BGRx", "xBGR", "RGB", "BGR", NULL);
 
   res = gst_caps_new_empty ();
 
   n = gst_caps_get_size (caps);
   for (i = 0; i < n; i++) {
+    const GValue *format;
+
     st = gst_caps_get_structure (caps, i);
     f = gst_caps_get_features (caps, i);
 
-    /* If this is already expressed by the existing caps
-     * skip this structure */
-    if (i > 0 && gst_caps_is_subset_structure_full (res, st, f))
-      continue;
-
+    format = gst_structure_get_value (st, "format");
     st = gst_structure_copy (st);
-    gst_structure_remove_fields (st, "format", "colorimetry", "chroma-site",
+    if (GST_VALUE_HOLDS_LIST (format)) {
+      gboolean have_rgb_formats = FALSE;
+      GValue passthrough_formats = G_VALUE_INIT;
+      gint j, len;
+
+      g_value_init (&passthrough_formats, GST_TYPE_LIST);
+      len = gst_value_list_get_size (format);
+      for (j = 0; j < len; j++) {
+        const GValue *val;
+
+        val = gst_value_list_get_value (format, j);
+        if (G_VALUE_HOLDS_STRING (val)) {
+          const gchar *format_str = g_value_get_string (val);
+          GstVideoFormat v_format = gst_video_format_from_string (format_str);
+          const GstVideoFormatInfo *t_info =
+              gst_video_format_get_info (v_format);
+          if (GST_VIDEO_FORMAT_INFO_FLAGS (t_info) & (GST_VIDEO_FORMAT_FLAG_YUV
+                  | GST_VIDEO_FORMAT_FLAG_GRAY)) {
+            gst_value_list_append_value (&passthrough_formats, val);
+          } else if (GST_VIDEO_FORMAT_INFO_FLAGS (t_info) &
+              GST_VIDEO_FORMAT_FLAG_RGB) {
+            have_rgb_formats = TRUE;
+            break;
+          }
+        }
+      }
+      if (have_rgb_formats) {
+        gst_structure_remove_fields (st, "format", NULL);
+      } else {
+        /* add passthrough structure, then the rgb conversion structure */
+        gst_structure_set_value (st, "format", &passthrough_formats);
+        gst_caps_append_structure_full (res, gst_structure_copy (st),
+            gst_caps_features_copy (f));
+        gst_structure_set_value (st, "format", &rgb_formats);
+      }
+      g_value_unset (&passthrough_formats);
+    } else if (G_VALUE_HOLDS_STRING (format)) {
+      const gchar *format_str = g_value_get_string (format);
+      GstVideoFormat v_format = gst_video_format_from_string (format_str);
+      const GstVideoFormatInfo *t_info = gst_video_format_get_info (v_format);
+      if (GST_VIDEO_FORMAT_INFO_FLAGS (t_info) & (GST_VIDEO_FORMAT_FLAG_YUV |
+              GST_VIDEO_FORMAT_FLAG_GRAY)) {
+        /* add passthrough structure, then the rgb conversion structure */
+        gst_structure_set_value (st, "format", format);
+        gst_caps_append_structure_full (res, gst_structure_copy (st),
+            gst_caps_features_copy (f));
+        gst_structure_set_value (st, "format", &rgb_formats);
+      } else {                  /* RGB */
+        gst_structure_remove_fields (st, "format", NULL);
+      }
+    }
+    gst_structure_remove_fields (st, "colorimetry", "chroma-site",
         "texture-target", NULL);
 
     gst_caps_append_structure_full (res, st, gst_caps_features_copy (f));
   }
 
+  g_value_unset (&rgb_formats);
+
   return res;
 }
 
@@ -771,94 +923,253 @@
 gst_gl_color_convert_transform_caps (GstGLContext * convert,
     GstPadDirection direction, GstCaps * caps, GstCaps * filter)
 {
-  GstCaps *templ, *result;
-
-  templ = gst_caps_from_string (GST_GL_COLOR_CONVERT_VIDEO_CAPS);
-
-  caps = gst_gl_color_convert_caps_remove_format_info (caps);
-
-  result = gst_caps_intersect (caps, templ);
-  gst_caps_unref (caps);
-  gst_caps_unref (templ);
+  caps = gst_gl_color_convert_caps_transform_format_info (caps);
 
   if (filter) {
     GstCaps *tmp;
 
-    tmp = gst_caps_intersect_full (filter, result, GST_CAPS_INTERSECT_FIRST);
-    gst_caps_unref (result);
-    result = tmp;
+    tmp = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
+    gst_caps_unref (caps);
+    caps = tmp;
   }
 
-  return result;
+  return caps;
+}
+
+/* fixation from videoconvert */
+#define SCORE_FORMAT_CHANGE             1
+#define SCORE_DEPTH_CHANGE              1
+#define SCORE_ALPHA_CHANGE              1
+#define SCORE_CHROMA_W_CHANGE           1
+#define SCORE_CHROMA_H_CHANGE           1
+#define SCORE_PALETTE_CHANGE            1
+
+#define SCORE_COLORSPACE_LOSS           2       /* RGB <-> YUV */
+#define SCORE_DEPTH_LOSS                4       /* change bit depth */
+#define SCORE_ALPHA_LOSS                8       /* lose the alpha channel */
+#define SCORE_CHROMA_W_LOSS             16      /* vertical subsample */
+#define SCORE_CHROMA_H_LOSS             32      /* horizontal subsample */
+#define SCORE_PALETTE_LOSS              64      /* convert to palette format */
+#define SCORE_COLOR_LOSS                128     /* convert to GRAY */
+
+#define COLORSPACE_MASK (GST_VIDEO_FORMAT_FLAG_YUV | \
+                         GST_VIDEO_FORMAT_FLAG_RGB | GST_VIDEO_FORMAT_FLAG_GRAY)
+#define ALPHA_MASK      (GST_VIDEO_FORMAT_FLAG_ALPHA)
+#define PALETTE_MASK    (GST_VIDEO_FORMAT_FLAG_PALETTE)
+
+static GstGLTextureTarget
+_texture_target_demask (guint target_mask)
+{
+  if (target_mask & (1 << GST_GL_TEXTURE_TARGET_2D)) {
+    return GST_GL_TEXTURE_TARGET_2D;
+  }
+  if (target_mask & (1 << GST_GL_TEXTURE_TARGET_RECTANGLE)) {
+    return GST_GL_TEXTURE_TARGET_RECTANGLE;
+  }
+  if (target_mask & (1 << GST_GL_TEXTURE_TARGET_EXTERNAL_OES)) {
+    return GST_GL_TEXTURE_TARGET_EXTERNAL_OES;
+  }
+
+  return 0;
+}
+
+/* calculate how much loss a conversion would be */
+static void
+score_format_target (const GstVideoFormatInfo * in_info, guint targets_mask,
+    GstVideoFormat v_format, guint other_targets_mask, gint * min_loss,
+    const GstVideoFormatInfo ** out_info, GstGLTextureTarget * result)
+{
+  const GstVideoFormatInfo *t_info;
+  GstVideoFormatFlags in_flags, t_flags;
+  gint loss;
+
+  t_info = gst_video_format_get_info (v_format);
+  if (!t_info)
+    return;
+
+  /* accept input format immediately without loss */
+  if (in_info == t_info && (targets_mask & other_targets_mask) != 0) {
+    *min_loss = 0;
+    *out_info = t_info;
+    *result = _texture_target_demask (targets_mask & other_targets_mask);
+    return;
+  }
+
+  /* can only passthrough external-oes textures */
+  other_targets_mask &= ~(1 << GST_GL_TEXTURE_TARGET_EXTERNAL_OES);
+  if (other_targets_mask == 0)
+    return;
+  /* try to keep the same target */
+  if (targets_mask & other_targets_mask)
+    other_targets_mask = targets_mask & other_targets_mask;
+
+  loss = SCORE_FORMAT_CHANGE;
+
+  in_flags = GST_VIDEO_FORMAT_INFO_FLAGS (in_info);
+  in_flags &= ~GST_VIDEO_FORMAT_FLAG_LE;
+  in_flags &= ~GST_VIDEO_FORMAT_FLAG_COMPLEX;
+  in_flags &= ~GST_VIDEO_FORMAT_FLAG_UNPACK;
+
+  t_flags = GST_VIDEO_FORMAT_INFO_FLAGS (t_info);
+  t_flags &= ~GST_VIDEO_FORMAT_FLAG_LE;
+  t_flags &= ~GST_VIDEO_FORMAT_FLAG_COMPLEX;
+  t_flags &= ~GST_VIDEO_FORMAT_FLAG_UNPACK;
+
+  /* GRAY/YUV -> GRAY/YUV is not supported */
+  if ((in_flags & (GST_VIDEO_FORMAT_FLAG_YUV | GST_VIDEO_FORMAT_FLAG_GRAY)) != 0
+      && (t_flags & (GST_VIDEO_FORMAT_FLAG_YUV | GST_VIDEO_FORMAT_FLAG_GRAY)) !=
+      0)
+    return;
+
+  if ((t_flags & PALETTE_MASK) != (in_flags & PALETTE_MASK)) {
+    loss += SCORE_PALETTE_CHANGE;
+    if (t_flags & PALETTE_MASK)
+      loss += SCORE_PALETTE_LOSS;
+  }
+
+  if ((t_flags & COLORSPACE_MASK) != (in_flags & COLORSPACE_MASK)) {
+    loss += SCORE_COLORSPACE_LOSS;
+    if (t_flags & GST_VIDEO_FORMAT_FLAG_GRAY)
+      loss += SCORE_COLOR_LOSS;
+  }
+
+  if ((t_flags & ALPHA_MASK) != (in_flags & ALPHA_MASK)) {
+    loss += SCORE_ALPHA_CHANGE;
+    if (in_flags & ALPHA_MASK)
+      loss += SCORE_ALPHA_LOSS;
+  }
+
+  if ((in_info->h_sub[1]) != (t_info->h_sub[1])) {
+    loss += SCORE_CHROMA_H_CHANGE;
+    if ((in_info->h_sub[1]) < (t_info->h_sub[1]))
+      loss += SCORE_CHROMA_H_LOSS;
+  }
+  if ((in_info->w_sub[1]) != (t_info->w_sub[1])) {
+    loss += SCORE_CHROMA_W_CHANGE;
+    if ((in_info->w_sub[1]) < (t_info->w_sub[1]))
+      loss += SCORE_CHROMA_W_LOSS;
+  }
+
+  if ((in_info->bits) != (t_info->bits)) {
+    loss += SCORE_DEPTH_CHANGE;
+    if ((in_info->bits) > (t_info->bits))
+      loss += SCORE_DEPTH_LOSS;
+  }
+
+  if (loss < *min_loss) {
+    GstGLTextureTarget target = _texture_target_demask (other_targets_mask);
+
+    if (target != 0) {
+      *out_info = t_info;
+      *min_loss = loss;
+      *result = target;
+    }
+  }
+}
+
+static void
+gst_gl_color_convert_fixate_format_target (GstCaps * caps, GstCaps * result)
+{
+  GstStructure *ins, *outs;
+  const gchar *in_format;
+  const GstVideoFormatInfo *in_info, *out_info = NULL;
+  const GValue *targets;
+  guint targets_mask = 0;
+  GstGLTextureTarget target;
+  gint min_loss = G_MAXINT;
+  guint i, capslen;
+
+  ins = gst_caps_get_structure (caps, 0);
+  in_format = gst_structure_get_string (ins, "format");
+  if (!in_format)
+    return;
+  targets = gst_structure_get_value (ins, "texture-target");
+  targets_mask = gst_gl_value_get_texture_target_mask (targets);
+  if (!targets_mask)
+    return;
+
+  in_info =
+      gst_video_format_get_info (gst_video_format_from_string (in_format));
+  if (!in_info)
+    return;
+
+  outs = gst_caps_get_structure (result, 0);
+
+  capslen = gst_caps_get_size (result);
+  for (i = 0; i < capslen; i++) {
+    GstStructure *tests;
+    const GValue *format;
+    const GValue *other_targets;
+    guint other_targets_mask = 0;
+
+    tests = gst_caps_get_structure (result, i);
+
+    format = gst_structure_get_value (tests, "format");
+    other_targets = gst_structure_get_value (tests, "texture-target");
+    /* should not happen */
+    if (format == NULL || other_targets == NULL)
+      continue;
+
+    other_targets_mask = gst_gl_value_get_texture_target_mask (other_targets);
+
+    if (GST_VALUE_HOLDS_LIST (format)) {
+      gint j, len;
+
+      len = gst_value_list_get_size (format);
+      for (j = 0; j < len; j++) {
+        const GValue *val;
+
+        val = gst_value_list_get_value (format, j);
+        if (G_VALUE_HOLDS_STRING (val)) {
+          const gchar *format_str = g_value_get_string (val);
+          GstVideoFormat v_format = gst_video_format_from_string (format_str);
+          score_format_target (in_info, targets_mask, v_format,
+              other_targets_mask, &min_loss, &out_info, &target);
+          if (min_loss == 0)
+            break;
+        }
+      }
+    } else if (G_VALUE_HOLDS_STRING (format)) {
+      const gchar *format_str = g_value_get_string (format);
+      GstVideoFormat v_format = gst_video_format_from_string (format_str);
+      score_format_target (in_info, targets_mask, v_format, other_targets_mask,
+          &min_loss, &out_info, &target);
+    }
+  }
+  if (out_info)
+    gst_structure_set (outs, "format", G_TYPE_STRING,
+        GST_VIDEO_FORMAT_INFO_NAME (out_info), NULL);
+  if (target)
+    gst_structure_set (outs, "texture-target", G_TYPE_STRING,
+        gst_gl_texture_target_to_string (target), NULL);
 }
 
 GstCaps *
 gst_gl_color_convert_fixate_caps (GstGLContext * convert,
     GstPadDirection direction, GstCaps * caps, GstCaps * other)
 {
-  GValue item = G_VALUE_INIT;
-  const GValue *targets, *other_targets;
-  guint targets_mask = 0, other_targets_mask = 0, result_mask;
-  GstVideoInfo info, other_info;
-  GstStructure *s, *s_other;
+  GstCaps *result;
 
-  other = gst_caps_make_writable (other);
-  s = gst_caps_get_structure (caps, 0);
-  s_other = gst_caps_get_structure (other, 0);
-
-  targets = gst_structure_get_value (s, "texture-target");
-  other_targets = gst_structure_get_value (s_other, "texture-target");
-
-  targets_mask = _get_target_bitmask_from_g_value (targets);
-  other_targets_mask = _get_target_bitmask_from_g_value (other_targets);
-
-  /* XXX: attempt to fixate the format/colorimetry/etc */
-  other = gst_caps_fixate (other);
-
-  result_mask = targets_mask & other_targets_mask;
-  if (result_mask == 0) {
-    /* nothing we can do here */
-    return other;
+  result = gst_caps_intersect (other, caps);
+  if (gst_caps_is_empty (result)) {
+    gst_caps_unref (result);
+    result = other;
+  } else {
+    gst_caps_unref (other);
   }
 
-  caps = gst_caps_copy (caps);
-  caps = gst_caps_fixate (caps);
+  result = gst_caps_make_writable (result);
+  gst_gl_color_convert_fixate_format_target (caps, result);
 
-  gst_video_info_from_caps (&info, caps);
-  gst_video_info_from_caps (&other_info, other);
+  result = gst_caps_fixate (result);
 
-  if (!_gst_gl_color_convert_can_passthrough_info (&info, &other_info)) {
-    if (direction == GST_PAD_SINK) {
-      /* this effectively limits us to 2D | RECTANGLE for case where we
-       * have to convert */
-      result_mask &=
-          (1 << GST_GL_TEXTURE_TARGET_2D | 1 <<
-          GST_GL_TEXTURE_TARGET_RECTANGLE);
-    } else {
-      /* if the src caps has 2D support we can 'convert' to anything */
-      if (targets_mask & (1 << GST_GL_TEXTURE_TARGET_2D | 1 <<
-              GST_GL_TEXTURE_TARGET_RECTANGLE))
-        result_mask = -1;
-      else
-        result_mask = other_targets_mask;
+  if (direction == GST_PAD_SINK) {
+    if (gst_caps_is_subset (caps, result)) {
+      gst_caps_replace (&result, caps);
     }
   }
 
-  g_value_init (&item, G_TYPE_STRING);
-  if (result_mask & (1 << GST_GL_TEXTURE_TARGET_2D)) {
-    g_value_set_static_string (&item, GST_GL_TEXTURE_TARGET_2D_STR);
-  } else if (result_mask & (1 << GST_GL_TEXTURE_TARGET_RECTANGLE)) {
-    g_value_set_static_string (&item, GST_GL_TEXTURE_TARGET_RECTANGLE_STR);
-  } else if (result_mask & (1 << GST_GL_TEXTURE_TARGET_EXTERNAL_OES)) {
-    g_value_set_static_string (&item, GST_GL_TEXTURE_TARGET_EXTERNAL_OES_STR);
-  }
-
-  gst_structure_set_value (s_other, "texture-target", &item);
-
-  g_value_unset (&item);
-  gst_caps_unref (caps);
-
-  return other;
+  return result;
 }
 
 /**
@@ -1804,6 +2115,16 @@
   gst_gl_shader_set_uniform_1f (convert->shader, "height",
       GST_VIDEO_INFO_HEIGHT (&convert->in_info));
 
+  if (convert->priv->from_texture_target == GST_GL_TEXTURE_TARGET_RECTANGLE) {
+    gst_gl_shader_set_uniform_1f (convert->shader, "poffset_x", 1.);
+    gst_gl_shader_set_uniform_1f (convert->shader, "poffset_y", 1.);
+  } else {
+    gst_gl_shader_set_uniform_1f (convert->shader, "poffset_x",
+        1. / (gfloat) GST_VIDEO_INFO_WIDTH (&convert->in_info));
+    gst_gl_shader_set_uniform_1f (convert->shader, "poffset_y",
+        1. / (gfloat) GST_VIDEO_INFO_HEIGHT (&convert->in_info));
+  }
+
   if (info->chroma_sampling[0] > 0.0f && info->chroma_sampling[1] > 0.0f) {
     gst_gl_shader_set_uniform_2fv (convert->shader, "chroma_sampling", 1,
         info->chroma_sampling);
@@ -2118,9 +2439,7 @@
   gint views, v;
   GstVideoOverlayCompositionMeta *composition_meta;
   GstGLSyncMeta *sync_meta;
-  GstGLVideoAllocationParams *params;
-  GstGLMemoryAllocator *mem_allocator;
-  GstAllocator *allocator;
+  GstFlowReturn ret;
 
   convert->outbuf = NULL;
 
@@ -2133,22 +2452,44 @@
   if (sync_meta)
     gst_gl_sync_meta_wait (sync_meta, convert->context);
 
-  convert->outbuf = gst_buffer_new ();
+  if (!convert->priv->pool) {
+    gboolean ret;
+    /* No pool! */
+    GstQuery *query = gst_query_new_allocation (convert->priv->out_caps, TRUE);
+    ret = gst_gl_color_convert_decide_allocation (convert, query);
+    gst_query_unref (query);
 
-  allocator = gst_allocator_find (GST_GL_MEMORY_ALLOCATOR_NAME);
-  mem_allocator = GST_GL_MEMORY_ALLOCATOR (allocator);
-  params =
-      gst_gl_video_allocation_params_new (context, NULL, &convert->out_info, 0,
-      NULL, convert->priv->to_texture_target);
+    if (!ret) {
+      GST_ERROR_OBJECT (convert, "Failed to choose allocation parameters");
+      convert->priv->result = FALSE;
+      return;
+    }
 
-  if (!gst_gl_memory_setup_buffer (mem_allocator, convert->outbuf, params)) {
-    gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
-    gst_object_unref (allocator);
+    if (!convert->priv->pool) {
+      GST_ERROR_OBJECT (convert, "Failed to create a buffer pool");
+      convert->priv->result = FALSE;
+      return;
+    }
+  }
+
+  if (!convert->priv->pool_started) {
+    if (!gst_buffer_pool_set_active (convert->priv->pool, TRUE)) {
+      GST_ERROR_OBJECT (convert, "Failed to start buffer pool");
+      convert->priv->result = FALSE;
+      return;
+    }
+    convert->priv->pool_started = TRUE;
+  }
+
+  ret =
+      gst_buffer_pool_acquire_buffer (convert->priv->pool, &convert->outbuf,
+      NULL);
+  if (ret != GST_FLOW_OK) {
+    GST_ERROR_OBJECT (convert, "Failed to acquire buffer from pool: %s",
+        gst_flow_get_name (ret));
     convert->priv->result = FALSE;
     return;
   }
-  gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
-  gst_object_unref (allocator);
 
   if (GST_VIDEO_INFO_MULTIVIEW_MODE (in_info) ==
       GST_VIDEO_MULTIVIEW_MODE_SEPARATED)
diff --git a/gst-libs/gst/gl/gstglcolorconvert.h b/gst-libs/gst/gl/gstglcolorconvert.h
index f06bb5c..5980cfa 100644
--- a/gst-libs/gst/gl/gstglcolorconvert.h
+++ b/gst-libs/gst/gl/gstglcolorconvert.h
@@ -123,6 +123,8 @@
 gboolean    gst_gl_color_convert_set_caps    (GstGLColorConvert * convert,
                                               GstCaps           * in_caps,
                                               GstCaps           * out_caps);
+gboolean    gst_gl_color_convert_decide_allocation (GstGLColorConvert   * convert,
+                                                    GstQuery            * query);
 
 GstBuffer * gst_gl_color_convert_perform    (GstGLColorConvert * convert, GstBuffer * inbuf);
 
diff --git a/gst-libs/gst/gl/gstglcontext.c b/gst-libs/gst/gl/gstglcontext.c
index f84e78b..88526bd 100644
--- a/gst-libs/gst/gl/gstglcontext.c
+++ b/gst-libs/gst/gl/gstglcontext.c
@@ -67,9 +67,7 @@
 #include "eagl/gstglcontext_eagl.h"
 #endif
 
-extern void GSTGLAPI _gst_gl_debug_callback (GLenum source, GLenum type,
-    GLuint id, GLenum severity, GLsizei length, const gchar * message,
-    gpointer user_data);
+extern void _gst_gl_debug_enable (GstGLContext * context);
 
 static GPrivate current_context_key;
 
@@ -138,37 +136,55 @@
 #error "Add module loading support for GLES3"
 #endif
 
-/* Context sharedness es tracked by a unique id stored in each context object
- * in order track complex creation/deletion scenarios.  As a result, sharedness
- * can only be successfully validated between two GstGLContext's where one is
- * not a wrapped context.
+/* Context sharedness is tracked by a refcounted pointer stored in each context
+ * object to track complex creation/deletion scenarios.  As a result,
+ * sharedness can only be successfully validated between two GstGLContext's
+ * where one is not a wrapped context.
  *
  * As there is no API at the winsys level to tell whether two OpenGL contexts
  * can share GL resources, this is the next best thing.
+ *
+ * XXX: we may need a way to associate two wrapped GstGLContext's as being
+ * shared however I have not come across a use case that requries this yet.
  */
-static volatile guint sharegroup_idx;
-
-static guint
-_new_sharegroup_id (void)
+struct ContextShareGroup
 {
-  guint current, ret;
+  volatile int refcount;
+};
 
-  do {
-    current = g_atomic_int_get (&sharegroup_idx);
-    ret = current + 1;
+static struct ContextShareGroup *
+_context_share_group_new (void)
+{
+  struct ContextShareGroup *ret = g_new0 (struct ContextShareGroup, 1);
 
-    /* 0 is special */
-    if (ret == 0)
-      ret++;
-  } while (!g_atomic_int_compare_and_exchange (&sharegroup_idx, current, ret));
-
-  GST_TRACE ("generated new share group id %u", ret);
+  ret->refcount = 1;
 
   return ret;
 }
 
+static struct ContextShareGroup *
+_context_share_group_ref (struct ContextShareGroup *share)
+{
+  g_atomic_int_inc (&share->refcount);
+  return share;
+}
+
+static void
+_context_share_group_unref (struct ContextShareGroup *share)
+{
+  if (g_atomic_int_dec_and_test (&share->refcount))
+    g_free (share);
+}
+
+static gboolean
+_context_share_group_is_shared (struct ContextShareGroup *share)
+{
+  return g_atomic_int_get (&share->refcount) > 1;
+}
+
 #define GST_CAT_DEFAULT gst_gl_context_debug
 GST_DEBUG_CATEGORY (GST_CAT_DEFAULT);
+GST_DEBUG_CATEGORY_STATIC (gst_gl_debug);
 
 #define gst_gl_context_parent_class parent_class
 G_DEFINE_ABSTRACT_TYPE (GstGLContext, gst_gl_context, GST_TYPE_OBJECT);
@@ -194,7 +210,7 @@
   gboolean alive;
 
   GWeakRef other_context_ref;
-  guint sharegroup_id;
+  struct ContextShareGroup *sharegroup;
   GError **error;
 
   gint gl_major;
@@ -286,6 +302,7 @@
   if (g_once_init_enter (&_init)) {
     GST_DEBUG_CATEGORY_INIT (gst_gl_context_debug, "glcontext", 0,
         "glcontext element");
+    GST_DEBUG_CATEGORY_INIT (gst_gl_debug, "gldebug", 0, "OpenGL Debugging");
     g_once_init_leave (&_init, 1);
   }
 }
@@ -389,7 +406,7 @@
   context = (GstGLContext *) context_wrap;
 
   context->display = gst_object_ref (display);
-  context->priv->sharegroup_id = _new_sharegroup_id ();
+  context->priv->sharegroup = _context_share_group_new ();
   context_wrap->handle = handle;
   context_wrap->platform = context_type;
   context_wrap->available_apis = available_apis;
@@ -638,6 +655,9 @@
     gst_object_unref (context->window);
   }
 
+  if (context->priv->sharegroup)
+    _context_share_group_unref (context->priv->sharegroup);
+
   gst_object_unref (context->display);
 
   if (context->gl_vtable) {
@@ -887,8 +907,8 @@
   g_return_val_if_fail (GST_IS_GL_CONTEXT (other_context), FALSE);
 
   /* check if the contexts are descendants or the root nodes are the same */
-  return context->priv->sharegroup_id != 0
-      && context->priv->sharegroup_id == other_context->priv->sharegroup_id;
+  return context->priv->sharegroup != NULL
+      && context->priv->sharegroup == other_context->priv->sharegroup;
 }
 
 /**
@@ -929,9 +949,10 @@
     g_weak_ref_set (&context->priv->other_context_ref, other_context);
     context->priv->error = error;
     if (other_context == NULL)
-      context->priv->sharegroup_id = _new_sharegroup_id ();
+      context->priv->sharegroup = _context_share_group_new ();
     else
-      context->priv->sharegroup_id = other_context->priv->sharegroup_id;
+      context->priv->sharegroup =
+          _context_share_group_ref (other_context->priv->sharegroup);
 
     context->priv->gl_thread = g_thread_new ("gstglcontext",
         (GThreadFunc) gst_gl_context_create_thread, context);
@@ -1033,6 +1054,7 @@
 _unlock_create_thread (GstGLContext * context)
 {
   context->priv->created = TRUE;
+  GST_INFO_OBJECT (context, "gl thread running");
   g_cond_signal (&context->priv->create_cond);
   g_mutex_unlock (&context->priv->render_lock);
 }
@@ -1064,7 +1086,6 @@
 {
   GstGLContextClass *context_class;
   GstGLWindowClass *window_class;
-  GstGLFuncs *gl;
   GstGLAPI compiled_api, user_api, gl_api, display_api;
   gchar *api_string;
   gchar *compiled_api_s;
@@ -1100,7 +1121,6 @@
     }
   }
 
-  gl = context->gl_vtable;
   compiled_api = _compiled_api ();
   compiled_api_s = gst_gl_api_to_string (compiled_api);
 
@@ -1188,15 +1208,9 @@
 
   context->priv->alive = TRUE;
 
-  if (gl->DebugMessageCallback) {
 #if !defined(GST_DISABLE_GST_DEBUG)
-    GST_INFO_OBJECT (context, "Enabling GL context debugging");
-    /* enable them all */
-    gl->DebugMessageControl (GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, 0,
-        GL_TRUE);
-    gl->DebugMessageCallback (_gst_gl_debug_callback, context);
+  _gst_gl_debug_enable (context);
 #endif
-  }
 
   if (other_context) {
     GST_DEBUG_OBJECT (context, "Unreffing other_context %" GST_PTR_FORMAT,
@@ -1467,8 +1481,10 @@
   g_return_if_fail (GST_IS_GL_CONTEXT (context));
   g_return_if_fail (func != NULL);
 
-  if (GST_IS_GL_WRAPPED_CONTEXT (context)) {
+  if (GST_IS_GL_WRAPPED_CONTEXT (context))
     g_return_if_fail (context->priv->active_thread == g_thread_self ());
+
+  if (context->priv->active_thread == g_thread_self ()) {
     func (context, data);
     return;
   }
@@ -1589,6 +1605,23 @@
   return g_private_get (&current_context_key);
 }
 
+/**
+ * gst_gl_context_is_shared:
+ * @context: a #GstGLContext
+ *
+ * Returns: Whether the #GstGLContext has been shared with another #GstGLContext
+ *
+ * Since: 1.8
+ */
+gboolean
+gst_gl_context_is_shared (GstGLContext * context)
+{
+  g_return_val_if_fail (GST_IS_GL_CONTEXT (context), FALSE);
+  g_return_val_if_fail (context->priv->alive, FALSE);
+
+  return _context_share_group_is_shared (context->priv->sharegroup);
+}
+
 static GstGLAPI
 gst_gl_wrapped_context_get_gl_api (GstGLContext * context)
 {
diff --git a/gst-libs/gst/gl/gstglcontext.h b/gst-libs/gst/gl/gstglcontext.h
index 04cf3a5..64464aa 100644
--- a/gst-libs/gst/gl/gstglcontext.h
+++ b/gst-libs/gst/gl/gstglcontext.h
@@ -148,6 +148,8 @@
 guintptr      gst_gl_context_get_current_gl_context     (GstGLPlatform platform);
 GstGLAPI      gst_gl_context_get_current_gl_api         (GstGLPlatform platform, guint *major, guint *minor);
 
+gboolean      gst_gl_context_is_shared                  (GstGLContext * context);
+
 gboolean gst_gl_context_fill_info (GstGLContext * context, GError ** error);
 
 /* FIXME: remove */
diff --git a/gst-libs/gst/gl/gstglcontrolbindingproxy.c b/gst-libs/gst/gl/gstglcontrolbindingproxy.c
new file mode 100644
index 0000000..f34ddd8
--- /dev/null
+++ b/gst-libs/gst/gl/gstglcontrolbindingproxy.c
@@ -0,0 +1,155 @@
+/* 
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstglcontrolbindingproxy.h"
+
+G_DEFINE_TYPE (GstGLControlBindingProxy,
+    gst_gl_control_binding_proxy, GST_TYPE_CONTROL_BINDING);
+
+static void
+gst_gl_control_binding_proxy_init (GstGLControlBindingProxy * self)
+{
+}
+
+static gboolean
+gst_gl_control_binding_proxy_sync_values (GstControlBinding * binding,
+    GstObject * object, GstClockTime timestamp, GstClockTime last_sync)
+{
+  GstGLControlBindingProxy *self = (GstGLControlBindingProxy *)
+      binding;
+  GstControlBinding *ref_binding;
+  gboolean ret = TRUE;
+
+  ref_binding = gst_object_get_control_binding (self->ref_object,
+      self->property_name);
+
+  if (ref_binding) {
+    ret = gst_control_binding_sync_values (ref_binding, self->ref_object,
+        timestamp, last_sync);
+    gst_object_unref (ref_binding);
+  }
+
+  return ret;
+}
+
+static GValue *
+gst_gl_control_binding_proxy_get_value (GstControlBinding * binding,
+    GstClockTime timestamp)
+{
+  GstGLControlBindingProxy *self = (GstGLControlBindingProxy *)
+      binding;
+  GstControlBinding *ref_binding;
+  GValue *ret = NULL;
+
+  ref_binding = gst_object_get_control_binding (self->ref_object,
+      self->property_name);
+
+  if (ref_binding) {
+    ret = gst_control_binding_get_value (ref_binding, timestamp);
+    gst_object_unref (ref_binding);
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_gl_control_binding_proxy_get_value_array (GstControlBinding * binding,
+    GstClockTime timestamp, GstClockTime interval, guint n_values,
+    gpointer values)
+{
+  GstGLControlBindingProxy *self = (GstGLControlBindingProxy *)
+      binding;
+  GstControlBinding *ref_binding;
+  gboolean ret = FALSE;
+
+  ref_binding = gst_object_get_control_binding (self->ref_object,
+      self->property_name);
+
+  if (ref_binding) {
+    ret = gst_control_binding_get_value_array (ref_binding, timestamp,
+        interval, n_values, values);
+    gst_object_unref (ref_binding);
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_gl_control_binding_proxy_get_g_value_array (GstControlBinding *
+    binding, GstClockTime timestamp, GstClockTime interval, guint n_values,
+    GValue * values)
+{
+  GstGLControlBindingProxy *self = (GstGLControlBindingProxy *)
+      binding;
+  GstControlBinding *ref_binding;
+  gboolean ret = FALSE;
+
+  ref_binding = gst_object_get_control_binding (self->ref_object,
+      self->property_name);
+
+  if (ref_binding) {
+    ret = gst_control_binding_get_g_value_array (ref_binding, timestamp,
+        interval, n_values, values);
+    gst_object_unref (ref_binding);
+  }
+
+  return ret;
+}
+
+
+static void
+    gst_gl_control_binding_proxy_class_init
+    (GstGLControlBindingProxyClass * klass)
+{
+  GstControlBindingClass *cb_class = GST_CONTROL_BINDING_CLASS (klass);
+
+  cb_class->sync_values = gst_gl_control_binding_proxy_sync_values;
+  cb_class->get_value = gst_gl_control_binding_proxy_get_value;
+  cb_class->get_value_array = gst_gl_control_binding_proxy_get_value_array;
+  cb_class->get_g_value_array = gst_gl_control_binding_proxy_get_g_value_array;
+}
+
+GstControlBinding *
+gst_gl_control_binding_proxy_new (GstObject * object,
+    const gchar * property_name, GstObject * ref_object,
+    const gchar * ref_property_name)
+{
+  GstGLControlBindingProxy *self =
+      g_object_new (GST_TYPE_GL_CONTROL_BINDING_PROXY, "object", object,
+      "name", property_name, NULL);
+
+  self->ref_object = ref_object;
+  self->property_name = ref_property_name;
+
+  return (GstControlBinding *) self;
+}
+
+void
+gst_gl_object_add_control_binding_proxy (GstObject * object,
+    GstObject * ref_object, const gchar * prop)
+{
+  GstControlBinding *cb;
+
+  cb = gst_gl_control_binding_proxy_new (object, prop, ref_object, prop);
+  gst_object_add_control_binding (object, cb);
+}
diff --git a/gst-libs/gst/gl/gstglcontrolbindingproxy.h b/gst-libs/gst/gl/gstglcontrolbindingproxy.h
new file mode 100644
index 0000000..b3a9310
--- /dev/null
+++ b/gst-libs/gst/gl/gstglcontrolbindingproxy.h
@@ -0,0 +1,58 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_GL_PROXY_CONTROL_BINDING_H__
+#define __GST_GL_PROXY_CONTROL_BINDING_H__
+
+#include <gst/gl/gl.h>
+
+G_BEGIN_DECLS
+
+GType gst_gl_control_binding_proxy_get_type (void);
+#define GST_TYPE_GL_CONTROL_BINDING_PROXY  (gst_gl_control_binding_proxy_get_type())
+
+typedef struct _GstGLControlBindingProxy GstGLControlBindingProxy;
+typedef struct _GstGLControlBindingProxyClass GstGLControlBindingProxyClass;
+
+struct _GstGLControlBindingProxy
+{
+  GstControlBinding parent;
+
+  GstObject *ref_object;
+  const gchar *property_name;
+};
+
+struct _GstGLControlBindingProxyClass
+{
+  GstControlBindingClass parent_class;
+};
+
+GstControlBinding *     gst_gl_control_binding_proxy_new            (GstObject * object,
+                                                                     const gchar * property_name,
+                                                                     GstObject * ref_object,
+                                                                     const gchar * ref_property_name);
+
+void                    gst_gl_object_add_control_binding_proxy     (GstObject * object,
+                                                                     GstObject * ref_object,
+                                                                     const gchar * prop);
+
+G_END_DECLS
+
+#endif /* __GST_GL_PROXY_CONTROL_BINDING_H__ */
diff --git a/gst-libs/gst/gl/gstgldebug.c b/gst-libs/gst/gl/gstgldebug.c
index 77bfcd8..2b9a01f 100644
--- a/gst-libs/gst/gl/gstgldebug.c
+++ b/gst-libs/gst/gl/gstgldebug.c
@@ -25,15 +25,20 @@
 #include "gl.h"
 #include "gstgldebug.h"
 #include <glib/gprintf.h>
+#include <string.h>
 
+#define ASYNC_DEBUG_FILLED (1 << 0)
+#define ASYNC_DEBUG_FROZEN (1 << 1)
+
+/* compatibility defines */
 #ifndef GL_DEBUG_TYPE_ERROR
 #define GL_DEBUG_TYPE_ERROR 0x824C
 #endif
-#ifndef GL_DEBUG_TYPE_DEPRECATED_BEHAVIOUR
-#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOUR 0x824D
+#ifndef GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR
+#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
 #endif
-#ifndef GL_DEBUG_TYPE_UNDEFINED_BEHAVIOUR
-#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOUR 0x824E
+#ifndef GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR
+#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
 #endif
 #ifndef GL_DEBUG_TYPE_PORTABILITY
 #define GL_DEBUG_TYPE_PORTABILITY 0x824F
@@ -80,8 +85,11 @@
 #define GL_DEBUG_SOURCE_OTHER 0x824B
 #endif
 
-#if !defined(GST_DISABLE_GST_DEBUG)
 GST_DEBUG_CATEGORY_STATIC (gst_performance);
+#define GST_CAT_DEFAULT gst_gl_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+GST_DEBUG_CATEGORY_STATIC (default_debug);
+GST_DEBUG_CATEGORY_STATIC (gst_gl_marker_debug);
 
 static void
 _init_debug (void)
@@ -90,10 +98,88 @@
 
   if (g_once_init_enter (&_init)) {
     GST_DEBUG_CATEGORY_GET (gst_performance, "GST_PERFORMANCE");
+    GST_DEBUG_CATEGORY_GET (gst_gl_debug, "gldebug");
+    GST_DEBUG_CATEGORY_GET (default_debug, "default");
+    GST_DEBUG_CATEGORY_INIT (gst_gl_marker_debug, "gldebugmarker", 0,
+        "OpenGL Markers");
     g_once_init_leave (&_init, 1);
   }
 }
 
+static void
+_free_async_debug_data (GstGLAsyncDebug * ad)
+{
+  if (ad->debug_msg) {
+    g_free (ad->debug_msg);
+    ad->debug_msg = NULL;
+    if (ad->object)
+      g_object_unref (ad->object);
+    ad->object = NULL;
+    ad->state_flags &= ~ASYNC_DEBUG_FILLED;
+  }
+}
+
+void
+gst_gl_async_debug_init (GstGLAsyncDebug * ad)
+{
+  _init_debug ();
+
+  memset (ad, 0, sizeof (*ad));
+}
+
+void
+gst_gl_async_debug_unset (GstGLAsyncDebug * ad)
+{
+  gst_gl_async_debug_output_log_msg (ad);
+
+  _free_async_debug_data (ad);
+
+  if (ad->notify)
+    ad->notify (ad->user_data);
+}
+
+GstGLAsyncDebug *
+gst_gl_async_debug_new (void)
+{
+  return g_new0 (GstGLAsyncDebug, 1);
+}
+
+void
+gst_gl_async_debug_free (GstGLAsyncDebug * ad)
+{
+  gst_gl_async_debug_unset (ad);
+  g_free (ad);
+}
+
+/**
+ * gst_gl_async_debug_freeze:
+ * @ad: a #GstGLAsyncDebug
+ *
+ * freeze the debug output.  While frozen, any call to
+ * gst_gl_async_debug_output_log_msg() will not output any messages but
+ * subsequent calls to gst_gl_async_debug_store_log_msg() will overwrite previous
+ * messages.
+ */
+void
+gst_gl_async_debug_freeze (GstGLAsyncDebug * ad)
+{
+  ad->state_flags |= ASYNC_DEBUG_FROZEN;
+}
+
+/**
+ * gst_gl_async_debug_thaw:
+ * @ad: a #GstGLAsyncDebug
+ *
+ * unfreeze the debug output.  See gst_gl_async_debug_freeze() for what freezing means
+ */
+void
+gst_gl_async_debug_thaw (GstGLAsyncDebug * ad)
+{
+  ad->state_flags &= ~ASYNC_DEBUG_FROZEN;
+}
+
+#if !defined(GST_DISABLE_GST_DEBUG)
+
 static inline const gchar *
 _debug_severity_to_string (GLenum severity)
 {
@@ -138,9 +224,9 @@
   switch (type) {
     case GL_DEBUG_TYPE_ERROR:
       return "error";
-    case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOUR:
+    case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
       return "deprecated";
-    case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOUR:
+    case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
       return "undefined";
     case GL_DEBUG_TYPE_PORTABILITY:
       return "portability";
@@ -155,11 +241,7 @@
   }
 }
 
-/* silence the compiler... */
-void GSTGLAPI _gst_gl_debug_callback (GLenum source, GLenum type, GLuint id,
-    GLenum severity, GLsizei length, const gchar * message, gpointer user_data);
-
-void GSTGLAPI
+static void GSTGLAPI
 _gst_gl_debug_callback (GLenum source, GLenum type, GLuint id, GLenum severity,
     GLsizei length, const gchar * message, gpointer user_data)
 {
@@ -172,11 +254,11 @@
 
   switch (type) {
     case GL_DEBUG_TYPE_ERROR:
-    case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOUR:
+    case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR:
       GST_ERROR_OBJECT (context, "%s: GL %s from %s id:%u, %s", severity_str,
           type_str, source_str, id, message);
       break;
-    case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOUR:
+    case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR:
     case GL_DEBUG_TYPE_PORTABILITY:
       GST_FIXME_OBJECT (context, "%s: GL %s from %s id:%u, %s", severity_str,
           type_str, source_str, id, message);
@@ -192,6 +274,57 @@
   }
 }
 
+G_GNUC_INTERNAL void _gst_gl_debug_enable (GstGLContext * context);
+
+G_GNUC_INTERNAL void
+_gst_gl_debug_enable (GstGLContext * context)
+{
+  const GstGLFuncs *gl = context->gl_vtable;
+  GstDebugLevel level;
+  GLenum debug_types[8];
+  guint i, n = 0;
+
+  _init_debug ();
+
+  if (!gl->DebugMessageCallback) {
+    GST_CAT_INFO_OBJECT (gst_gl_context_debug, context,
+        "No debugging support available");
+    return;
+  }
+
+  level = gst_debug_category_get_threshold (gst_gl_debug);
+
+  if (level < GST_LEVEL_ERROR) {
+    GST_CAT_INFO_OBJECT (gst_gl_context_debug, context,
+        "Disabling GL context debugging (gldebug category debug level < error)");
+    return;
+  }
+
+  GST_CAT_INFO_OBJECT (gst_gl_context_debug, context,
+      "Enabling GL context debugging");
+
+  gl->DebugMessageCallback (_gst_gl_debug_callback, context);
+  if (level >= GST_LEVEL_DEBUG) {
+    /* enable them all */
+    gl->DebugMessageControl (GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, 0,
+        GL_TRUE);
+  } else {
+    if (level >= GST_LEVEL_FIXME) {
+      debug_types[n++] = GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR;
+      debug_types[n++] = GL_DEBUG_TYPE_PORTABILITY;
+    }
+    if (level >= GST_LEVEL_ERROR) {
+      debug_types[n++] = GL_DEBUG_TYPE_ERROR;
+      debug_types[n++] = GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR;
+    }
+    g_assert (n < G_N_ELEMENTS (debug_types));
+    for (i = 0; i < n; i++) {
+      gl->DebugMessageControl (GL_DONT_CARE, debug_types[i], GL_DONT_CARE,
+          0, 0, GL_TRUE);
+    }
+  }
+}
+
 void
 gst_gl_insert_debug_marker (GstGLContext * context, const gchar * format, ...)
 {
@@ -200,10 +333,22 @@
   gint len;
   va_list args;
 
+  _init_debug ();
+
+  /* are we enabled */
+  if (gst_debug_category_get_threshold (gst_gl_marker_debug) < GST_LEVEL_FIXME)
+    return;
+
   va_start (args, format);
-  len = g_vasprintf (&string, format, args);
+  len = gst_info_vasprintf (&string, format, args);
   va_end (args);
 
+  /* gst_info_vasprintf() returns -1 on error, the various debug marker
+   * functions take len=-1 to mean null terminated */
+  if (len < 0 || string == NULL)
+    /* no debug output */
+    return;
+
   if (gl->DebugMessageInsert)
     gl->DebugMessageInsert (GL_DEBUG_SOURCE_THIRD_PARTY, GL_DEBUG_TYPE_MARKER,
         0, GL_DEBUG_SEVERITY_LOW, (gsize) len, string);
@@ -214,4 +359,100 @@
 
   g_free (string);
 }
+
+/**
+ * gst_gl_async_debug_store_log_msg_valist:
+ * @ad: the #GstGLAsyncDebug to store the message in
+ * @cat: the #GstDebugCategory to output the message in
+ * @level: the #GstLevel
+ * @file: the file where the debug message originates from
+ * @function: the function where the debug message originates from
+ * @line: the line in @file where the debug message originates from
+ * @object: (allow-none): a #GObject to associate with the debug message
+ * @format: a printf style format string
+ * @varargs: the list of arguments for @format
+ *
+ * Stores a debug message for later output by gst_gl_async_debug_output_log_msg()
+ */
+void
+gst_gl_async_debug_store_log_msg_valist (GstGLAsyncDebug * ad,
+    GstDebugCategory * cat, GstDebugLevel level, const gchar * file,
+    const gchar * function, gint line, GObject * object, const gchar * format,
+    va_list varargs)
+{
+  gst_gl_async_debug_output_log_msg (ad);
+  _free_async_debug_data (ad);
+
+  if (G_UNLIKELY (level <= GST_LEVEL_MAX && level <= _gst_debug_min)) {
+    if (!cat)
+      cat = default_debug;
+
+    ad->cat = cat;
+    ad->level = level;
+    ad->file = file;
+    ad->function = function;
+    ad->line = line;
+    if (object)
+      ad->object = g_object_ref (object);
+    else
+      ad->object = NULL;
+
+    ad->debug_msg = gst_info_strdup_vprintf (format, varargs);
+    ad->state_flags |= ASYNC_DEBUG_FILLED;
+  }
+}
+
+/**
+ * gst_gl_async_debug_output_log_msg:
+ * @ad: the #GstGLAsyncDebug to store the message in
+ *
+ * Outputs a previously stored debug message.
+ */
+void
+gst_gl_async_debug_output_log_msg (GstGLAsyncDebug * ad)
+{
+  if ((ad->state_flags & ASYNC_DEBUG_FILLED) != 0
+      && (ad->state_flags & ASYNC_DEBUG_FROZEN) == 0) {
+    gchar *msg = NULL;
+
+    if (ad->callback)
+      msg = ad->callback (ad->user_data);
+
+    gst_debug_log (ad->cat, ad->level, ad->file, ad->function, ad->line,
+        ad->object, "%s %s", GST_STR_NULL (ad->debug_msg), msg ? msg : "");
+    g_free (msg);
+    _free_async_debug_data (ad);
+  }
+}
+
+/**
+ * gst_gl_async_debug_store_log_msg:
+ * @ad: the #GstGLAsyncDebug to store the message in
+ * @cat: the #GstDebugCategory to output the message in
+ * @level: the #GstLevel
+ * @file: the file where the debug message originates from
+ * @function: the function where the debug message originates from
+ * @line: the line in @file where the debug message originates from
+ * @object: (allow-none): a #GObject to associate with the debug message
+ * @format: a printf style format string
+ * @...: the list of arguments for @format
+ *
+ * Stores a debug message for later output by gst_gl_async_debug_output_log_msg()
+ */
+void
+gst_gl_async_debug_store_log_msg (GstGLAsyncDebug * ad, GstDebugCategory * cat,
+    GstDebugLevel level, const gchar * file, const gchar * function, gint line,
+    GObject * object, const gchar * format, ...)
+{
+  va_list varargs;
+
+  if (G_UNLIKELY (level <= GST_LEVEL_MAX && level <= _gst_debug_min)) {
+    va_start (varargs, format);
+    gst_gl_async_debug_store_log_msg_valist (ad, cat, level, file, function,
+        line, object, format, varargs);
+    va_end (varargs);
+  }
+}
+#else
+G_GNUC_INTERNAL void _gst_gl_debug_enable (GstGLContext * context);
 #endif
diff --git a/gst-libs/gst/gl/gstgldebug.h b/gst-libs/gst/gl/gstgldebug.h
index c277825..5b936d0 100644
--- a/gst-libs/gst/gl/gstgldebug.h
+++ b/gst-libs/gst/gl/gstgldebug.h
@@ -25,20 +25,150 @@
 
 G_BEGIN_DECLS
 
-#if !defined(GST_DISABLE_GST_DEBUG)
-void gst_gl_insert_debug_marker (GstGLContext * context,
-                                 const gchar * format, ...) G_GNUC_PRINTF (2, 3);
-#else /* GST_DISABLE_GST_DEBUG */
+typedef struct _GstGLAsyncDebug GstGLAsyncDebug;
+
+typedef gchar * (*GstGLAsyncDebugLogGetMessage) (gpointer user_data);
+
+/**
+ * GstGLAsyncDebug:
+ *
+ * #GstGLAsyncDebug an opaque structure and should only be accessed through the
+ * provided API.
+ */
+struct _GstGLAsyncDebug
+{
+  /* <private> */
+  guint             state_flags;
+  GstDebugCategory *cat;
+  GstDebugLevel     level;
+  const gchar      *file;
+  const gchar      *function;
+  gint              line;
+  GObject          *object;
+  gchar            *debug_msg;
+
+  /* <protected> */
+  GstGLAsyncDebugLogGetMessage callback;
+  gpointer          user_data;
+  GDestroyNotify    notify;
+};
+
+GstGLAsyncDebug *   gst_gl_async_debug_new                      (void);
+void                gst_gl_async_debug_free                     (GstGLAsyncDebug * ad);
+void                gst_gl_async_debug_init                     (GstGLAsyncDebug * ad);
+void                gst_gl_async_debug_unset                    (GstGLAsyncDebug * ad);
+void                gst_gl_async_debug_freeze                   (GstGLAsyncDebug * ad);
+void                gst_gl_async_debug_thaw                     (GstGLAsyncDebug * ad);
+
+/**
+ * GST_GL_ASYNC_CAT_LEVEL_LOG_valist:
+ * @ad: the #GstGLAsyncDebug to store the message in
+ * @cat: the #GstDebugCategory to output the message in
+ * @level: the #GstLevel
+ * @file: the file where the debug message originates from
+ * @function: the function where the debug message originates from
+ * @line: the line in @file where the debug message originates from
+ * @object: (allow-none): a #GObject to associate with the debug message
+ * @format: a printf style format string
+ * @varargs: the list of arguments for @format
+ *
+ * Stores a debug message in @ad for later output
+ */
+#define GST_GL_ASYNC_CAT_LEVEL_LOG_valist(ad,cat,level,object,format,varargs)   \
+    gst_gl_async_debug_store_log_msg_valist (ad, cat, level, __FILE__,          \
+        GST_FUNCTION, __LINE__, object, format, varargs)
+
+/**
+ * GST_GL_ASYNC_CAT_LEVEL_LOG:
+ * @ad: the #GstGLAsyncDebug to store the message in
+ * @cat: the #GstDebugCategory to output the message in
+ * @level: the #GstLevel
+ * @file: the file where the debug message originates from
+ * @function: the function where the debug message originates from
+ * @line: the line in @file where the debug message originates from
+ * @object: (allow-none): a #GObject to associate with the debug message
+ * @format: a printf style format string
+ * @...: the list of arguments for @format
+ *
+ * Stores a debug message in @ad for later output
+ */
 #if G_HAVE_ISO_VARARGS
-#define gst_gl_insert_debug_marker(...) G_STMT_START{ }G_STMT_END
+#define GST_GL_ASYNC_CAT_LEVEL_LOG(ad,cat,level,object,format,...)              \
+    gst_gl_async_debug_store_log_msg (ad, cat, level, __FILE__, GST_FUNCTION,   \
+        __LINE__, object, format, __VA_ARGS__)
 #else /* G_HAVE_ISO_VARARGS */
 #if G_HAVE_GNUC_VARARGS
-#define gst_gl_insert_debug_marker(args...) G_STMT_START{ }G_STMT_END
+#define GST_GL_ASYNC_CAT_LEVEL_LOG(ad,cat,level,object,format,args...)          \
+    gst_gl_async_debug_store_log_msg (ad, cat, level, __FILE__, GST_FUNCTION,   \
+        __LINE__, object, format, ##args)
 #else /* G_HAVE_GNUC_VARARGS */
 static inline void
+GST_GL_ASYNC_CAT_LEVEL_LOG(GstGLAsyncDebug * ad, GstDebugCategory * cat,
+    GstDebugLevel level, GObject * object, const gchar * format, ...)
+{
+  va_list varargs;
+
+  va_start (varargs, format);
+  GST_GL_ASYNC_CAT_LEVEL_LOG_valist (ad, cat, level, object, format, varargs);
+  va_end (varargs);
+}
+#endif /* G_HAVE_GNUC_VARARGS */
+#endif /* G_HAVE_ISO_VARARGS */
+
+#if !defined(GST_DISABLE_GST_DEBUG)
+
+void        gst_gl_insert_debug_marker              (GstGLContext * context,
+                                                     const gchar * format, ...) G_GNUC_PRINTF (2, 3);
+void        gst_gl_async_debug_output_log_msg       (GstGLAsyncDebug * ad);
+void        gst_gl_async_debug_store_log_msg        (GstGLAsyncDebug * ad,
+                                                     GstDebugCategory * cat,
+                                                     GstDebugLevel level,
+                                                     const gchar * file,
+                                                     const gchar * function,
+                                                     gint line,
+                                                     GObject * object,
+                                                     const gchar * format, ...) G_GNUC_PRINTF (8, 9);
+void        gst_gl_async_debug_store_log_msg_valist (GstGLAsyncDebug * ad,
+                                                     GstDebugCategory * cat,
+                                                     GstDebugLevel level,
+                                                     const gchar * file,
+                                                     const gchar * function,
+                                                     gint line,
+                                                     GObject * object,
+                                                     const gchar * format,
+                                                     va_list varargs) G_GNUC_PRINTF (8, 0);
+
+#else /* GST_DISABLE_GST_DEBUG */
+
+#define gst_gl_async_debug_output_log_msg(ad) G_STMT_START{ }G_STMT_END
+#define gst_gl_async_debug_store_log_msg_valist(ad,cat,level,file,function,line,object,format,args) G_STMT_START{ }G_STMT_END
+
+#if G_HAVE_ISO_VARARGS
+
+#define gst_gl_insert_debug_marker(...) G_STMT_START{ }G_STMT_END
+#define gst_gl_async_debug_store_log_msg(...) G_STMT_START{ }G_STMT_END
+
+#else /* G_HAVE_ISO_VARARGS */
+#if G_HAVE_GNUC_VARARGS
+
+#define gst_gl_insert_debug_marker(args...) G_STMT_START{ }G_STMT_END
+#define gst_gl_async_debug_store_log_msg(args...) G_STMT_START{ }G_STMT_END
+
+#else /* G_HAVE_GNUC_VARARGS */
+
+static inline void
 gst_gl_insert_debug_marker (GstGLContext * context, const gchar * format, ...)
 {
 }
+
+static inline void
+gst_gl_async_debug_store_log_msg (GstGLAsyncDebug * ad,
+    GstDebugCategory * cat, GstDebugLevel level, const gchar * file,
+    const gchar * function, gint line, GstObject * object,
+    const gchar * format, ...)
+{
+}
+
 #endif /* G_HAVE_GNUC_VARARGS */
 #endif /* G_HAVE_ISO_VARARGS */
 #endif /* GST_DISABLE_GST_DEBUG */
diff --git a/gst-libs/gst/gl/gstglfeature.c b/gst-libs/gst/gl/gstglfeature.c
index 862fadc..baf29b1 100644
--- a/gst-libs/gst/gl/gstglfeature.c
+++ b/gst-libs/gst/gl/gstglfeature.c
@@ -27,6 +27,21 @@
 #include "gl.h"
 #include "gstglfeature.h"
 
+#define GST_CAT_DEFAULT gl_feature
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+static void
+_init_debug (void)
+{
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "glfeature", 0,
+        "OpenGL feature detection");
+    g_once_init_leave (&_init, 1);
+  }
+}
+
 gboolean
 gst_gl_check_extension (const char *name, const gchar * ext)
 {
@@ -250,6 +265,8 @@
 {
   int i;
 
+  _init_debug ();
+
   for (i = 0; i < G_N_ELEMENTS (gst_gl_feature_ext_functions_data); i++) {
     _gst_gl_feature_check (context, "GL",
         gst_gl_feature_ext_functions_data + i, gl_major, gl_minor,
diff --git a/gst-libs/gst/gl/gstglfeature.h b/gst-libs/gst/gl/gstglfeature.h
index 0bbcda6..fdc3137 100644
--- a/gst-libs/gst/gl/gstglfeature.h
+++ b/gst-libs/gst/gl/gstglfeature.h
@@ -97,7 +97,7 @@
 gboolean
 gst_gl_check_extension (const char *name, const gchar * ext);
 
-gboolean
+G_GNUC_INTERNAL gboolean
 _gst_gl_feature_check (GstGLContext *context,
                      const char *driver_prefix,
                      const GstGLFeatureData *data,
@@ -105,7 +105,7 @@
                      int gl_minor,
                      const char *extensions_string);
 
-void
+G_GNUC_INTERNAL void
 _gst_gl_feature_check_ext_functions (GstGLContext *context,
                                    int gl_major,
                                    int gl_minor,
diff --git a/gst-libs/gst/gl/gstglfilter.c b/gst-libs/gst/gl/gstglfilter.c
index ab96766..59c8508 100644
--- a/gst-libs/gst/gl/gstglfilter.c
+++ b/gst-libs/gst/gl/gstglfilter.c
@@ -70,7 +70,8 @@
 #define gst_gl_filter_parent_class parent_class
 G_DEFINE_TYPE_WITH_CODE (GstGLFilter, gst_gl_filter, GST_TYPE_GL_BASE_FILTER,
     GST_DEBUG_CATEGORY_INIT (gst_gl_filter_debug, "glfilter", 0,
-        "glfilter element"););
+        "glfilter element");
+    );
 
 static void gst_gl_filter_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
@@ -97,6 +98,8 @@
     GstCaps * outcaps);
 static gboolean gst_gl_filter_gl_start (GstGLBaseFilter * filter);
 static void gst_gl_filter_gl_stop (GstGLBaseFilter * filter);
+static gboolean gst_gl_filter_gl_set_caps (GstGLBaseFilter * bt,
+    GstCaps * incaps, GstCaps * outcaps);
 
 static void
 gst_gl_filter_class_init (GstGLFilterClass * klass)
@@ -124,6 +127,7 @@
 
   GST_GL_BASE_FILTER_CLASS (klass)->gl_start = gst_gl_filter_gl_start;
   GST_GL_BASE_FILTER_CLASS (klass)->gl_stop = gst_gl_filter_gl_stop;
+  GST_GL_BASE_FILTER_CLASS (klass)->gl_set_caps = gst_gl_filter_gl_set_caps;
 
   klass->transform_internal_caps = default_transform_internal_caps;
 
@@ -183,44 +187,11 @@
 {
   GstGLFilter *filter = GST_GL_FILTER (base_filter);
   GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter);
-  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
-  gint out_width, out_height;
-
-  out_width = GST_VIDEO_INFO_WIDTH (&filter->out_info);
-  out_height = GST_VIDEO_INFO_HEIGHT (&filter->out_info);
-
-  if (filter->fbo) {
-    gst_gl_context_del_fbo (context, filter->fbo, filter->depthbuffer);
-    filter->fbo = 0;
-    filter->depthbuffer = 0;
-  }
-  //blocking call, generate a FBO
-  if (!gst_gl_context_gen_fbo (context, out_width, out_height,
-          &filter->fbo, &filter->depthbuffer))
-    goto context_error;
 
   if (filter_class->display_init_cb)
     filter_class->display_init_cb (filter);
 
-  if (filter_class->init_fbo) {
-    if (!filter_class->init_fbo (filter))
-      goto error;
-  }
-
   return TRUE;
-
-context_error:
-  {
-    GST_ELEMENT_ERROR (filter, RESOURCE, NOT_FOUND, ("Could not generate FBO"),
-        (NULL));
-    return FALSE;
-  }
-error:
-  {
-    GST_ELEMENT_ERROR (filter, LIBRARY, INIT,
-        ("Subclass failed to initialize."), (NULL));
-    return FALSE;
-  }
 }
 
 static void
@@ -269,8 +240,8 @@
   GValue fpar = { 0, }, tpar = {
   0,};
 
-  othercaps = gst_caps_truncate (othercaps);
   othercaps = gst_caps_make_writable (othercaps);
+  othercaps = gst_caps_truncate (othercaps);
 
   GST_DEBUG_OBJECT (bt, "trying to fixate othercaps %" GST_PTR_FORMAT
       " based on caps %" GST_PTR_FORMAT, othercaps, caps);
@@ -684,6 +655,49 @@
 }
 
 static gboolean
+gst_gl_filter_gl_set_caps (GstGLBaseFilter * bt, GstCaps * incaps,
+    GstCaps * outcaps)
+{
+  GstGLFilter *filter = GST_GL_FILTER (bt);
+  GstGLFilterClass *filter_class = GST_GL_FILTER_GET_CLASS (filter);
+  GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
+  gint out_width, out_height;
+
+  out_width = GST_VIDEO_INFO_WIDTH (&filter->out_info);
+  out_height = GST_VIDEO_INFO_HEIGHT (&filter->out_info);
+
+  if (filter->fbo) {
+    gst_gl_context_del_fbo (context, filter->fbo, filter->depthbuffer);
+    filter->fbo = 0;
+    filter->depthbuffer = 0;
+  }
+  //blocking call, generate a FBO
+  if (!gst_gl_context_gen_fbo (context, out_width, out_height,
+          &filter->fbo, &filter->depthbuffer))
+    goto context_error;
+
+  if (filter_class->init_fbo) {
+    if (!filter_class->init_fbo (filter))
+      goto error;
+  }
+
+  return TRUE;
+
+context_error:
+  {
+    GST_ELEMENT_ERROR (filter, RESOURCE, NOT_FOUND, ("Could not generate FBO"),
+        (NULL));
+    return FALSE;
+  }
+error:
+  {
+    GST_ELEMENT_ERROR (filter, LIBRARY, INIT,
+        ("Subclass failed to initialize."), (NULL));
+    return FALSE;
+  }
+}
+
+static gboolean
 gst_gl_filter_set_caps (GstBaseTransform * bt, GstCaps * incaps,
     GstCaps * outcaps)
 {
@@ -710,7 +724,8 @@
       GST_VIDEO_INFO_WIDTH (&filter->out_info),
       GST_VIDEO_INFO_HEIGHT (&filter->out_info), incaps, outcaps);
 
-  return TRUE;
+  return GST_BASE_TRANSFORM_CLASS (parent_class)->set_caps (bt, incaps,
+      outcaps);
 
 /* ERRORS */
 wrong_caps:
@@ -901,6 +916,13 @@
   return ret;
 }
 
+static void
+_debug_marker (GstGLContext * context, GstGLFilter * filter)
+{
+  gst_gl_insert_debug_marker (context,
+      "processing in element %s", GST_OBJECT_NAME (filter));
+}
+
 static GstFlowReturn
 gst_gl_filter_transform (GstBaseTransform * bt, GstBuffer * inbuf,
     GstBuffer * outbuf)
@@ -921,8 +943,8 @@
   if (in_sync_meta)
     gst_gl_sync_meta_wait (in_sync_meta, context);
 
-  gst_gl_insert_debug_marker (context,
-      "processing in element %s", GST_OBJECT_NAME (filter));
+  gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _debug_marker,
+      filter);
   if (filter_class->filter)
     ret = filter_class->filter (filter, inbuf, outbuf);
   else
diff --git a/gst-libs/gst/gl/gstglmemory.c b/gst-libs/gst/gl/gstglmemory.c
index 229b5a2..95974d8 100644
--- a/gst-libs/gst/gl/gstglmemory.c
+++ b/gst-libs/gst/gl/gstglmemory.c
@@ -353,8 +353,11 @@
     return FALSE;
   }
 
+  gst_gl_query_start_log (GST_GL_BASE_MEMORY_CAST (gl_mem)->query,
+      GST_CAT_GL_MEMORY, GST_LEVEL_LOG, NULL, "%s", "glReadPixels took");
   gl->ReadPixels (0, 0, gl_mem->tex_width, GL_MEM_HEIGHT (gl_mem), format,
       type, read_pointer);
+  gst_gl_query_end (GST_GL_BASE_MEMORY_CAST (gl_mem)->query);
 
   gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
 
@@ -397,7 +400,10 @@
 
     target = gst_gl_texture_target_to_gl (gl_mem->tex_target);
     gl->BindTexture (target, gl_mem->tex_id);
+    gst_gl_query_start_log (GST_GL_BASE_MEMORY_CAST (gl_mem)->query,
+        GST_CAT_GL_MEMORY, GST_LEVEL_LOG, NULL, "%s", "glGetTexImage took");
     gl->GetTexImage (target, 0, format, type, gl_mem->mem.data);
+    gst_gl_query_end (GST_GL_BASE_MEMORY_CAST (gl_mem)->query);
     gl->BindTexture (target, 0);
   }
 
@@ -444,6 +450,12 @@
 static void
 _upload_cpu_write (GstGLMemory * gl_mem, GstMapInfo * info, gsize maxsize)
 {
+  gst_gl_memory_texsubimage (gl_mem, gl_mem->mem.data);
+}
+
+void
+gst_gl_memory_texsubimage (GstGLMemory * gl_mem, gpointer read_pointer)
+{
   GstGLContext *context = gl_mem->mem.context;
   const GstGLFuncs *gl;
   GLenum gl_format, gl_type, gl_target;
@@ -477,11 +489,14 @@
       gst_gl_get_plane_start (&gl_mem->info, &gl_mem->valign,
       gl_mem->plane) + gl_mem->mem.mem.offset;
 
-  data = (gpointer) ((gintptr) plane_start + (gintptr) gl_mem->mem.data);
+  data = (gpointer) ((gintptr) plane_start + (gintptr) read_pointer);
 
   gl->BindTexture (gl_target, gl_mem->tex_id);
+  gst_gl_query_start_log (GST_GL_BASE_MEMORY_CAST (gl_mem)->query,
+      GST_CAT_GL_MEMORY, GST_LEVEL_LOG, NULL, "%s", "glTexSubImage took");
   gl->TexSubImage2D (gl_target, 0, 0, 0, gl_mem->tex_width,
       GL_MEM_HEIGHT (gl_mem), gl_format, gl_type, data);
+  gst_gl_query_end (GST_GL_BASE_MEMORY_CAST (gl_mem)->query);
 
   /* Reset to default values */
   if (USING_OPENGL (context) || USING_GLES3 (context)) {
@@ -587,8 +602,11 @@
 //    goto fbo_error;
 
   gl->BindTexture (out_tex_target, tex_id);
+  gst_gl_query_start_log (GST_GL_BASE_MEMORY_CAST (src)->query,
+      GST_CAT_GL_MEMORY, GST_LEVEL_LOG, NULL, "%s", "CopyTexImage2D took");
   gl->CopyTexImage2D (out_tex_target, 0, out_gl_format, 0, 0, out_width,
       out_height, 0);
+  gst_gl_query_end (GST_GL_BASE_MEMORY_CAST (src)->query);
 
   gl->BindTexture (out_tex_target, 0);
   gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
@@ -735,15 +753,15 @@
 _default_gl_tex_alloc (GstGLMemoryAllocator * allocator,
     GstGLVideoAllocationParams * params)
 {
+  guint alloc_flags = params->parent.alloc_flags;
   GstGLMemory *mem;
 
-  g_return_val_if_fail (params->parent.
-      alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO, NULL);
+  g_return_val_if_fail (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
+      NULL);
 
   mem = g_new0 (GstGLMemory, 1);
 
-  if (params->parent.
-      alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
+  if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
     mem->tex_id = params->parent.gl_handle;
     mem->texture_wrapped = TRUE;
   }
@@ -753,12 +771,10 @@
       params->v_info, params->plane, params->valign, params->parent.user_data,
       params->parent.notify);
 
-  if (params->parent.
-      alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
+  if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
     GST_MINI_OBJECT_FLAG_SET (mem, GST_GL_BASE_MEMORY_TRANSFER_NEED_DOWNLOAD);
   }
-  if (params->parent.
-      alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM) {
+  if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM) {
     mem->mem.data = params->parent.wrapped_data;
     GST_MINI_OBJECT_FLAG_SET (mem, GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD);
   }
@@ -1132,15 +1148,16 @@
 {
   GstGLBaseMemoryAllocator *base_allocator;
   guint n_mem, i, v, views;
+  guint alloc_flags = params->parent.alloc_flags;
 
   g_return_val_if_fail (params != NULL, FALSE);
-  g_return_val_if_fail ((params->parent.
-          alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM)
+  g_return_val_if_fail ((alloc_flags &
+          GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM)
       == 0, FALSE);
   g_return_val_if_fail ((params->parent.alloc_flags &
           GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) == 0, FALSE);
-  g_return_val_if_fail (params->parent.
-      alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO, FALSE);
+  g_return_val_if_fail (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
+      FALSE);
 
   base_allocator = GST_GL_BASE_MEMORY_ALLOCATOR (allocator);
   n_mem = GST_VIDEO_INFO_N_PLANES (params->v_info);
@@ -1181,8 +1198,9 @@
 
   g_return_val_if_fail (GST_IS_GL_CONTEXT (context), NULL);
 
-  if (USING_OPENGL (context) || USING_OPENGL3 (context)
-      || USING_GLES3 (context)) {
+  /* we can only use the pbo allocator with GL > 3.0 contexts */
+  if (gst_gl_context_check_gl_version (context,
+          GST_GL_API_OPENGL | GST_GL_API_OPENGL3 | GST_GL_API_GLES2, 3, 0)) {
     allocator = (GstGLMemoryAllocator *)
         gst_allocator_find (GST_GL_MEMORY_PBO_ALLOCATOR_NAME);
   } else {
diff --git a/gst-libs/gst/gl/gstglmemory.h b/gst-libs/gst/gl/gstglmemory.h
index 3dbf0ed..d595773 100644
--- a/gst-libs/gst/gl/gstglmemory.h
+++ b/gst-libs/gst/gl/gstglmemory.h
@@ -204,6 +204,8 @@
 
 gboolean        gst_gl_memory_read_pixels       (GstGLMemory * gl_mem,
                                                  gpointer read_pointer);
+void            gst_gl_memory_texsubimage       (GstGLMemory * gl_mem,
+                                                 gpointer read_pointer);
 
 /* accessors */
 gint                    gst_gl_memory_get_texture_width     (GstGLMemory * gl_mem);
diff --git a/gst-libs/gst/gl/gstglmemorypbo.c b/gst-libs/gst/gl/gstglmemorypbo.c
index f2ac6d8..8e8bbb8 100644
--- a/gst-libs/gst/gl/gstglmemorypbo.c
+++ b/gst-libs/gst/gl/gstglmemorypbo.c
@@ -56,11 +56,6 @@
 #define USING_GLES2(context) (gst_gl_context_check_gl_version (context, GST_GL_API_GLES2, 2, 0))
 #define USING_GLES3(context) (gst_gl_context_check_gl_version (context, GST_GL_API_GLES2, 3, 0))
 
-/* FIXME: Unused, see https://bugzilla.gnome.org/show_bug.cgi?id=759679 */
-#if 0
-#define GL_MEM_WIDTH(gl_mem) _get_plane_width (&gl_mem->mem.info, gl_mem->mem.plane)
-#endif
-
 #define GL_MEM_HEIGHT(gl_mem) _get_plane_height (&gl_mem->mem.info, gl_mem->mem.plane)
 #define GL_MEM_STRIDE(gl_mem) GST_VIDEO_INFO_PLANE_STRIDE (&gl_mem->mem.info, gl_mem->mem.plane)
 
@@ -123,21 +118,6 @@
   gboolean result;
 } GstGLMemoryPBOCopyParams;
 
-/* FIXME: Unused, see https://bugzilla.gnome.org/show_bug.cgi?id=759679 */
-#if 0
-static inline guint
-_get_plane_width (GstVideoInfo * info, guint plane)
-{
-  if (GST_VIDEO_INFO_IS_YUV (info))
-    /* For now component width and plane width are the same and the
-     * plane-component mapping matches
-     */
-    return GST_VIDEO_INFO_COMP_WIDTH (info, plane);
-  else                          /* RGB, GRAY */
-    return GST_VIDEO_INFO_WIDTH (info);
-}
-#endif
-
 static inline guint
 _get_plane_height (GstVideoInfo * info, guint plane)
 {
@@ -156,9 +136,7 @@
 {
   GstGLContext *context = gl_mem->mem.mem.context;
   const GstGLFuncs *gl;
-  guint gl_format, gl_type, gl_target;
   guint pbo_id;
-  gsize plane_start;
 
   if (!GST_MEMORY_FLAG_IS_SET (gl_mem, GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD))
     return;
@@ -168,42 +146,13 @@
   gl = context->gl_vtable;
   pbo_id = *(guint *) pbo_info->data;
 
-  gl_type = GL_UNSIGNED_BYTE;
-  if (gl_mem->mem.tex_type == GST_VIDEO_GL_TEXTURE_TYPE_RGB16)
-    gl_type = GL_UNSIGNED_SHORT_5_6_5;
-
-  gl_format = gst_gl_format_from_gl_texture_type (gl_mem->mem.tex_type);
-  gl_target = gst_gl_texture_target_to_gl (gl_mem->mem.tex_target);
-
-  if (USING_OPENGL (context) || USING_GLES3 (context)
-      || USING_OPENGL3 (context)) {
-    gl->PixelStorei (GL_UNPACK_ROW_LENGTH, gl_mem->mem.unpack_length);
-  } else if (USING_GLES2 (context)) {
-    gl->PixelStorei (GL_UNPACK_ALIGNMENT, gl_mem->mem.unpack_length);
-  }
-
   GST_CAT_LOG (GST_CAT_GL_MEMORY, "upload for texture id:%u, with pbo %u %ux%u",
       gl_mem->mem.tex_id, pbo_id, gl_mem->mem.tex_width,
       GL_MEM_HEIGHT (gl_mem));
 
-  /* find the start of the plane data including padding */
-  plane_start =
-      gst_gl_get_plane_start (&gl_mem->mem.info, &gl_mem->mem.valign,
-      gl_mem->mem.plane) + GST_MEMORY_CAST (gl_mem)->offset;
-
   gl->BindBuffer (GL_PIXEL_UNPACK_BUFFER, pbo_id);
-  gl->BindTexture (gl_target, gl_mem->mem.tex_id);
-  gl->TexSubImage2D (gl_target, 0, 0, 0, gl_mem->mem.tex_width,
-      GL_MEM_HEIGHT (gl_mem), gl_format, gl_type, (void *) plane_start);
+  gst_gl_memory_texsubimage (GST_GL_MEMORY_CAST (gl_mem), NULL);
   gl->BindBuffer (GL_PIXEL_UNPACK_BUFFER, 0);
-  gl->BindTexture (gl_target, 0);
-
-  /* Reset to default values */
-  if (USING_OPENGL (context) || USING_GLES3 (context)) {
-    gl->PixelStorei (GL_UNPACK_ROW_LENGTH, 0);
-  } else if (USING_GLES2 (context)) {
-    gl->PixelStorei (GL_UNPACK_ALIGNMENT, 4);
-  }
 }
 
 static guint
@@ -239,8 +188,8 @@
   if (!alloc_class->create ((GstGLBaseMemory *) gl_mem, error))
     return FALSE;
 
-  if (USING_OPENGL (context) || USING_OPENGL3 (context)
-      || USING_GLES3 (context)) {
+  if (CONTEXT_SUPPORTS_PBO_DOWNLOAD (context)
+      || CONTEXT_SUPPORTS_PBO_UPLOAD (context)) {
     GstAllocationParams alloc_params =
         { 0, GST_MEMORY_CAST (gl_mem)->align, 0, 0 };
     GstGLBaseMemoryAllocator *buf_allocator;
@@ -287,7 +236,7 @@
     GDestroyNotify notify)
 {
   GstGLMemoryPBO *mem;
-  mem = g_slice_new0 (GstGLMemoryPBO);
+  mem = g_new0 (GstGLMemoryPBO, 1);
   mem->mem.texture_wrapped = FALSE;
 
   _gl_mem_init (mem, allocator, parent, context, target, params, info, plane,
@@ -708,26 +657,21 @@
           *) gl_mem);
 }
 
-static void
-_gl_mem_free (GstAllocator * allocator, GstMemory * mem)
-{
-  GST_ALLOCATOR_CLASS (parent_class)->free (allocator, mem);
-}
-
 static GstGLMemoryPBO *
 _gl_mem_pbo_alloc (GstGLBaseMemoryAllocator * allocator,
     GstGLVideoAllocationParams * params)
 {
   GstGLMemoryPBO *mem;
+  guint alloc_flags;
 
-  g_return_val_if_fail (params->
-      parent.alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO, NULL);
+  alloc_flags = params->parent.alloc_flags;
+
+  g_return_val_if_fail (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
+      NULL);
 
   mem = g_new0 (GstGLMemoryPBO, 1);
 
-  if (params->
-      parent.alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE)
-  {
+  if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
     mem->mem.tex_id = params->parent.gl_handle;
     mem->mem.texture_wrapped = TRUE;
   }
@@ -737,18 +681,17 @@
       params->v_info, params->plane, params->valign, params->parent.user_data,
       params->parent.notify);
 
-  if (params->
-      parent.alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE)
-  {
+  if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
     GST_MINI_OBJECT_FLAG_SET (mem, GST_GL_BASE_MEMORY_TRANSFER_NEED_DOWNLOAD);
   }
-  if (params->
-      parent.alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM) {
-    mem->pbo->mem.data = params->parent.wrapped_data;
-
+  if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM) {
     GST_MINI_OBJECT_FLAG_SET (mem, GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD);
-    GST_MINI_OBJECT_FLAG_SET (mem->pbo,
-        GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD);
+    if (mem->pbo) {
+      GST_MINI_OBJECT_FLAG_SET (mem->pbo,
+          GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD);
+      mem->pbo->mem.data = params->parent.wrapped_data;
+    }
+    mem->mem.mem.data = params->parent.wrapped_data;
   }
 
   return mem;
@@ -773,7 +716,6 @@
   gl_base->destroy = (GstGLBaseMemoryAllocatorDestroyFunction) _gl_mem_destroy;
 
   allocator_class->alloc = _gl_mem_alloc;
-  allocator_class->free = _gl_mem_free;
 }
 
 static void
@@ -843,6 +785,7 @@
   if (_read_pixels_to_pbo (gl_mem))
     GST_CAT_TRACE (GST_CAT_GL_MEMORY, "optimistic download of texture %u "
         "using pbo %u", gl_mem->mem.tex_id, gl_mem->pbo->id);
+  GST_MEMORY_FLAG_UNSET (gl_mem, GST_GL_BASE_MEMORY_TRANSFER_NEED_DOWNLOAD);
   g_mutex_unlock (&mem->lock);
 }
 
diff --git a/gst-libs/gst/gl/gstglquery.c b/gst-libs/gst/gl/gstglquery.c
new file mode 100644
index 0000000..45e6336
--- /dev/null
+++ b/gst-libs/gst/gl/gstglquery.c
@@ -0,0 +1,268 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/gl/gl.h>
+
+#include <string.h>
+
+#include "gstglquery.h"
+
+#ifndef GL_TIME_ELAPSED
+#define GL_TIME_ELAPSED 0x88BF
+#endif
+
+#ifndef GL_TIMESTAMP
+#define GL_TIMESTAMP 0x8E28
+#endif
+
+#ifndef GL_QUERY_RESULT
+#define GL_QUERY_RESULT 0x8866
+#endif
+
+#define GST_CAT_DEFAULT gst_gl_query_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+static void
+_init_debug (void)
+{
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "glquery", 0, "glquery element");
+    g_once_init_leave (&_init, 1);
+  }
+}
+
+static const gchar *
+_query_type_to_string (guint query_type)
+{
+  switch (query_type) {
+    case GST_GL_QUERY_TIME_ELAPSED:
+    case GL_TIME_ELAPSED:
+      return "time elapsed";
+    case GL_TIMESTAMP:
+    case GST_GL_QUERY_TIMESTAMP:
+      return "timestamp";
+    default:
+      return "unknown";
+  }
+}
+
+static guint
+_gst_gl_query_type_to_gl (GstGLQueryType query_type)
+{
+  if (query_type == GST_GL_QUERY_TIME_ELAPSED)
+    return GL_TIME_ELAPSED;
+  if (query_type == GST_GL_QUERY_TIMESTAMP)
+    return GL_TIMESTAMP;
+
+  g_assert_not_reached ();
+  return 0;
+}
+
+static gboolean
+_query_type_supports_counter (guint gl_query_type)
+{
+  return gl_query_type == GL_TIMESTAMP;
+}
+
+static gboolean
+_query_type_supports_begin_end (guint gl_query_type)
+{
+  return gl_query_type == GL_TIME_ELAPSED;
+}
+
+static gboolean
+_context_supports_query_type (GstGLContext * context, guint gl_query_type)
+{
+  return gl_query_type != 0 && context->gl_vtable->GenQueries != NULL;
+}
+
+static gchar *
+_log_time (gpointer user_data)
+{
+  GstGLQuery *query = user_data;
+  gint64 result;
+
+  result = gst_gl_query_result (query);
+
+  return gst_info_strdup_printf ("%" GST_TIME_FORMAT, GST_TIME_ARGS (result));
+}
+
+void
+gst_gl_query_init (GstGLQuery * query, GstGLContext * context,
+    GstGLQueryType query_type)
+{
+  const GstGLFuncs *gl;
+
+  g_return_if_fail (query != NULL);
+  g_return_if_fail (GST_IS_GL_CONTEXT (context));
+  gl = context->gl_vtable;
+
+  memset (query, 0, sizeof (*query));
+
+  _init_debug ();
+
+  query->context = gst_object_ref (context);
+  query->query_type = _gst_gl_query_type_to_gl (query_type);
+  query->supported = _context_supports_query_type (context, query->query_type);
+
+  if (query->supported)
+    gl->GenQueries (1, &query->query_id);
+
+  gst_gl_async_debug_init (&query->debug);
+  query->debug.callback = _log_time;
+  query->debug.user_data = query;
+}
+
+void
+gst_gl_query_unset (GstGLQuery * query)
+{
+  const GstGLFuncs *gl;
+
+  g_return_if_fail (query != NULL);
+  if (query->start_called)
+    g_critical ("Unsetting a running query. This may not be what you wanted."
+        "Be sure to pair calls to gst_gl_query_start() and gst_gl_query_end()");
+
+  GST_TRACE ("%p unsetting query %u", query, query->query_id);
+
+  gl = query->context->gl_vtable;
+
+  /* unset the debug object as it may callback to print the last message */
+  gst_gl_async_debug_unset (&query->debug);
+
+  if (query->query_id)
+    gl->DeleteQueries (1, &query->query_id);
+
+  gst_object_unref (query->context);
+}
+
+GstGLQuery *
+gst_gl_query_new (GstGLContext * context, GstGLQueryType query_type)
+{
+  GstGLQuery *query = g_new0 (GstGLQuery, 1);
+
+  gst_gl_query_init (query, context, query_type);
+
+  return query;
+}
+
+void
+gst_gl_query_free (GstGLQuery * query)
+{
+  g_return_if_fail (query != NULL);
+
+  gst_gl_query_unset (query);
+  g_free (query);
+}
+
+void
+gst_gl_query_start (GstGLQuery * query)
+{
+  const GstGLFuncs *gl;
+
+  g_return_if_fail (query != NULL);
+  g_return_if_fail (_query_type_supports_begin_end (query->query_type));
+
+  if (!query->supported)
+    return;
+
+  query->start_called = TRUE;
+  gst_gl_async_debug_output_log_msg (&query->debug);
+
+  GST_TRACE ("%p start query type \'%s\' id %u", query,
+      _query_type_to_string (query->query_type), query->query_id);
+
+  gl = query->context->gl_vtable;
+  gl->BeginQuery (query->query_type, query->query_id);
+}
+
+void
+gst_gl_query_end (GstGLQuery * query)
+{
+  const GstGLFuncs *gl;
+
+  g_return_if_fail (query != NULL);
+  g_return_if_fail (_query_type_supports_begin_end (query->query_type));
+
+  if (!query->supported)
+    return;
+  g_return_if_fail (query->start_called);
+
+  GST_TRACE ("%p end query type \'%s\' id %u", query,
+      _query_type_to_string (query->query_type), query->query_id);
+
+  gl = query->context->gl_vtable;
+
+  gl->EndQuery (query->query_type);
+  query->start_called = FALSE;
+}
+
+void
+gst_gl_query_counter (GstGLQuery * query)
+{
+  const GstGLFuncs *gl;
+
+  g_return_if_fail (query != NULL);
+  g_return_if_fail (_query_type_supports_counter (query->query_type));
+
+  if (!query->supported)
+    return;
+
+  GST_TRACE ("%p query counter type \'%s\' id %u", query,
+      _query_type_to_string (query->query_type), query->query_id);
+
+  gst_gl_async_debug_output_log_msg (&query->debug);
+
+  gl = query->context->gl_vtable;
+  gl->QueryCounter (query->query_id, query->query_type);
+}
+
+guint64
+gst_gl_query_result (GstGLQuery * query)
+{
+  const GstGLFuncs *gl;
+  guint64 ret;
+
+  g_return_val_if_fail (query != NULL, 0);
+  g_return_val_if_fail (!query->start_called, 0);
+
+  if (!query->supported)
+    return 0;
+
+  gl = query->context->gl_vtable;
+  if (gl->GetQueryObjectui64v) {
+    gl->GetQueryObjectui64v (query->query_id, GL_QUERY_RESULT, &ret);
+  } else {
+    guint tmp;
+    gl->GetQueryObjectuiv (query->query_id, GL_QUERY_RESULT, &tmp);
+    ret = tmp;
+  }
+
+  GST_TRACE ("%p get result %" G_GUINT64_FORMAT " type \'%s\' id %u", query,
+      ret, _query_type_to_string (query->query_type), query->query_id);
+
+  return ret;
+}
diff --git a/gst-libs/gst/gl/gstglquery.h b/gst-libs/gst/gl/gstglquery.h
new file mode 100644
index 0000000..9cf06fa
--- /dev/null
+++ b/gst-libs/gst/gl/gstglquery.h
@@ -0,0 +1,140 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __GST_GL_QUERY_H__
+#define __GST_GL_QUERY_H__
+
+#include <gst/gl/gstgl_fwd.h>
+
+G_BEGIN_DECLS
+
+typedef enum
+{
+  GST_GL_QUERY_NONE,
+  GST_GL_QUERY_TIME_ELAPSED,
+  GST_GL_QUERY_TIMESTAMP,
+} GstGLQueryType;
+
+struct _GstGLQuery
+{
+  /* <private> */
+  GstGLContext *    context;
+  guint             query_type;
+  guint             query_id;
+  gboolean          supported;
+
+  gboolean          start_called;
+  GstGLAsyncDebug   debug;
+};
+
+void                gst_gl_query_init               (GstGLQuery * query,
+                                                     GstGLContext * context,
+                                                     GstGLQueryType query_type);
+void                gst_gl_query_unset              (GstGLQuery * query);
+GstGLQuery *        gst_gl_query_new                (GstGLContext * context,
+                                                     GstGLQueryType query_type);
+void                gst_gl_query_free               (GstGLQuery * query);
+
+void                gst_gl_query_start              (GstGLQuery * query);
+void                gst_gl_query_end                (GstGLQuery * query);
+void                gst_gl_query_counter            (GstGLQuery * query);
+guint64             gst_gl_query_result             (GstGLQuery * query);
+
+#define gst_gl_query_start_log_valist(query,cat,level,object,format,varargs) \
+  G_STMT_START {    \
+    GST_GL_ASYNC_CAT_LEVEL_LOG_valist (&(query)->debug, cat, level, object, format, varargs); \
+    gst_gl_async_debug_freeze (&(query)->debug); \
+    gst_gl_query_start (query); \
+    gst_gl_async_debug_thaw (&(query)->debug); \
+  } G_STMT_END
+
+#define gst_gl_query_counter_log_valist(query,cat,level,object,format,varargs) \
+  G_STMT_START {    \
+    GST_GL_ASYNC_CAT_LEVEL_LOG_valist (&(query)->debug, cat, level, object, format, varargs); \
+    gst_gl_async_debug_freeze (&(query)->debug); \
+    gst_gl_query_counter (query); \
+    gst_gl_async_debug_thaw (&(query)->debug); \
+  } G_STMT_END
+
+#if G_HAVE_ISO_VARARGS
+
+#define gst_gl_query_start_log(query,cat,level,object,format,...) \
+  G_STMT_START {    \
+    GST_GL_ASYNC_CAT_LEVEL_LOG (&(query)->debug, cat, level, object, format, __VA_ARGS__); \
+    gst_gl_async_debug_freeze (&(query)->debug); \
+    gst_gl_query_start (query); \
+    gst_gl_async_debug_thaw (&(query)->debug); \
+  } G_STMT_END
+#define gst_gl_query_counter_log(query,cat,level,object,format,...) \
+  G_STMT_START {    \
+    GST_GL_ASYNC_CAT_LEVEL_LOG (&(query)->debug, cat, level, object, format, __VA_ARGS__); \
+    gst_gl_async_debug_freeze (&(query)->debug); \
+    gst_gl_query_counter (query); \
+    gst_gl_async_debug_thaw (&(query)->debug); \
+  } G_STMT_END
+
+#else /* G_HAVE_ISO_VARARGS */
+#if G_HAVE_GNUC_VARARGS
+
+#define gst_gl_query_start_log(query,cat,level,object,format,args...) \
+  G_STMT_START {    \
+    GST_GL_ASYNC_CAT_LEVEL_LOG (&(query)->debug, cat, level, object, format, ##args); \
+    gst_gl_async_debug_freeze (&(query)->debug); \
+    gst_gl_query_start (query); \
+    gst_gl_async_debug_thaw (&(query)->debug); \
+  } G_STMT_END
+#define gst_gl_query_counter_log(query,cat,level,object,format,args...) \
+  G_STMT_START {    \
+    GST_GL_ASYNC_CAT_LEVEL_LOG (&(query)->debug, cat, level, object, format, ##args); \
+    gst_gl_async_debug_freeze (&(query)->debug); \
+    gst_gl_query_counter (query); \
+    gst_gl_async_debug_thaw (&(query)->debug); \
+  } G_STMT_END
+
+#else /* G_HAVE_GNUC_VARARGS */
+
+static inline void
+gst_gl_query_start_log(GstGLQuery * query, GstDebugCategory * cat,
+    GstDebugLevel level, GObject * object, const gchar * format, ...)
+{
+  va_list varargs;
+
+  va_start (varargs, format);
+  gst_gl_query_start_log_valist (query, cat, level, object, format, varargs);
+  va_end (varargs);
+}
+
+static inline void
+gst_gl_query_counter_log(GstGLQuery * query, GstDebugCategory * cat,
+    GstDebugLevel level, GObject * object, const gchar * format, ...)
+{
+  va_list varargs;
+
+  va_start (varargs, format);
+  gst_gl_query_counter_log_valist (query, cat, level, object, format, varargs);
+  va_end (varargs);
+}
+
+#endif /* G_HAVE_GNUC_VARARGS */
+#endif /* G_HAVE_ISO_VARARGS */
+
+G_END_DECLS
+
+#endif /* __GST_GL_QUERY_H__ */
diff --git a/gst-libs/gst/gl/gstglshader.c b/gst-libs/gst/gl/gstglshader.c
index 05b4caf..56cb9ed 100644
--- a/gst-libs/gst/gl/gstglshader.c
+++ b/gst-libs/gst/gl/gstglshader.c
@@ -73,6 +73,7 @@
   GList *stages;
 
   gboolean linked;
+  GHashTable *uniform_locations;
 
   GstGLSLFuncs vtable;
 };
@@ -122,6 +123,7 @@
       (GstGLContextThreadFunc) _cleanup_shader, shader);
 
   priv->program_handle = 0;
+  g_hash_table_destroy (priv->uniform_locations);
 
   if (shader->context) {
     gst_object_unref (shader->context);
@@ -189,6 +191,30 @@
   priv = self->priv = GST_GL_SHADER_GET_PRIVATE (self);
 
   priv->linked = FALSE;
+  priv->uniform_locations =
+      g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+}
+
+static int
+_get_uniform_location (GstGLShader * shader, const gchar * name)
+{
+  GstGLShaderPrivate *priv = shader->priv;
+  int location;
+  gpointer value;
+
+  g_return_val_if_fail (priv->linked, 0);
+
+  if (!g_hash_table_lookup_extended (priv->uniform_locations, name, NULL,
+          &value)) {
+    const GstGLFuncs *gl = shader->context->gl_vtable;
+    location = gl->GetUniformLocation (priv->program_handle, name);
+    g_hash_table_insert (priv->uniform_locations, g_strdup (name),
+        GINT_TO_POINTER (location));
+  } else {
+    location = GPOINTER_TO_INT (value);
+  }
+
+  return location;
 }
 
 static GstGLShader *
@@ -680,6 +706,7 @@
   shader->priv->stages = NULL;
 
   priv->linked = FALSE;
+  g_hash_table_remove_all (priv->uniform_locations);
 
   g_object_notify (G_OBJECT (shader), "linked");
 }
@@ -763,7 +790,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform1f (location, value);
 }
@@ -781,7 +808,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform1fv (location, count, value);
 }
@@ -799,7 +826,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform1i (location, value);
 }
@@ -817,7 +844,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform1iv (location, count, value);
 }
@@ -835,7 +862,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform2f (location, value0, value1);
 }
@@ -853,7 +880,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform2fv (location, count, value);
 }
@@ -871,7 +898,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform2i (location, v0, v1);
 }
@@ -889,7 +916,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform2iv (location, count, value);
 }
@@ -907,7 +934,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform3f (location, v0, v1, v2);
 }
@@ -925,7 +952,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform3fv (location, count, value);
 }
@@ -943,7 +970,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform3i (location, v0, v1, v2);
 }
@@ -961,7 +988,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform3iv (location, count, value);
 }
@@ -979,7 +1006,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform4f (location, v0, v1, v2, v3);
 }
@@ -997,7 +1024,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform4fv (location, count, value);
 }
@@ -1015,7 +1042,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform4i (location, v0, v1, v2, v3);
 }
@@ -1033,7 +1060,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->Uniform4iv (location, count, value);
 }
@@ -1051,7 +1078,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->UniformMatrix2fv (location, count, transpose, value);
 }
@@ -1069,7 +1096,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->UniformMatrix3fv (location, count, transpose, value);
 }
@@ -1087,7 +1114,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->UniformMatrix4fv (location, count, transpose, value);
 }
@@ -1106,7 +1133,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->UniformMatrix2x3fv (location, count, transpose, value);
 }
@@ -1124,7 +1151,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->UniformMatrix2x4fv (location, count, transpose, value);
 }
@@ -1142,7 +1169,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->UniformMatrix3x2fv (location, count, transpose, value);
 }
@@ -1160,7 +1187,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->UniformMatrix3x4fv (location, count, transpose, value);
 }
@@ -1178,7 +1205,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->UniformMatrix4x2fv (location, count, transpose, value);
 }
@@ -1196,7 +1223,7 @@
   g_return_if_fail (priv->program_handle != 0);
   gl = shader->context->gl_vtable;
 
-  location = gl->GetUniformLocation (priv->program_handle, name);
+  location = _get_uniform_location (shader, name);
 
   gl->UniformMatrix4x3fv (location, count, transpose, value);
 }
diff --git a/gst-libs/gst/gl/gstglsl_private.h b/gst-libs/gst/gl/gstglsl_private.h
index c23ff91..c1be677 100644
--- a/gst-libs/gst/gl/gstglsl_private.h
+++ b/gst-libs/gst/gl/gstglsl_private.h
@@ -55,8 +55,8 @@
       GLsizei * length, char *log);
 } GstGLSLFuncs;
 
-gboolean _gst_glsl_funcs_fill (GstGLSLFuncs * vtable, GstGLContext * context);
-const gchar * _gst_glsl_shader_string_find_version (const gchar * str);
+G_GNUC_INTERNAL gboolean _gst_glsl_funcs_fill (GstGLSLFuncs * vtable, GstGLContext * context);
+G_GNUC_INTERNAL const gchar * _gst_glsl_shader_string_find_version (const gchar * str);
 
 G_END_DECLS
 
diff --git a/gst-libs/gst/gl/gstglsyncmeta.c b/gst-libs/gst/gl/gstglsyncmeta.c
index a2f44a3..b4061d3 100644
--- a/gst-libs/gst/gl/gstglsyncmeta.c
+++ b/gst-libs/gst/gl/gstglsyncmeta.c
@@ -37,6 +37,9 @@
 #ifndef GL_TIMEOUT_EXPIRED
 #define GL_TIMEOUT_EXPIRED 0x911B
 #endif
+#ifndef GL_TIMEOUT_IGNORED
+#define GL_TIMEOUT_IGNORED G_GUINT64_CONSTANT(0xFFFFFFFFFFFFFFFF)
+#endif
 
 static void
 _default_set_sync_gl (GstGLSyncMeta * sync_meta, GstGLContext * context)
@@ -50,9 +53,14 @@
     }
     sync_meta->data =
         (gpointer) gl->FenceSync (GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
-    gl->Flush ();
+
+    if (gst_gl_context_is_shared (context))
+      /* if we only have a single context, the wait will flush for us */
+      gl->Flush ();
     GST_LOG ("setting sync object %p", sync_meta->data);
   } else {
+    /* XXX: this a little over the top if the CPU is never going to
+     * access the data, however this is the legacy path, so... */
     gl->Finish ();
   }
 }
@@ -61,6 +69,17 @@
 _default_wait_gl (GstGLSyncMeta * sync_meta, GstGLContext * context)
 {
   const GstGLFuncs *gl = context->gl_vtable;
+
+  if (sync_meta->data && gl->WaitSync) {
+    GST_LOG ("waiting on sync object %p", sync_meta->data);
+    gl->WaitSync ((GLsync) sync_meta->data, 0, GL_TIMEOUT_IGNORED);
+  }
+}
+
+static void
+_default_wait_cpu_gl (GstGLSyncMeta * sync_meta, GstGLContext * context)
+{
+  const GstGLFuncs *gl = context->gl_vtable;
   GLenum res;
 
   if (sync_meta->data && gl->ClientWaitSync) {
@@ -126,6 +145,7 @@
 
   ret->set_sync_gl = _default_set_sync_gl;
   ret->wait_gl = _default_wait_gl;
+  ret->wait_cpu_gl = _default_wait_cpu_gl;
   ret->copy = _default_copy;
   ret->free_gl = _default_free_gl;
 
@@ -171,6 +191,25 @@
         (GstGLContextThreadFunc) _wait, sync_meta);
 }
 
+static void
+_wait_cpu (GstGLContext * context, GstGLSyncMeta * sync_meta)
+{
+  g_assert (sync_meta->wait_cpu_gl != NULL);
+
+  GST_LOG ("waiting %p", sync_meta);
+  sync_meta->wait_cpu_gl (sync_meta, context);
+}
+
+void
+gst_gl_sync_meta_wait_cpu (GstGLSyncMeta * sync_meta, GstGLContext * context)
+{
+  if (sync_meta->wait_cpu)
+    sync_meta->wait_cpu (sync_meta, context);
+  else
+    gst_gl_context_thread_add (context,
+        (GstGLContextThreadFunc) _wait_cpu, sync_meta);
+}
+
 static gboolean
 _gst_gl_sync_meta_transform (GstBuffer * dest, GstMeta * meta,
     GstBuffer * buffer, GQuark type, gpointer data)
@@ -194,6 +233,8 @@
       dmeta->set_sync_gl = smeta->set_sync_gl;
       dmeta->wait = smeta->wait;
       dmeta->wait_gl = smeta->wait_gl;
+      dmeta->wait_cpu = smeta->wait_cpu;
+      dmeta->wait_cpu_gl = smeta->wait_cpu_gl;
       dmeta->copy = smeta->copy;
       dmeta->free = smeta->free;
       dmeta->free_gl = smeta->free_gl;
@@ -248,6 +289,8 @@
   sync_meta->set_sync_gl = NULL;
   sync_meta->wait = NULL;
   sync_meta->wait_gl = NULL;
+  sync_meta->wait_cpu = NULL;
+  sync_meta->wait_cpu_gl = NULL;
   sync_meta->copy = NULL;
   sync_meta->free = NULL;
   sync_meta->free_gl = NULL;
diff --git a/gst-libs/gst/gl/gstglsyncmeta.h b/gst-libs/gst/gl/gstglsyncmeta.h
index 8620ccd..e5eb17b 100644
--- a/gst-libs/gst/gl/gstglsyncmeta.h
+++ b/gst-libs/gst/gl/gstglsyncmeta.h
@@ -42,6 +42,8 @@
   void (*set_sync_gl) (GstGLSyncMeta * sync, GstGLContext * context);
   void (*wait) (GstGLSyncMeta * sync, GstGLContext * context);
   void (*wait_gl) (GstGLSyncMeta * sync, GstGLContext * context);
+  void (*wait_cpu) (GstGLSyncMeta * sync, GstGLContext * context);
+  void (*wait_cpu_gl) (GstGLSyncMeta * sync, GstGLContext * context);
   void (*copy) (GstGLSyncMeta * src, GstBuffer * sbuffer, GstGLSyncMeta * dest, GstBuffer * dbuffer);
   void (*free) (GstGLSyncMeta * sync, GstGLContext * context);
   void (*free_gl) (GstGLSyncMeta * sync, GstGLContext * context);
@@ -57,6 +59,7 @@
                                                          gpointer data);
 void                gst_gl_sync_meta_set_sync_point     (GstGLSyncMeta * sync, GstGLContext * context);
 void                gst_gl_sync_meta_wait               (GstGLSyncMeta * sync, GstGLContext * context);
+void                gst_gl_sync_meta_wait_cpu           (GstGLSyncMeta * sync, GstGLContext * context);
 
 G_END_DECLS
 
diff --git a/gst-libs/gst/gl/gstglupload.c b/gst-libs/gst/gl/gstglupload.c
index bcb3780..16ed5ea 100644
--- a/gst-libs/gst/gl/gstglupload.c
+++ b/gst-libs/gst/gl/gstglupload.c
@@ -105,22 +105,59 @@
 };
 
 static GstCaps *
-_set_caps_features (const GstCaps * caps, const gchar * feature_name)
+_set_caps_features_with_passthrough (const GstCaps * caps,
+    const gchar * feature_name, GstCapsFeatures * passthrough)
 {
-  GstCaps *tmp = gst_caps_copy (caps);
-  guint n = gst_caps_get_size (tmp);
-  guint i = 0;
+  guint i, j, m, n;
+  GstCaps *tmp;
 
+  tmp = gst_caps_copy (caps);
+
+  n = gst_caps_get_size (caps);
   for (i = 0; i < n; i++) {
-    GstCapsFeatures *features;
+    GstCapsFeatures *features, *orig_features;
 
+    orig_features = gst_caps_get_features (caps, i);
     features = gst_caps_features_new (feature_name, NULL);
+
+    m = gst_caps_features_get_size (orig_features);
+    for (j = 0; j < m; j++) {
+      const gchar *feature = gst_caps_features_get_nth (orig_features, j);
+
+      /* if we already have the features */
+      if (gst_caps_features_contains (features, feature))
+        continue;
+
+      if (g_strcmp0 (feature, GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY) == 0)
+        continue;
+
+      if (gst_caps_features_contains (passthrough, feature)) {
+        gst_caps_features_add (features, feature);
+      }
+    }
+
     gst_caps_set_features (tmp, i, features);
   }
 
   return tmp;
 }
 
+static GstCaps *
+_caps_intersect_texture_target (GstCaps * caps, GstGLTextureTarget target_mask)
+{
+  GValue targets = G_VALUE_INIT;
+  GstCaps *ret, *target;
+
+  target = gst_caps_copy (caps);
+  gst_gl_value_set_texture_target_from_mask (&targets, target_mask);
+  gst_caps_set_value (target, "texture-target", &targets);
+
+  ret = gst_caps_intersect_full (caps, target, GST_CAPS_INTERSECT_FIRST);
+
+  gst_caps_unref (target);
+  return ret;
+}
+
 typedef enum
 {
   METHOD_FLAG_CAN_SHARE_CONTEXT = 1,
@@ -164,7 +201,39 @@
 _gl_memory_upload_transform_caps (GstGLContext * context,
     GstPadDirection direction, GstCaps * caps)
 {
-  return _set_caps_features (caps, GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
+  GstCapsFeatures *passthrough =
+      gst_caps_features_from_string
+      (GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION);
+  GstCaps *ret;
+
+  ret =
+      _set_caps_features_with_passthrough (caps,
+      GST_CAPS_FEATURE_MEMORY_GL_MEMORY, passthrough);
+
+  gst_caps_features_free (passthrough);
+
+  if (direction == GST_PAD_SINK) {
+    GstGLTextureTarget target_mask = 0;
+    GstCaps *tmp;
+
+    target_mask |= 1 << GST_GL_TEXTURE_TARGET_2D;
+    target_mask |= 1 << GST_GL_TEXTURE_TARGET_RECTANGLE;
+    target_mask |= 1 << GST_GL_TEXTURE_TARGET_EXTERNAL_OES;
+    tmp = _caps_intersect_texture_target (ret, target_mask);
+    gst_caps_unref (ret);
+    ret = tmp;
+  } else {
+    gint i, n;
+
+    n = gst_caps_get_size (ret);
+    for (i = 0; i < n; i++) {
+      GstStructure *s = gst_caps_get_structure (ret, i);
+
+      gst_structure_remove_fields (s, "texture-target", NULL);
+    }
+  }
+
+  return ret;
 }
 
 static gboolean
@@ -228,8 +297,8 @@
     gst_allocation_params_init (&params);
 
     allocator =
-        GST_ALLOCATOR (gst_gl_memory_allocator_get_default (upload->
-            upload->context));
+        GST_ALLOCATOR (gst_gl_memory_allocator_get_default (upload->upload->
+            context));
     gst_query_add_allocation_param (query, allocator, &params);
     gst_object_unref (allocator);
   }
@@ -369,14 +438,27 @@
 _egl_image_upload_transform_caps (GstGLContext * context,
     GstPadDirection direction, GstCaps * caps)
 {
+  GstCapsFeatures *passthrough =
+      gst_caps_features_from_string
+      (GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION);
   GstCaps *ret;
 
   if (direction == GST_PAD_SINK) {
-    ret = _set_caps_features (caps, GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
+    GstCaps *tmp;
+
+    ret =
+        _set_caps_features_with_passthrough (caps,
+        GST_CAPS_FEATURE_MEMORY_GL_MEMORY, passthrough);
+
+    tmp = _caps_intersect_texture_target (ret, 1 << GST_GL_TEXTURE_TARGET_2D);
+    gst_caps_unref (ret);
+    ret = tmp;
   } else {
     gint i, n;
 
-    ret = _set_caps_features (caps, GST_CAPS_FEATURE_MEMORY_EGL_IMAGE);
+    ret =
+        _set_caps_features_with_passthrough (caps,
+        GST_CAPS_FEATURE_MEMORY_EGL_IMAGE, passthrough);
     gst_caps_set_simple (ret, "format", G_TYPE_STRING, "RGBA", NULL);
 
     n = gst_caps_get_size (ret);
@@ -387,6 +469,8 @@
     }
   }
 
+  gst_caps_features_free (passthrough);
+
   return ret;
 }
 
@@ -575,14 +659,27 @@
 _dma_buf_upload_transform_caps (GstGLContext * context,
     GstPadDirection direction, GstCaps * caps)
 {
+  GstCapsFeatures *passthrough =
+      gst_caps_features_from_string
+      (GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION);
   GstCaps *ret;
 
   if (direction == GST_PAD_SINK) {
-    ret = _set_caps_features (caps, GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
+    GstCaps *tmp;
+
+    ret =
+        _set_caps_features_with_passthrough (caps,
+        GST_CAPS_FEATURE_MEMORY_GL_MEMORY, passthrough);
+
+    tmp = _caps_intersect_texture_target (ret, 1 << GST_GL_TEXTURE_TARGET_2D);
+    gst_caps_unref (ret);
+    ret = tmp;
   } else {
     gint i, n;
 
-    ret = _set_caps_features (caps, GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY);
+    ret =
+        _set_caps_features_with_passthrough (caps,
+        GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY, passthrough);
 
     n = gst_caps_get_size (ret);
     for (i = 0; i < n; i++) {
@@ -592,6 +689,8 @@
     }
   }
 
+  gst_caps_features_free (passthrough);
+
   return ret;
 }
 
@@ -832,16 +931,27 @@
 _upload_meta_upload_transform_caps (GstGLContext * context,
     GstPadDirection direction, GstCaps * caps)
 {
+  GstCapsFeatures *passthrough =
+      gst_caps_features_from_string
+      (GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION);
   GstCaps *ret;
 
   if (direction == GST_PAD_SINK) {
-    ret = _set_caps_features (caps, GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
+    GstCaps *tmp;
+
+    ret =
+        _set_caps_features_with_passthrough (caps,
+        GST_CAPS_FEATURE_MEMORY_GL_MEMORY, passthrough);
+
+    tmp = _caps_intersect_texture_target (ret, 1 << GST_GL_TEXTURE_TARGET_2D);
+    gst_caps_unref (ret);
+    ret = tmp;
   } else {
     gint i, n;
 
     ret =
-        _set_caps_features (caps,
-        GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META);
+        _set_caps_features_with_passthrough (caps,
+        GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META, passthrough);
     gst_caps_set_simple (ret, "format", G_TYPE_STRING, "RGBA", NULL);
 
     n = gst_caps_get_size (ret);
@@ -852,6 +962,8 @@
     }
   }
 
+  gst_caps_features_free (passthrough);
+
   return ret;
 }
 
@@ -1113,14 +1225,30 @@
 _raw_data_upload_transform_caps (GstGLContext * context,
     GstPadDirection direction, GstCaps * caps)
 {
+  GstCapsFeatures *passthrough =
+      gst_caps_features_from_string
+      (GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION);
   GstCaps *ret;
 
   if (direction == GST_PAD_SINK) {
-    ret = _set_caps_features (caps, GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
+    GstGLTextureTarget target_mask = 0;
+    GstCaps *tmp;
+
+    ret =
+        _set_caps_features_with_passthrough (caps,
+        GST_CAPS_FEATURE_MEMORY_GL_MEMORY, passthrough);
+
+    target_mask |= 1 << GST_GL_TEXTURE_TARGET_2D;
+    target_mask |= 1 << GST_GL_TEXTURE_TARGET_RECTANGLE;
+    tmp = _caps_intersect_texture_target (ret, target_mask);
+    gst_caps_unref (ret);
+    ret = tmp;
   } else {
     gint i, n;
 
-    ret = _set_caps_features (caps, GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY);
+    ret =
+        _set_caps_features_with_passthrough (caps,
+        GST_CAPS_FEATURE_MEMORY_SYSTEM_MEMORY, passthrough);
 
     n = gst_caps_get_size (ret);
     for (i = 0; i < n; i++) {
@@ -1130,6 +1258,8 @@
     }
   }
 
+  gst_caps_features_free (passthrough);
+
   return ret;
 }
 
@@ -1365,9 +1495,6 @@
       tmp = gst_caps_merge (tmp, tmp2);
   }
 
-  tmp = gst_gl_overlay_compositor_add_caps (tmp);
-
-
   if (filter) {
     result = gst_caps_intersect_full (filter, tmp, GST_CAPS_INTERSECT_FIRST);
     gst_caps_unref (tmp);
diff --git a/gst-libs/gst/gl/gstglutils.c b/gst-libs/gst/gl/gstglutils.c
index 080c17b..2b0104f 100644
--- a/gst-libs/gst/gl/gstglutils.c
+++ b/gst-libs/gst/gl/gstglutils.c
@@ -947,3 +947,132 @@
 
   return tmp;
 }
+
+/**
+ * gst_gl_value_get_texture_target_mask:
+ * @value: an initialized #GValue of type G_TYPE_STRING
+ *
+ * See gst_gl_value_set_texture_target_mask() for what entails a mask
+ *
+ * Returns: the mask of #GstGLTextureTarget's in @value
+ */
+GstGLTextureTarget
+gst_gl_value_get_texture_target_mask (const GValue * targets)
+{
+  guint new_targets = 0;
+
+  g_return_val_if_fail (targets != NULL, GST_GL_TEXTURE_TARGET_NONE);
+
+  if (G_TYPE_CHECK_VALUE_TYPE (targets, G_TYPE_STRING)) {
+    GstGLTextureTarget target;
+    const gchar *str;
+
+    str = g_value_get_string (targets);
+    target = gst_gl_texture_target_from_string (str);
+
+    if (target)
+      new_targets |= 1 << target;
+  } else if (G_TYPE_CHECK_VALUE_TYPE (targets, GST_TYPE_LIST)) {
+    gint j, m;
+
+    m = gst_value_list_get_size (targets);
+    for (j = 0; j < m; j++) {
+      const GValue *val = gst_value_list_get_value (targets, j);
+      GstGLTextureTarget target;
+      const gchar *str;
+
+      str = g_value_get_string (val);
+      target = gst_gl_texture_target_from_string (str);
+      if (target)
+        new_targets |= 1 << target;
+    }
+  }
+
+  return new_targets;
+}
+
+/**
+ * gst_gl_value_set_texture_target:
+ * @value: an initialized #GValue of type G_TYPE_STRING
+ * @target: a #GstGLTextureTarget's
+ *
+ * Returns: whether the @target could be set on @value
+ */
+gboolean
+gst_gl_value_set_texture_target (GValue * value, GstGLTextureTarget target)
+{
+  g_return_val_if_fail (value != NULL, FALSE);
+  g_return_val_if_fail (target != GST_GL_TEXTURE_TARGET_NONE, FALSE);
+
+  if (target == GST_GL_TEXTURE_TARGET_2D) {
+    g_value_set_static_string (value, GST_GL_TEXTURE_TARGET_2D_STR);
+  } else if (target == GST_GL_TEXTURE_TARGET_RECTANGLE) {
+    g_value_set_static_string (value, GST_GL_TEXTURE_TARGET_RECTANGLE_STR);
+  } else if (target == GST_GL_TEXTURE_TARGET_EXTERNAL_OES) {
+    g_value_set_static_string (value, GST_GL_TEXTURE_TARGET_EXTERNAL_OES_STR);
+  } else {
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+static guint64
+_gst_gl_log2_int64 (guint64 value)
+{
+  guint64 ret = 0;
+
+  while (value >>= 1)
+    ret++;
+
+  return ret;
+}
+
+/**
+ * gst_gl_value_set_texture_target_from_mask:
+ * @value: an uninitialized #GValue
+ * @target_mask: a bitwise mask of #GstGLTextureTarget's
+ *
+ * A mask is a bitwise OR of (1 << target) where target is a valid
+ * #GstGLTextureTarget
+ *
+ * Returns: whether the @target_mask could be set on @value
+ */
+gboolean
+gst_gl_value_set_texture_target_from_mask (GValue * value,
+    GstGLTextureTarget target_mask)
+{
+  g_return_val_if_fail (value != NULL, FALSE);
+  g_return_val_if_fail (target_mask != GST_GL_TEXTURE_TARGET_NONE, FALSE);
+
+  if ((target_mask & (target_mask - 1)) == 0) {
+    /* only one texture target set */
+    g_value_init (value, G_TYPE_STRING);
+    return gst_gl_value_set_texture_target (value,
+        _gst_gl_log2_int64 (target_mask));
+  } else {
+    GValue item = G_VALUE_INIT;
+    gboolean ret = FALSE;
+
+    g_value_init (value, GST_TYPE_LIST);
+    g_value_init (&item, G_TYPE_STRING);
+    if (target_mask & (1 << GST_GL_TEXTURE_TARGET_2D)) {
+      gst_gl_value_set_texture_target (&item, GST_GL_TEXTURE_TARGET_2D);
+      gst_value_list_append_value (value, &item);
+      ret = TRUE;
+    }
+    if (target_mask & (1 << GST_GL_TEXTURE_TARGET_RECTANGLE)) {
+      gst_gl_value_set_texture_target (&item, GST_GL_TEXTURE_TARGET_RECTANGLE);
+      gst_value_list_append_value (value, &item);
+      ret = TRUE;
+    }
+    if (target_mask & (1 << GST_GL_TEXTURE_TARGET_EXTERNAL_OES)) {
+      gst_gl_value_set_texture_target (&item,
+          GST_GL_TEXTURE_TARGET_EXTERNAL_OES);
+      gst_value_list_append_value (value, &item);
+      ret = TRUE;
+    }
+
+    return ret;
+  }
+}
diff --git a/gst-libs/gst/gl/gstglutils.h b/gst-libs/gst/gl/gstglutils.h
index 3c8460b..1c5ab12 100644
--- a/gst-libs/gst/gl/gstglutils.h
+++ b/gst-libs/gst/gl/gstglutils.h
@@ -111,6 +111,11 @@
 GstCaps * gst_gl_caps_replace_all_caps_features (const GstCaps * caps,
     const gchar * feature_name);
 
+gboolean gst_gl_value_set_texture_target_from_mask (GValue * value,
+    GstGLTextureTarget target_mask);
+gboolean gst_gl_value_set_texture_target (GValue * value, GstGLTextureTarget target);
+GstGLTextureTarget gst_gl_value_get_texture_target_mask (const GValue * value);
+
 G_END_DECLS
 
 #endif /* __GST_GL_UTILS_H__ */
diff --git a/gst-libs/gst/gl/gstglviewconvert.c b/gst-libs/gst/gl/gstglviewconvert.c
index c2776cb..9215eb0 100644
--- a/gst-libs/gst/gl/gstglviewconvert.c
+++ b/gst-libs/gst/gl/gstglviewconvert.c
@@ -352,12 +352,16 @@
 
 static gboolean
 _view_convert_set_format (GstGLViewConvert * viewconvert,
-    GstVideoInfo * in_info, GstVideoInfo * out_info)
+    GstVideoInfo * in_info, GstGLTextureTarget from_target,
+    GstVideoInfo * out_info, GstGLTextureTarget to_target)
 {
+  gboolean passthrough;
   g_return_val_if_fail (GST_IS_GL_VIEW_CONVERT (viewconvert), FALSE);
 
   if (gst_video_info_is_equal (in_info, &viewconvert->in_info) &&
-      gst_video_info_is_equal (out_info, &viewconvert->out_info))
+      gst_video_info_is_equal (out_info, &viewconvert->out_info) &&
+      viewconvert->from_texture_target == from_target &&
+      viewconvert->to_texture_target == to_target)
     return TRUE;
 
   if (GST_VIDEO_INFO_FORMAT (in_info) != GST_VIDEO_FORMAT_RGBA ||
@@ -367,12 +371,22 @@
     return FALSE;
   }
 
+  passthrough = gst_video_info_is_equal (in_info, out_info) &&
+      from_target == to_target;
+
+  if (!passthrough && to_target != GST_GL_TEXTURE_TARGET_2D
+      && to_target != GST_GL_TEXTURE_TARGET_RECTANGLE)
+    return FALSE;
+
   /* FIXME: Compare what changed and decide if we need a full reset or not */
   GST_OBJECT_LOCK (viewconvert);
   gst_gl_view_convert_reset (viewconvert);
 
   viewconvert->in_info = *in_info;
   viewconvert->out_info = *out_info;
+  viewconvert->from_texture_target = from_target;
+  viewconvert->to_texture_target = to_target;
+  viewconvert->caps_passthrough = passthrough;
 
   gst_buffer_replace (&viewconvert->priv->primary_in, NULL);
   gst_buffer_replace (&viewconvert->priv->auxilliary_in, NULL);
@@ -397,6 +411,8 @@
 {
   GstVideoInfo in_info, out_info;
   GstCapsFeatures *in_features, *out_features;
+  GstGLTextureTarget from_target = GST_GL_TEXTURE_TARGET_2D;
+  GstGLTextureTarget to_target = GST_GL_TEXTURE_TARGET_2D;
 
   g_return_val_if_fail (GST_IS_GL_VIEW_CONVERT (viewconvert), FALSE);
   g_return_val_if_fail (GST_IS_CAPS (in_caps), FALSE);
@@ -421,7 +437,30 @@
   if (!gst_video_info_from_caps (&out_info, out_caps))
     return FALSE;
 
-  return _view_convert_set_format (viewconvert, &in_info, &out_info);
+  {
+    GstStructure *in_s = gst_caps_get_structure (in_caps, 0);
+    GstStructure *out_s = gst_caps_get_structure (out_caps, 0);
+
+    if (gst_structure_has_field_typed (in_s, "texture-target", G_TYPE_STRING)) {
+      from_target =
+          gst_gl_texture_target_from_string (gst_structure_get_string (in_s,
+              "texture-target"));
+    }
+
+    if (gst_structure_has_field_typed (out_s, "texture-target", G_TYPE_STRING)) {
+      to_target =
+          gst_gl_texture_target_from_string (gst_structure_get_string (out_s,
+              "texture-target"));
+    }
+
+    if (to_target == GST_GL_TEXTURE_TARGET_NONE
+        || from_target == GST_GL_TEXTURE_TARGET_NONE)
+      /* invalid caps */
+      return FALSE;
+  }
+
+  return _view_convert_set_format (viewconvert, &in_info, from_target,
+      &out_info, to_target);
 }
 
 /* Function that can halve the value
@@ -1736,7 +1775,6 @@
       tex_scale[1][0], tex_scale[1][1],
       offsets[0][0], offsets[0][1], offsets[1][0], offsets[1][1]);
   fragment_source_str = _get_shader_string (viewconvert, in_mode, out_mode);
-// g_print ("%s\n", fragment_source_str);
   res = gst_gl_context_gen_shader (viewconvert->context,
       gst_gl_shader_string_vertex_mat4_texture_transform, fragment_source_str,
       &viewconvert->shader);
@@ -2218,7 +2256,8 @@
   if (priv->input_mode == priv->output_mode &&
       priv->input_flags == priv->output_flags &&
       viewconvert->in_info.width == viewconvert->out_info.width &&
-      viewconvert->in_info.height == viewconvert->out_info.height) {
+      viewconvert->in_info.height == viewconvert->out_info.height &&
+      viewconvert->from_texture_target == viewconvert->to_texture_target) {
     /* passthrough - just pass input buffers */
     outbuf = gst_buffer_ref (priv->primary_in);
     if (in_mode == GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME)
@@ -2226,6 +2265,12 @@
     goto done_clear_input;
   }
 
+  /* We can't output to OES textures, they're only supported for passthrough */
+  if (viewconvert->to_texture_target == GST_GL_TEXTURE_TARGET_EXTERNAL_OES) {
+    ret = GST_FLOW_ERROR;
+    goto done_clear_input;
+  }
+
   /* Generate new output buffer(s) */
   gst_gl_context_thread_add (viewconvert->context,
       (GstGLContextThreadFunc) _do_view_convert, viewconvert);
diff --git a/gst-libs/gst/gl/gstglviewconvert.h b/gst-libs/gst/gl/gstglviewconvert.h
index dda2eef..8cfa1b2 100644
--- a/gst-libs/gst/gl/gstglviewconvert.h
+++ b/gst-libs/gst/gl/gstglviewconvert.h
@@ -63,6 +63,7 @@
 
   GstGLTextureTarget from_texture_target;
   GstGLTextureTarget to_texture_target;
+  gboolean caps_passthrough;
 
   gboolean initted;
   gboolean reconfigure;
diff --git a/gst-libs/gst/gl/gstglwindow.c b/gst-libs/gst/gl/gstglwindow.c
index b5175f9..695f4c4 100644
--- a/gst-libs/gst/gl/gstglwindow.c
+++ b/gst-libs/gst/gl/gstglwindow.c
@@ -199,6 +199,7 @@
 
   priv->main_context = g_main_context_new ();
   priv->loop = g_main_loop_new (priv->main_context, FALSE);
+  priv->navigation_loop = NULL;
 }
 
 static void
@@ -329,10 +330,12 @@
   GstGLWindowPrivate *priv = window->priv;
 
   GST_INFO ("quit navigation loop");
-  g_main_loop_quit (window->priv->navigation_loop);
-  /* wait until navigation thread finished */
-  g_thread_join (window->priv->navigation_thread);
-  window->priv->navigation_thread = NULL;
+  if (window->priv->navigation_loop) {
+    g_main_loop_quit (window->priv->navigation_loop);
+    /* wait until navigation thread finished */
+    g_thread_join (window->priv->navigation_thread);
+    window->priv->navigation_thread = NULL;
+  }
 
   if (priv->loop)
     g_main_loop_unref (priv->loop);
diff --git a/gst-libs/gst/gl/utils/gles_versions.h b/gst-libs/gst/gl/utils/gles_versions.h
new file mode 100644
index 0000000..e80bf1e
--- /dev/null
+++ b/gst-libs/gst/gl/utils/gles_versions.h
@@ -0,0 +1,38 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _GLES_VERSIONS_H_
+#define _GLES_VERSIONS_H_
+
+/* list of known OpenGL versions */
+/* *INDENT-OFF* */
+
+static const struct { int major, minor; } gles2_versions[] = {
+   {3, 2},
+   {3, 1},
+   {3, 0},
+
+   {2, 0},
+
+   {0, 0} /* end of list */
+};
+/* *INDENT-ON* */
+
+#endif /* _GLES_VERSIONS_H_ */
diff --git a/gst-libs/gst/gl/utils/opengl_versions.h b/gst-libs/gst/gl/utils/opengl_versions.h
index beeeab6..081caeb 100644
--- a/gst-libs/gst/gl/utils/opengl_versions.h
+++ b/gst-libs/gst/gl/utils/opengl_versions.h
@@ -48,6 +48,7 @@
 
    {0, 0} /* end of list */
 };
+
 /* *INDENT-ON* */
 
 #endif /* _OPENGL_VERSIONS_H_ */
diff --git a/gst-libs/gst/gl/wayland/Makefile.in b/gst-libs/gst/gl/wayland/Makefile.in
index 2f94860..3077fc3 100644
--- a/gst-libs/gst/gl/wayland/Makefile.in
+++ b/gst-libs/gst/gl/wayland/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -296,7 +295,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -318,7 +316,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -340,9 +337,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -504,6 +498,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -517,8 +512,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -605,8 +598,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -658,6 +649,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -678,6 +670,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -715,7 +709,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/gst/gl/wayland/wayland_event_source.h b/gst-libs/gst/gl/wayland/wayland_event_source.h
index 940a5e0..fa20892 100644
--- a/gst-libs/gst/gl/wayland/wayland_event_source.h
+++ b/gst-libs/gst/gl/wayland/wayland_event_source.h
@@ -36,7 +36,7 @@
 GSource * wayland_event_source_new (struct wl_display *display,
                                     struct wl_event_queue *queue);
 
-gint      gst_gl_wl_display_roundtrip_queue (struct wl_display *display,
+G_GNUC_INTERNAL gint      gst_gl_wl_display_roundtrip_queue (struct wl_display *display,
                                              struct wl_event_queue *queue);
 
 #endif /* __WAYLAND_EVENT_SOURCE_H__ */
diff --git a/gst-libs/gst/gl/win32/Makefile.in b/gst-libs/gst/gl/win32/Makefile.in
index eee9164..70c7eac 100644
--- a/gst-libs/gst/gl/win32/Makefile.in
+++ b/gst-libs/gst/gl/win32/Makefile.in
@@ -118,16 +118,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__noinst_HEADERS_DIST) \
@@ -301,7 +300,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -323,7 +321,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -345,9 +342,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -509,6 +503,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -522,8 +517,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -610,8 +603,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -663,6 +654,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -683,6 +675,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -720,7 +714,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/gst/gl/x11/Makefile.in b/gst-libs/gst/gl/x11/Makefile.in
index 77622a2..f3c8835 100644
--- a/gst-libs/gst/gl/x11/Makefile.in
+++ b/gst-libs/gst/gl/x11/Makefile.in
@@ -118,16 +118,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(libgstgl_x11include_HEADERS) \
@@ -330,7 +329,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -352,7 +350,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -374,9 +371,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -538,6 +532,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -551,8 +546,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -639,8 +632,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -692,6 +683,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -712,6 +704,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -749,7 +743,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/gst/gl/x11/gstglwindow_x11.c b/gst-libs/gst/gl/x11/gstglwindow_x11.c
index 43387ac..a330825 100644
--- a/gst-libs/gst/gl/x11/gstglwindow_x11.c
+++ b/gst-libs/gst/gl/x11/gstglwindow_x11.c
@@ -500,7 +500,8 @@
     if (handle_events) {
       XSelectInput (window_x11->device, window_x11->internal_win_id,
           StructureNotifyMask | ExposureMask | VisibilityChangeMask |
-          PointerMotionMask | KeyPressMask | KeyReleaseMask);
+          PointerMotionMask | KeyPressMask | KeyReleaseMask | ButtonPressMask |
+          ButtonReleaseMask);
     } else {
       XSelectInput (window_x11->device, window_x11->internal_win_id,
           StructureNotifyMask | ExposureMask | VisibilityChangeMask);
diff --git a/gst-libs/gst/insertbin/Makefile.am b/gst-libs/gst/insertbin/Makefile.am
index d4d331c..8368f41 100644
--- a/gst-libs/gst/insertbin/Makefile.am
+++ b/gst-libs/gst/insertbin/Makefile.am
@@ -48,7 +48,7 @@
 		--pkg gstreamer-@GST_API_VERSION@ \
 		--pkg gstreamer-base-@GST_API_VERSION@ \
 		--pkg-export gstreamer-insertbin-@GST_API_VERSION@ \
-		--add-init-section="gst_init(NULL,NULL);" \
+		--add-init-section="$(INTROSPECTION_INIT)" \
 		-DGST_USE_UNSTABLE_API \
 		--output $@ \
 		$(gir_headers) \
diff --git a/gst-libs/gst/insertbin/Makefile.in b/gst-libs/gst/insertbin/Makefile.in
index 971b081..50cf73f 100644
--- a/gst-libs/gst/insertbin/Makefile.in
+++ b/gst-libs/gst/insertbin/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am \
@@ -313,7 +312,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -335,7 +333,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -357,9 +354,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -521,6 +515,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -534,8 +529,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -622,8 +615,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -675,6 +666,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -695,6 +687,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -732,7 +726,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -1179,7 +1172,7 @@
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-base-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--pkg-export gstreamer-insertbin-@GST_API_VERSION@ \
-@HAVE_INTROSPECTION_TRUE@		--add-init-section="gst_init(NULL,NULL);" \
+@HAVE_INTROSPECTION_TRUE@		--add-init-section="$(INTROSPECTION_INIT)" \
 @HAVE_INTROSPECTION_TRUE@		-DGST_USE_UNSTABLE_API \
 @HAVE_INTROSPECTION_TRUE@		--output $@ \
 @HAVE_INTROSPECTION_TRUE@		$(gir_headers) \
diff --git a/gst-libs/gst/interfaces/Makefile.in b/gst-libs/gst/interfaces/Makefile.in
index c112c1c..4f273d6 100644
--- a/gst-libs/gst/interfaces/Makefile.in
+++ b/gst-libs/gst/interfaces/Makefile.in
@@ -124,16 +124,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am \
@@ -343,7 +342,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -365,7 +363,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -387,9 +384,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -551,6 +545,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -564,8 +559,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -652,8 +645,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -705,6 +696,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -725,6 +717,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -762,7 +756,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/gst/interfaces/photography.c b/gst-libs/gst/interfaces/photography.c
index 5481037..1799c52 100644
--- a/gst-libs/gst/interfaces/photography.c
+++ b/gst-libs/gst/interfaces/photography.c
@@ -299,8 +299,6 @@
  * Set the noise reduction mode for the #GstElement
  *
  * Returns: %TRUE if setting the value succeeded, %FALSE otherwise
- *
- * Since: 0.10.21
  */
 /**
  * gst_photography_get_noise_reduction:
@@ -310,8 +308,6 @@
  * Get the noise reduction mode for the #GstElement
  *
  * Returns: %TRUE if getting the value succeeded, %FALSE otherwise
- *
- * Since: 0.10.21
  */
 GST_PHOTOGRAPHY_FUNC_TEMPLATE (noise_reduction, GstPhotographyNoiseReduction);
 
diff --git a/gst-libs/gst/interfaces/photography.h b/gst-libs/gst/interfaces/photography.h
index e65c0d9..8c44966 100644
--- a/gst-libs/gst/interfaces/photography.h
+++ b/gst-libs/gst/interfaces/photography.h
@@ -159,8 +159,6 @@
  * remaining noise.
  *
  * Noise Reduction features of a photography capture or filter element.
- *
- * Since: 0.10.21
  */
 typedef enum
 {
diff --git a/gst-libs/gst/mpegts/Makefile.am b/gst-libs/gst/mpegts/Makefile.am
index 2511d49..cd8b8ad 100644
--- a/gst-libs/gst/mpegts/Makefile.am
+++ b/gst-libs/gst/mpegts/Makefile.am
@@ -82,7 +82,7 @@
 		--pkg gstreamer-@GST_API_VERSION@ \
 		--pkg gstreamer-video-@GST_API_VERSION@ \
 		--pkg-export gstreamer-mpegts-@GST_API_VERSION@ \
-		--add-init-section="gst_init(NULL,NULL);" \
+		--add-init-section="$(INTROSPECTION_INIT)" \
 		-DGST_USE_UNSTABLE_API \
 		--output $@ \
 		$(gir_headers) \
diff --git a/gst-libs/gst/mpegts/Makefile.in b/gst-libs/gst/mpegts/Makefile.in
index 942f3e4..3d14247 100644
--- a/gst-libs/gst/mpegts/Makefile.in
+++ b/gst-libs/gst/mpegts/Makefile.in
@@ -126,16 +126,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am \
@@ -351,7 +350,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -373,7 +371,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -395,9 +392,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -559,6 +553,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -572,8 +567,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -660,8 +653,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -713,6 +704,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -733,6 +725,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -770,7 +764,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -1368,7 +1361,7 @@
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-video-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--pkg-export gstreamer-mpegts-@GST_API_VERSION@ \
-@HAVE_INTROSPECTION_TRUE@		--add-init-section="gst_init(NULL,NULL);" \
+@HAVE_INTROSPECTION_TRUE@		--add-init-section="$(INTROSPECTION_INIT)" \
 @HAVE_INTROSPECTION_TRUE@		-DGST_USE_UNSTABLE_API \
 @HAVE_INTROSPECTION_TRUE@		--output $@ \
 @HAVE_INTROSPECTION_TRUE@		$(gir_headers) \
diff --git a/gst-libs/gst/player/Makefile.am b/gst-libs/gst/player/Makefile.am
index 60e8ecf..611d1fc 100644
--- a/gst-libs/gst/player/Makefile.am
+++ b/gst-libs/gst/player/Makefile.am
@@ -57,7 +57,8 @@
 gir_sources=$(patsubst %,$(srcdir)/%, $(libgstplayer_@GST_API_VERSION@_la_SOURCES))
 
 GstPlayer-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstplayer-@GST_API_VERSION@.la
-	$(AM_V_GEN)$(INTROSPECTION_SCANNER) -v --namespace GstPlayer \
+	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+		$(INTROSPECTION_SCANNER) -v --namespace GstPlayer \
 		--nsversion=@GST_API_VERSION@ \
 		--warn-all \
 		--strip-prefix=Gst \
@@ -65,7 +66,7 @@
 		-I$(top_builddir)/gst-libs \
 		--c-include "gst/player/player.h" \
 		--add-include-path=$(top_builddir)/gst-libs \
-		--add-include-path=`$(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
+		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
 		--library-path=$(top_builddir)/gst-libs \
 		--library=libgstplayer-@GST_API_VERSION@.la \
 		--include=Gst-@GST_API_VERSION@ \
@@ -76,7 +77,7 @@
 		--pkg gstreamer-tag-@GST_API_VERSION@ \
 		--pkg gstreamer-pbutils-@GST_API_VERSION@ \
 		--pkg-export gstreamer-player-@GST_API_VERSION@ \
-		--add-init-section="gst_init(NULL,NULL);" \
+		--add-init-section="$(INTROSPECTION_INIT)" \
 		--output $@ \
 		$(gir_headers) \
 		$(gir_sources)
@@ -91,10 +92,11 @@
 typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
 
 %.typelib: %.gir $(INTROSPECTION_COMPILER)
-	$(AM_V_GEN)$(INTROSPECTION_COMPILER) \
+	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+		$(INTROSPECTION_COMPILER) \
 		--includedir=$(srcdir)/gst-libs \
 		--includedir=$(builddir)/gst-libs \
-		--includedir=`$(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
+		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
 		$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
 
 CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
diff --git a/gst-libs/gst/player/Makefile.in b/gst-libs/gst/player/Makefile.in
index 99e4e37..544c785 100644
--- a/gst-libs/gst/player/Makefile.in
+++ b/gst-libs/gst/player/Makefile.in
@@ -118,16 +118,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(libgstplayer_HEADERS) \
@@ -336,7 +335,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -358,7 +356,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -380,9 +377,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -544,6 +538,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -557,8 +552,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -645,8 +638,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -698,6 +689,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -718,6 +710,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -755,7 +749,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -1298,7 +1291,8 @@
 
 
 @HAVE_INTROSPECTION_TRUE@GstPlayer-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstplayer-@GST_API_VERSION@.la
-@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)$(INTROSPECTION_SCANNER) -v --namespace GstPlayer \
+@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+@HAVE_INTROSPECTION_TRUE@		$(INTROSPECTION_SCANNER) -v --namespace GstPlayer \
 @HAVE_INTROSPECTION_TRUE@		--nsversion=@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--warn-all \
 @HAVE_INTROSPECTION_TRUE@		--strip-prefix=Gst \
@@ -1306,7 +1300,7 @@
 @HAVE_INTROSPECTION_TRUE@		-I$(top_builddir)/gst-libs \
 @HAVE_INTROSPECTION_TRUE@		--c-include "gst/player/player.h" \
 @HAVE_INTROSPECTION_TRUE@		--add-include-path=$(top_builddir)/gst-libs \
-@HAVE_INTROSPECTION_TRUE@		--add-include-path=`$(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
+@HAVE_INTROSPECTION_TRUE@		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
 @HAVE_INTROSPECTION_TRUE@		--library-path=$(top_builddir)/gst-libs \
 @HAVE_INTROSPECTION_TRUE@		--library=libgstplayer-@GST_API_VERSION@.la \
 @HAVE_INTROSPECTION_TRUE@		--include=Gst-@GST_API_VERSION@ \
@@ -1317,16 +1311,17 @@
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-tag-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--pkg gstreamer-pbutils-@GST_API_VERSION@ \
 @HAVE_INTROSPECTION_TRUE@		--pkg-export gstreamer-player-@GST_API_VERSION@ \
-@HAVE_INTROSPECTION_TRUE@		--add-init-section="gst_init(NULL,NULL);" \
+@HAVE_INTROSPECTION_TRUE@		--add-init-section="$(INTROSPECTION_INIT)" \
 @HAVE_INTROSPECTION_TRUE@		--output $@ \
 @HAVE_INTROSPECTION_TRUE@		$(gir_headers) \
 @HAVE_INTROSPECTION_TRUE@		$(gir_sources)
 
 @HAVE_INTROSPECTION_TRUE@%.typelib: %.gir $(INTROSPECTION_COMPILER)
-@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)$(INTROSPECTION_COMPILER) \
+@HAVE_INTROSPECTION_TRUE@	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+@HAVE_INTROSPECTION_TRUE@		$(INTROSPECTION_COMPILER) \
 @HAVE_INTROSPECTION_TRUE@		--includedir=$(srcdir)/gst-libs \
 @HAVE_INTROSPECTION_TRUE@		--includedir=$(builddir)/gst-libs \
-@HAVE_INTROSPECTION_TRUE@		--includedir=`$(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
+@HAVE_INTROSPECTION_TRUE@		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
 @HAVE_INTROSPECTION_TRUE@		$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/gst-libs/gst/player/gstplayer.c b/gst-libs/gst/player/gstplayer.c
index 94892b7..d50080e 100644
--- a/gst-libs/gst/player/gstplayer.c
+++ b/gst-libs/gst/player/gstplayer.c
@@ -2491,17 +2491,6 @@
 
 /**
  * gst_player_new:
- *
- * Returns: a new #GstPlayer instance
- */
-GstPlayer *
-gst_player_new (void)
-{
-  return gst_player_new_full (NULL, NULL);
-}
-
-/**
- * gst_player_new_full:
  * @video_renderer: (transfer full) (allow-none): GstPlayerVideoRenderer to use
  * @signal_dispatcher: (transfer full) (allow-none): GstPlayerSignalDispatcher to use
  *
@@ -2516,7 +2505,7 @@
  * Returns: a new #GstPlayer instance
  */
 GstPlayer *
-gst_player_new_full (GstPlayerVideoRenderer * video_renderer,
+gst_player_new (GstPlayerVideoRenderer * video_renderer,
     GstPlayerSignalDispatcher * signal_dispatcher)
 {
   static GOnce once = G_ONCE_INIT;
@@ -2557,7 +2546,8 @@
   if (self->current_state < GST_STATE_PAUSED)
     change_state (self, GST_PLAYER_STATE_BUFFERING);
 
-  if (self->current_state >= GST_STATE_PAUSED && !self->is_eos) {
+  if (self->current_state >= GST_STATE_PAUSED && !self->is_eos
+      && self->buffering >= 100) {
     state_ret = gst_element_set_state (self->playbin, GST_STATE_PLAYING);
   } else {
     state_ret = gst_element_set_state (self->playbin, GST_STATE_PAUSED);
diff --git a/gst-libs/gst/player/gstplayer.h b/gst-libs/gst/player/gstplayer.h
index 29287bd..3391b0f 100644
--- a/gst-libs/gst/player/gstplayer.h
+++ b/gst-libs/gst/player/gstplayer.h
@@ -97,8 +97,7 @@
 
 GType        gst_player_get_type                      (void);
 
-GstPlayer *  gst_player_new                           (void);
-GstPlayer *  gst_player_new_full                      (GstPlayerVideoRenderer * video_renderer, GstPlayerSignalDispatcher * signal_dispatcher);
+GstPlayer *  gst_player_new                           (GstPlayerVideoRenderer * video_renderer, GstPlayerSignalDispatcher * signal_dispatcher);
 
 void         gst_player_play                          (GstPlayer    * player);
 void         gst_player_pause                         (GstPlayer    * player);
diff --git a/gst-libs/gst/uridownloader/Makefile.in b/gst-libs/gst/uridownloader/Makefile.in
index 689d555..c71fae9 100644
--- a/gst-libs/gst/uridownloader/Makefile.in
+++ b/gst-libs/gst/uridownloader/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am \
@@ -311,7 +310,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -333,7 +331,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -355,9 +352,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -519,6 +513,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -532,8 +527,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -620,8 +613,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -673,6 +664,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -693,6 +685,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -730,7 +724,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-libs/gst/video/Makefile.am b/gst-libs/gst/video/Makefile.am
index 5108281..6cdad6f 100644
--- a/gst-libs/gst/video/Makefile.am
+++ b/gst-libs/gst/video/Makefile.am
@@ -23,4 +23,5 @@
 
 libgstbadvideo_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
 
-noinst_HEADERS = gstvideoaggregatorpad.h gstvideoaggregator.h
+libgstvideo_@GST_API_VERSION@includedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/video
+libgstvideo_@GST_API_VERSION@include_HEADERS = gstvideoaggregatorpad.h gstvideoaggregator.h
diff --git a/gst-libs/gst/video/Makefile.in b/gst-libs/gst/video/Makefile.in
index aeaf50b..df117f4 100644
--- a/gst-libs/gst/video/Makefile.in
+++ b/gst-libs/gst/video/Makefile.in
@@ -116,19 +116,19 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+DIST_COMMON = $(srcdir)/Makefile.am \
+	$(libgstvideo_@GST_API_VERSION@include_HEADERS) \
 	$(am__DIST_COMMON)
 mkinstalldirs = $(install_sh) -d
 CONFIG_HEADER = $(top_builddir)/config.h
@@ -161,7 +161,8 @@
     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
-am__installdirs = "$(DESTDIR)$(libdir)"
+am__installdirs = "$(DESTDIR)$(libdir)" \
+	"$(DESTDIR)$(libgstvideo_@GST_API_VERSION@includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libgstbadvideo_@GST_API_VERSION@_la_DEPENDENCIES = $(top_builddir)/gst-libs/gst/base/libgstbadbase-$(GST_API_VERSION).la \
@@ -225,26 +226,8 @@
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
-HEADERS = $(noinst_HEADERS)
+HEADERS = $(libgstvideo_@GST_API_VERSION@include_HEADERS)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
 am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
@@ -331,7 +314,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -353,7 +335,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -375,9 +356,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -539,6 +517,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -552,8 +531,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -640,8 +617,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -693,6 +668,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -713,6 +689,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -750,7 +728,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -812,7 +789,8 @@
 	$(GST_BASE_LIBS) $(GST_LIBS) $(ORC_LIBS) $(LIBM)
 
 libgstbadvideo_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
-noinst_HEADERS = gstvideoaggregatorpad.h gstvideoaggregator.h
+libgstvideo_@GST_API_VERSION@includedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/video
+libgstvideo_@GST_API_VERSION@include_HEADERS = gstvideoaggregatorpad.h gstvideoaggregator.h
 all: all-am
 
 .SUFFIXES:
@@ -929,58 +907,33 @@
 
 clean-libtool:
 	-rm -rf .libs _libs
+install-libgstvideo_@GST_API_VERSION@includeHEADERS: $(libgstvideo_@GST_API_VERSION@include_HEADERS)
+	@$(NORMAL_INSTALL)
+	@list='$(libgstvideo_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstvideo_@GST_API_VERSION@includedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libgstvideo_@GST_API_VERSION@includedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libgstvideo_@GST_API_VERSION@includedir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libgstvideo_@GST_API_VERSION@includedir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(libgstvideo_@GST_API_VERSION@includedir)" || exit $$?; \
+	done
 
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
+uninstall-libgstvideo_@GST_API_VERSION@includeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(libgstvideo_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstvideo_@GST_API_VERSION@includedir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	dir='$(DESTDIR)$(libgstvideo_@GST_API_VERSION@includedir)'; $(am__uninstall_files_from_dir)
+tags TAGS:
 
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
+ctags CTAGS:
 
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
+cscope cscopelist:
 
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -1016,7 +969,7 @@
 check: check-am
 all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
-	for dir in "$(DESTDIR)$(libdir)"; do \
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libgstvideo_@GST_API_VERSION@includedir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-am
@@ -1058,8 +1011,7 @@
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
+distclean-am: clean-am distclean-compile distclean-generic
 
 dvi: dvi-am
 
@@ -1073,7 +1025,7 @@
 
 info-am:
 
-install-data-am:
+install-data-am: install-libgstvideo_@GST_API_VERSION@includeHEADERS
 
 install-dvi: install-dvi-am
 
@@ -1119,23 +1071,27 @@
 
 ps-am:
 
-uninstall-am: uninstall-libLTLIBRARIES
+uninstall-am: uninstall-libLTLIBRARIES \
+	uninstall-libgstvideo_@GST_API_VERSION@includeHEADERS
 
 .MAKE: install-am install-strip
 
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-libLTLIBRARIES install-man install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES
+.PHONY: all all-am check check-am clean clean-generic \
+	clean-libLTLIBRARIES clean-libtool cscopelist-am ctags-am \
+	distclean distclean-compile distclean-generic \
+	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am \
+	install-libLTLIBRARIES \
+	install-libgstvideo_@GST_API_VERSION@includeHEADERS \
+	install-man install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+	uninstall-am uninstall-libLTLIBRARIES \
+	uninstall-libgstvideo_@GST_API_VERSION@includeHEADERS
 
 .PRECIOUS: Makefile
 
diff --git a/gst-libs/gst/video/gstvideoaggregator.c b/gst-libs/gst/video/gstvideoaggregator.c
index d3a9ca9..2b0c876 100644
--- a/gst-libs/gst/video/gstvideoaggregator.c
+++ b/gst-libs/gst/video/gstvideoaggregator.c
@@ -532,86 +532,6 @@
   g_hash_table_unref (formats_table);
 }
 
-/* WITH GST_VIDEO_AGGREGATOR_LOCK TAKEN
- * NOTE: After calling that method you **have to** call
- *       gst_videoaggregator_update_src_caps (without releasing
- *       the GST_VIDEO_AGGREGATOR_LOCK in between)
- */
-static gboolean
-gst_videoaggregator_update_converters (GstVideoAggregator * vagg)
-{
-  GList *tmp;
-  GstVideoFormat best_format;
-  GstVideoInfo best_info;
-  gboolean at_least_one_alpha = FALSE;
-  GstCaps *downstream_caps;
-  GstAggregator *agg = GST_AGGREGATOR (vagg);
-
-  GstVideoAggregatorClass *vagg_class = GST_VIDEO_AGGREGATOR_GET_CLASS (vagg);
-  GstVideoAggregatorPadClass *vaggpad_class = g_type_class_peek
-      (GST_AGGREGATOR_GET_CLASS (vagg)->sinkpads_type);
-
-  best_format = GST_VIDEO_FORMAT_UNKNOWN;
-  gst_video_info_init (&best_info);
-
-  downstream_caps = gst_pad_get_allowed_caps (agg->srcpad);
-
-  if (!downstream_caps || gst_caps_is_empty (downstream_caps)) {
-    GST_INFO_OBJECT (vagg, "No downstream caps found %"
-        GST_PTR_FORMAT, downstream_caps);
-    if (downstream_caps)
-      gst_caps_unref (downstream_caps);
-    return FALSE;
-  }
-
-
-  if (vagg_class->find_best_format) {
-    vagg_class->find_best_format (vagg, downstream_caps, &best_info,
-        &at_least_one_alpha);
-
-    best_format = GST_VIDEO_INFO_FORMAT (&best_info);
-  }
-
-  if (best_format == GST_VIDEO_FORMAT_UNKNOWN) {
-    downstream_caps = gst_caps_fixate (downstream_caps);
-    gst_video_info_from_caps (&best_info, downstream_caps);
-    best_format = GST_VIDEO_INFO_FORMAT (&best_info);
-  }
-
-  gst_caps_unref (downstream_caps);
-
-  if (at_least_one_alpha
-      && !(best_info.finfo->flags & GST_VIDEO_FORMAT_FLAG_ALPHA)) {
-    GST_ELEMENT_ERROR (vagg, CORE, NEGOTIATION,
-        ("At least one of the input pads contains alpha, but downstream can't support alpha."),
-        ("Either convert your inputs to not contain alpha or add a videoconvert after the aggregator"));
-    return FALSE;
-  }
-
-  vagg->info = best_info;
-
-  GST_DEBUG_OBJECT (vagg,
-      "The output format will now be : %d with chroma : %s",
-      best_format, gst_video_chroma_to_string (best_info.chroma_site));
-
-  if (vaggpad_class->set_info) {
-    GST_OBJECT_LOCK (vagg);
-    /* Then browse the sinks once more, setting or unsetting conversion if needed */
-    for (tmp = GST_ELEMENT (vagg)->sinkpads; tmp; tmp = tmp->next) {
-      GstVideoAggregatorPad *pad = GST_VIDEO_AGGREGATOR_PAD (tmp->data);
-
-      if (!vaggpad_class->set_info (pad, vagg, &pad->info, &best_info)) {
-        GST_OBJECT_UNLOCK (vagg);
-
-        return FALSE;
-      }
-    }
-    GST_OBJECT_UNLOCK (vagg);
-  }
-
-  return TRUE;
-}
-
 /* WITH GST_VIDEO_AGGREGATOR_LOCK TAKEN */
 static gboolean
 gst_videoaggregator_src_setcaps (GstVideoAggregator * vagg, GstCaps * caps)
@@ -662,25 +582,22 @@
   return ret;
 }
 
-/* WITH GST_VIDEO_AGGREGATOR_LOCK TAKEN */
-static gboolean
-gst_videoaggregator_update_src_caps (GstVideoAggregator * vagg)
+static GstCaps *
+gst_videoaggregator_default_fixate_caps (GstVideoAggregator * vagg,
+    GstCaps * caps)
 {
-  GList *l;
   gint best_width = -1, best_height = -1;
-  gdouble best_fps = -1, cur_fps;
   gint best_fps_n = -1, best_fps_d = -1;
-  gboolean ret = TRUE;
-  GstElementClass *klass = GST_ELEMENT_GET_CLASS (vagg);
-  GstVideoAggregatorClass *vagg_klass = (GstVideoAggregatorClass *) klass;
-  GstAggregator *agg = GST_AGGREGATOR (vagg);
+  gdouble best_fps = -1.;
+  GstStructure *s;
+  GList *l;
 
   GST_OBJECT_LOCK (vagg);
   for (l = GST_ELEMENT (vagg)->sinkpads; l; l = l->next) {
     GstVideoAggregatorPad *mpad = l->data;
-    gint this_width, this_height;
     gint fps_n, fps_d;
     gint width, height;
+    gdouble cur_fps;
 
     fps_n = GST_VIDEO_INFO_FPS_N (&mpad->info);
     fps_d = GST_VIDEO_INFO_FPS_D (&mpad->info);
@@ -690,13 +607,10 @@
     if (width == 0 || height == 0)
       continue;
 
-    this_width = width;
-    this_height = height;
-
-    if (best_width < this_width)
-      best_width = this_width;
-    if (best_height < this_height)
-      best_height = this_height;
+    if (best_width < width)
+      best_width = width;
+    if (best_height < height)
+      best_height = height;
 
     if (fps_d == 0)
       cur_fps = 0.0;
@@ -717,88 +631,142 @@
     best_fps = 25.0;
   }
 
-  if (best_width > 0 && best_height > 0 && best_fps > 0) {
-    GstCaps *caps, *peercaps, *info_caps;
-    GstStructure *s;
-    GstVideoInfo info;
-    int i;
+  s = gst_caps_get_structure (caps, 0);
+  gst_structure_fixate_field_nearest_int (s, "width", best_width);
+  gst_structure_fixate_field_nearest_int (s, "height", best_height);
+  gst_structure_fixate_field_nearest_fraction (s, "framerate", best_fps_n,
+      best_fps_d);
+  if (gst_structure_has_field (s, "pixel-aspect-ratio"))
+    gst_structure_fixate_field_nearest_fraction (s, "pixel-aspect-ratio", 1, 1);
+  caps = gst_caps_fixate (caps);
 
-    /* Initialize the video info with our target format and
-     * the best width and height and framerate. Then copy over
-     * all other fields as we negotiated them before
-     */
-    gst_video_info_set_format (&info, GST_VIDEO_INFO_FORMAT (&vagg->info),
-        best_width, best_height);
-    info.fps_n = best_fps_n;
-    info.fps_d = best_fps_d;
-    info.chroma_site = vagg->info.chroma_site;
-    info.par_n = vagg->info.par_n;
-    info.par_d = vagg->info.par_d;
-    info.colorimetry = vagg->info.colorimetry;
-    info.flags = vagg->info.flags;
-    info.interlace_mode = vagg->info.interlace_mode;
+  return caps;
+}
 
-    info_caps = gst_video_info_to_caps (&info);
+static GstCaps *
+gst_videoaggregator_default_update_caps (GstVideoAggregator * vagg,
+    GstCaps * caps, GstCaps * filter)
+{
+  GstCaps *ret;
 
-    if (vagg_klass->update_caps) {
-      if (!(caps = vagg_klass->update_caps (vagg, info_caps))) {
-        gst_caps_unref (info_caps);
-        ret = FALSE;
-        goto done;
-      }
-      gst_caps_unref (info_caps);
-    } else {
-      caps = info_caps;
+  if (filter) {
+    ret = gst_caps_intersect (caps, filter);
+  } else {
+    ret = gst_caps_ref (caps);
+  }
+
+  return ret;
+}
+
+/* WITH GST_VIDEO_AGGREGATOR_LOCK TAKEN */
+static gboolean
+gst_videoaggregator_update_src_caps (GstVideoAggregator * vagg)
+{
+  GstVideoAggregatorClass *vagg_klass = GST_VIDEO_AGGREGATOR_GET_CLASS (vagg);
+  GstVideoAggregatorPadClass *vaggpad_klass = g_type_class_peek
+      (GST_AGGREGATOR_GET_CLASS (vagg)->sinkpads_type);
+  GstAggregator *agg = GST_AGGREGATOR (vagg);
+  gboolean ret = TRUE, at_least_one_pad_configured = FALSE;
+  GstVideoFormat best_format;
+  GstVideoInfo best_info;
+  gboolean at_least_one_alpha = FALSE;
+  GstCaps *downstream_caps;
+  GList *l;
+
+  best_format = GST_VIDEO_FORMAT_UNKNOWN;
+  gst_video_info_init (&best_info);
+
+  downstream_caps = gst_pad_get_allowed_caps (agg->srcpad);
+
+  if (!downstream_caps || gst_caps_is_empty (downstream_caps)) {
+    GST_INFO_OBJECT (vagg, "No downstream caps found %"
+        GST_PTR_FORMAT, downstream_caps);
+    if (downstream_caps)
+      gst_caps_unref (downstream_caps);
+    return FALSE;
+  }
+
+  if (vagg_klass->find_best_format) {
+    vagg_klass->find_best_format (vagg, downstream_caps, &best_info,
+        &at_least_one_alpha);
+
+    best_format = GST_VIDEO_INFO_FORMAT (&best_info);
+  }
+
+  if (best_format == GST_VIDEO_FORMAT_UNKNOWN) {
+    GstCaps *tmp = gst_caps_fixate (gst_caps_ref (downstream_caps));
+    gst_video_info_from_caps (&best_info, tmp);
+    best_format = GST_VIDEO_INFO_FORMAT (&best_info);
+    gst_caps_unref (tmp);
+  }
+
+  if (at_least_one_alpha
+      && !(best_info.finfo->flags & GST_VIDEO_FORMAT_FLAG_ALPHA)) {
+    GST_ELEMENT_ERROR (vagg, CORE, NEGOTIATION,
+        ("At least one of the input pads contains alpha, but downstream can't support alpha."),
+        ("Either convert your inputs to not contain alpha or add a videoconvert after the aggregator"));
+    return FALSE;
+  }
+
+  GST_DEBUG_OBJECT (vagg,
+      "The output format will now be : %d with chroma : %s",
+      best_format, gst_video_chroma_to_string (best_info.chroma_site));
+
+  GST_OBJECT_LOCK (vagg);
+  for (l = GST_ELEMENT (vagg)->sinkpads; l; l = l->next) {
+    GstVideoAggregatorPad *mpad = l->data;
+
+    if (GST_VIDEO_INFO_WIDTH (&mpad->info) == 0
+        || GST_VIDEO_INFO_HEIGHT (&mpad->info) == 0)
+      continue;
+
+    at_least_one_pad_configured = TRUE;
+    break;
+  }
+  GST_OBJECT_UNLOCK (vagg);
+
+  if (at_least_one_pad_configured) {
+    GstCaps *caps, *peercaps;
+
+    peercaps = gst_pad_peer_query_caps (agg->srcpad, NULL);
+
+    g_assert (vagg_klass->update_caps);
+    if (!(caps = vagg_klass->update_caps (vagg, downstream_caps, peercaps))) {
+      GST_WARNING_OBJECT (vagg, "Subclass failed to update provided caps");
+      gst_caps_unref (downstream_caps);
+      if (peercaps)
+        gst_caps_unref (peercaps);
+      ret = FALSE;
+      goto done;
     }
-
-    /* If the sub-class allows it, allow size/framerate changes */
-    if (!vagg_klass->preserve_update_caps_result) {
-      s = gst_caps_get_structure (caps, 0);
-      gst_structure_get (s, "width", G_TYPE_INT, &best_width, "height",
-          G_TYPE_INT, &best_height, NULL);
-
-      for (i = 0; i < gst_caps_get_size (caps); i++) {
-        s = gst_caps_get_structure (caps, i);
-        gst_structure_set (s, "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
-            "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, "framerate",
-            GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
-      }
-    }
-
-    peercaps = gst_pad_peer_query_caps (agg->srcpad, caps);
-    if (peercaps) {
-      GstCaps *tmp;
-
-      tmp = gst_caps_intersect (caps, peercaps);
-      GST_DEBUG_OBJECT (vagg, "intersecting %" GST_PTR_FORMAT
-          " with peer caps %" GST_PTR_FORMAT " result %" GST_PTR_FORMAT, caps,
-          peercaps, tmp);
-
-      gst_caps_unref (caps);
+    gst_caps_unref (downstream_caps);
+    if (peercaps)
       gst_caps_unref (peercaps);
-      caps = tmp;               /* pass ownership */
-      if (gst_caps_is_empty (caps)) {
-        GST_DEBUG_OBJECT (vagg, "empty caps");
+
+    if (!gst_caps_is_fixed (caps)) {
+      g_assert (vagg_klass->fixate_caps);
+
+      caps = gst_caps_make_writable (caps);
+      if (!(caps = vagg_klass->fixate_caps (vagg, caps))) {
+        GST_WARNING_OBJECT (vagg, "Subclass failed to fixate provided caps");
         ret = FALSE;
-        gst_caps_unref (caps);
         goto done;
       }
+    }
 
-      caps = gst_caps_truncate (caps);
-      s = gst_caps_get_structure (caps, 0);
-      gst_structure_fixate_field_nearest_int (s, "width", best_width);
-      gst_structure_fixate_field_nearest_int (s, "height", best_height);
-      gst_structure_fixate_field_nearest_fraction (s, "framerate", best_fps_n,
-          best_fps_d);
-      gst_structure_fixate_field_nearest_fraction (s, "pixel-aspect-ratio", 1,
-          1);
+    gst_video_info_from_caps (&vagg->info, caps);
 
-      /* fixate the the rest of the fields */
-      caps = gst_caps_fixate (caps);
+    if (vaggpad_klass->set_info) {
+      /* Then browse the sinks once more, setting or unsetting conversion if needed */
+      for (l = GST_ELEMENT (vagg)->sinkpads; l; l = l->next) {
+        GstVideoAggregatorPad *pad = GST_VIDEO_AGGREGATOR_PAD (l->data);
 
-      gst_structure_get_int (s, "width", &info.width);
-      gst_structure_get_int (s, "height", &info.height);
-      gst_structure_get_fraction (s, "framerate", &info.fps_n, &info.fps_d);
+        if (!vaggpad_klass->set_info (pad, vagg, &pad->info, &vagg->info)) {
+          GST_OBJECT_UNLOCK (vagg);
+
+          return FALSE;
+        }
+      }
     }
 
     if (gst_videoaggregator_src_setcaps (vagg, caps)) {
@@ -1414,10 +1382,7 @@
       || gst_pad_check_reconfigure (GST_AGGREGATOR_SRC_PAD (vagg))) {
     gboolean ret;
 
-    ret = gst_videoaggregator_update_converters (vagg);
-    if (ret)
-      ret = gst_videoaggregator_update_src_caps (vagg);
-
+    ret = gst_videoaggregator_update_src_caps (vagg);
     if (!ret) {
       if (timeout && gst_pad_needs_reconfigure (GST_AGGREGATOR_SRC_PAD (vagg))) {
         guint64 frame_duration;
@@ -2099,6 +2064,8 @@
 
   klass->find_best_format = gst_videoaggreagator_find_best_format;
   klass->get_output_buffer = gst_videoaggregator_get_output_buffer;
+  klass->update_caps = gst_videoaggregator_default_update_caps;
+  klass->fixate_caps = gst_videoaggregator_default_fixate_caps;
 
   /* Register the pad class */
   g_type_class_ref (GST_TYPE_VIDEO_AGGREGATOR_PAD);
diff --git a/gst-libs/gst/video/gstvideoaggregator.h b/gst-libs/gst/video/gstvideoaggregator.h
index f95d0d2..86df0b6 100644
--- a/gst-libs/gst/video/gstvideoaggregator.h
+++ b/gst-libs/gst/video/gstvideoaggregator.h
@@ -73,6 +73,9 @@
  * @update_caps:              Optional.
  *                            Lets subclasses update the #GstCaps representing
  *                            the src pad caps before usage.  Return %NULL to indicate failure.
+ * @fixate_caps:              Fixate and return the src pad caps provided.  The function takes
+ *                            ownership of @caps and returns a fixated version of
+ *                            @caps. @caps is not guaranteed to be writable.
  * @aggregate_frames:         Lets subclasses aggregate frames that are ready. Subclasses
  *                            should iterate the GstElement.sinkpads and use the already
  *                            mapped #GstVideoFrame from GstVideoAggregatorPad.aggregated_frame
@@ -86,9 +89,6 @@
  *                            Notifies subclasses what caps format has been negotiated
  * @find_best_format:         Optional.
  *                            Lets subclasses decide of the best common format to use.
- * @preserve_update_caps_result: Sub-classes should set this to true if the return result
- *                               of the update_caps() method should not be further modified
- *                               by GstVideoAggregator by removing fields.
  **/
 struct _GstVideoAggregatorClass
 {
@@ -97,6 +97,9 @@
 
   /*< public >*/
   GstCaps *          (*update_caps)               (GstVideoAggregator *  videoaggregator,
+                                                   GstCaps            *  caps,
+                                                   GstCaps            *  filter_caps);
+  GstCaps *          (*fixate_caps)               (GstVideoAggregator *  videoaggregator,
                                                    GstCaps            *  caps);
   GstFlowReturn      (*aggregate_frames)          (GstVideoAggregator *  videoaggregator,
                                                    GstBuffer          *  outbuffer);
@@ -109,8 +112,6 @@
                                                    GstVideoInfo       *  best_info,
                                                    gboolean           *  at_least_one_alpha);
 
-  gboolean           preserve_update_caps_result;
-
   GstCaps           *sink_non_alpha_caps;
 
   /* < private > */
diff --git a/gst-libs/gst/wayland/Makefile.in b/gst-libs/gst/wayland/Makefile.in
index 9c4475a..fd0c39e 100644
--- a/gst-libs/gst/wayland/Makefile.in
+++ b/gst-libs/gst/wayland/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst-plugins-bad.doap b/gst-plugins-bad.doap
index 58380e8..0c208af 100644
--- a/gst-plugins-bad.doap
+++ b/gst-plugins-bad.doap
@@ -35,6 +35,16 @@
 
  <release>
   <Version>
+   <revision>1.7.2</revision>
+   <branch>master</branch>
+   <name></name>
+   <created>2016-02-19</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.7.2.tar.xz" />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.7.1</revision>
    <branch>master</branch>
    <name></name>
diff --git a/gst-plugins-bad.spec b/gst-plugins-bad.spec
index 6061164..b077dd0 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.7.1
+Version: 1.7.2
 Release: 1.gst
 # The freeze and nfs plugins are LGPLv2 (only)
 License: LGPLv2+ and LGPLv2
@@ -223,7 +223,6 @@
 %{_libdir}/gstreamer-%{majorminor}/libgstfreeverb.so
 %{_libdir}/gstreamer-%{majorminor}/libgstivtc.so
 %{_libdir}/gstreamer-%{majorminor}/libgstmidi.so
-%{_libdir}/gstreamer-%{majorminor}/libgstmpg123.so
 %{_libdir}/gstreamer-%{majorminor}/libgstrfbsrc.so
 %{_libdir}/gstreamer-%{majorminor}/libgstsmoothstreaming.so
 %{_libdir}/gstreamer-%{majorminor}/libgstvideofiltersbad.so
diff --git a/gst-plugins-bad.spec.in b/gst-plugins-bad.spec.in
index 0e717bb..4fb17d7 100644
--- a/gst-plugins-bad.spec.in
+++ b/gst-plugins-bad.spec.in
@@ -223,7 +223,6 @@
 %{_libdir}/gstreamer-%{majorminor}/libgstfreeverb.so
 %{_libdir}/gstreamer-%{majorminor}/libgstivtc.so
 %{_libdir}/gstreamer-%{majorminor}/libgstmidi.so
-%{_libdir}/gstreamer-%{majorminor}/libgstmpg123.so
 %{_libdir}/gstreamer-%{majorminor}/libgstrfbsrc.so
 %{_libdir}/gstreamer-%{majorminor}/libgstsmoothstreaming.so
 %{_libdir}/gstreamer-%{majorminor}/libgstvideofiltersbad.so
diff --git a/gst/Makefile.in b/gst/Makefile.in
index 60e8521..46ae996 100644
--- a/gst/Makefile.in
+++ b/gst/Makefile.in
@@ -119,16 +119,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -302,7 +301,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -324,7 +322,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -346,9 +343,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -510,6 +504,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -523,8 +518,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -611,8 +604,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -664,6 +655,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -684,6 +676,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -721,7 +715,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/accurip/Makefile.in b/gst/accurip/Makefile.in
index 7d1716d..eb806a0 100644
--- a/gst/accurip/Makefile.in
+++ b/gst/accurip/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/adpcmdec/Makefile.in b/gst/adpcmdec/Makefile.in
index 6a80510..9599849 100644
--- a/gst/adpcmdec/Makefile.in
+++ b/gst/adpcmdec/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -320,7 +319,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -342,7 +340,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -364,9 +361,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -528,6 +522,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -541,8 +536,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -629,8 +622,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -682,6 +673,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -702,6 +694,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -739,7 +733,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/adpcmenc/Makefile.in b/gst/adpcmenc/Makefile.in
index e2b24e5..60872cb 100644
--- a/gst/adpcmenc/Makefile.in
+++ b/gst/adpcmenc/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -320,7 +319,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -342,7 +340,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -364,9 +361,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -528,6 +522,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -541,8 +536,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -629,8 +622,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -682,6 +673,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -702,6 +694,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -739,7 +733,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/aiff/Makefile.in b/gst/aiff/Makefile.in
index 3e6e95c..a48bf26 100644
--- a/gst/aiff/Makefile.in
+++ b/gst/aiff/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/asfmux/Makefile.in b/gst/asfmux/Makefile.in
index dbc95c7..84cdcb9 100644
--- a/gst/asfmux/Makefile.in
+++ b/gst/asfmux/Makefile.in
@@ -118,16 +118,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -328,7 +327,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -350,7 +348,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -372,9 +369,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -536,6 +530,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -549,8 +544,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -637,8 +630,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -690,6 +681,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -710,6 +702,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -747,7 +741,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/audiofxbad/Makefile.in b/gst/audiofxbad/Makefile.in
index f6b89ee..028d8c9 100644
--- a/gst/audiofxbad/Makefile.in
+++ b/gst/audiofxbad/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -322,7 +321,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -344,7 +342,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -366,9 +363,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -530,6 +524,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -543,8 +538,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -631,8 +624,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -684,6 +675,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -704,6 +696,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -741,7 +735,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/audiomixer/Makefile.am b/gst/audiomixer/Makefile.am
index a126f90..9104c1b 100644
--- a/gst/audiomixer/Makefile.am
+++ b/gst/audiomixer/Makefile.am
@@ -4,7 +4,7 @@
 include $(top_srcdir)/common/orc.mak
 
 
-libgstaudiomixer_la_SOURCES = gstaudiomixer.c gstaudioaggregator.c gstaudiointerleave.c
+libgstaudiomixer_la_SOURCES = gstaudiomixer.c gstaudiointerleave.c
 nodist_libgstaudiomixer_la_SOURCES = $(ORC_NODIST_SOURCES)
 libgstaudiomixer_la_CFLAGS = \
 	-I$(top_srcdir)/gst-libs \
@@ -14,9 +14,10 @@
 libgstaudiomixer_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstaudiomixer_la_LIBADD =  \
 		$(top_builddir)/gst-libs/gst/base/libgstbadbase-$(GST_API_VERSION).la \
+		$(top_builddir)/gst-libs/gst/audio/libgstbadaudio-$(GST_API_VERSION).la \
 		$(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_API_VERSION@ \
 		$(GST_BASE_LIBS) $(GST_LIBS) $(ORC_LIBS)
 libgstaudiomixer_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 
-noinst_HEADERS = gstaudiomixer.h gstaudioaggregator.h gstaudiointerleave.h
+noinst_HEADERS = gstaudiomixer.h gstaudiointerleave.h
 
diff --git a/gst/audiomixer/Makefile.in b/gst/audiomixer/Makefile.in
index 3924cc4..389c4d2 100644
--- a/gst/audiomixer/Makefile.in
+++ b/gst/audiomixer/Makefile.in
@@ -138,16 +138,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -187,10 +186,10 @@
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 libgstaudiomixer_la_DEPENDENCIES = $(top_builddir)/gst-libs/gst/base/libgstbadbase-$(GST_API_VERSION).la \
+	$(top_builddir)/gst-libs/gst/audio/libgstbadaudio-$(GST_API_VERSION).la \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 am_libgstaudiomixer_la_OBJECTS = libgstaudiomixer_la-gstaudiomixer.lo \
-	libgstaudiomixer_la-gstaudioaggregator.lo \
 	libgstaudiomixer_la-gstaudiointerleave.lo
 am__objects_1 = libgstaudiomixer_la-tmp-orc.lo
 nodist_libgstaudiomixer_la_OBJECTS = $(am__objects_1)
@@ -353,7 +352,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -375,7 +373,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -397,9 +394,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -561,6 +555,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -574,8 +569,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -662,8 +655,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -715,6 +706,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -735,6 +727,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -772,7 +766,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -823,7 +816,7 @@
 cp_v_gen = $(cp_v_gen_$(V))
 cp_v_gen_ = $(cp_v_gen_$(AM_DEFAULT_VERBOSITY))
 cp_v_gen_0 = @echo "  CP     $@";
-libgstaudiomixer_la_SOURCES = gstaudiomixer.c gstaudioaggregator.c gstaudiointerleave.c
+libgstaudiomixer_la_SOURCES = gstaudiomixer.c gstaudiointerleave.c
 nodist_libgstaudiomixer_la_SOURCES = $(ORC_NODIST_SOURCES)
 libgstaudiomixer_la_CFLAGS = \
 	-I$(top_srcdir)/gst-libs \
@@ -834,11 +827,12 @@
 libgstaudiomixer_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstaudiomixer_la_LIBADD = \
 		$(top_builddir)/gst-libs/gst/base/libgstbadbase-$(GST_API_VERSION).la \
+		$(top_builddir)/gst-libs/gst/audio/libgstbadaudio-$(GST_API_VERSION).la \
 		$(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_API_VERSION@ \
 		$(GST_BASE_LIBS) $(GST_LIBS) $(ORC_LIBS)
 
 libgstaudiomixer_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = gstaudiomixer.h gstaudioaggregator.h gstaudiointerleave.h
+noinst_HEADERS = gstaudiomixer.h gstaudiointerleave.h
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-am
 
@@ -919,7 +913,6 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudiomixer_la-gstaudioaggregator.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudiomixer_la-gstaudiointerleave.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudiomixer_la-gstaudiomixer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstaudiomixer_la-tmp-orc.Plo@am__quote@
@@ -955,13 +948,6 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstaudiomixer_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstaudiomixer_la_CFLAGS) $(CFLAGS) -c -o libgstaudiomixer_la-gstaudiomixer.lo `test -f 'gstaudiomixer.c' || echo '$(srcdir)/'`gstaudiomixer.c
 
-libgstaudiomixer_la-gstaudioaggregator.lo: gstaudioaggregator.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstaudiomixer_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstaudiomixer_la_CFLAGS) $(CFLAGS) -MT libgstaudiomixer_la-gstaudioaggregator.lo -MD -MP -MF $(DEPDIR)/libgstaudiomixer_la-gstaudioaggregator.Tpo -c -o libgstaudiomixer_la-gstaudioaggregator.lo `test -f 'gstaudioaggregator.c' || echo '$(srcdir)/'`gstaudioaggregator.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstaudiomixer_la-gstaudioaggregator.Tpo $(DEPDIR)/libgstaudiomixer_la-gstaudioaggregator.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstaudioaggregator.c' object='libgstaudiomixer_la-gstaudioaggregator.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 $(libgstaudiomixer_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstaudiomixer_la_CFLAGS) $(CFLAGS) -c -o libgstaudiomixer_la-gstaudioaggregator.lo `test -f 'gstaudioaggregator.c' || echo '$(srcdir)/'`gstaudioaggregator.c
-
 libgstaudiomixer_la-gstaudiointerleave.lo: gstaudiointerleave.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstaudiomixer_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstaudiomixer_la_CFLAGS) $(CFLAGS) -MT libgstaudiomixer_la-gstaudiointerleave.lo -MD -MP -MF $(DEPDIR)/libgstaudiomixer_la-gstaudiointerleave.Tpo -c -o libgstaudiomixer_la-gstaudiointerleave.lo `test -f 'gstaudiointerleave.c' || echo '$(srcdir)/'`gstaudiointerleave.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstaudiomixer_la-gstaudiointerleave.Tpo $(DEPDIR)/libgstaudiomixer_la-gstaudiointerleave.Plo
diff --git a/gst/audiomixer/gstaudiointerleave.h b/gst/audiomixer/gstaudiointerleave.h
index 0473b45..6dd82d3 100644
--- a/gst/audiomixer/gstaudiointerleave.h
+++ b/gst/audiomixer/gstaudiointerleave.h
@@ -27,7 +27,7 @@
 #include <gst/gst.h>
 #include <gst/audio/audio.h>
 
-#include "gstaudioaggregator.h"
+#include <gst/audio/gstaudioaggregator.h>
 
 G_BEGIN_DECLS
 
diff --git a/gst/audiomixer/gstaudiomixer.h b/gst/audiomixer/gstaudiomixer.h
index add6e32..0e4098d 100644
--- a/gst/audiomixer/gstaudiomixer.h
+++ b/gst/audiomixer/gstaudiomixer.h
@@ -26,7 +26,7 @@
 
 #include <gst/gst.h>
 #include <gst/audio/audio.h>
-#include "gstaudioaggregator.h"
+#include <gst/audio/gstaudioaggregator.h>
 
 G_BEGIN_DECLS
 
diff --git a/gst/audiovisualizers/Makefile.in b/gst/audiovisualizers/Makefile.in
index 4bd907a..4bfdf9e 100644
--- a/gst/audiovisualizers/Makefile.in
+++ b/gst/audiovisualizers/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -331,7 +330,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -353,7 +351,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -375,9 +372,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -539,6 +533,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -552,8 +547,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -640,8 +633,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -693,6 +684,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -713,6 +705,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -750,7 +744,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/autoconvert/Makefile.in b/gst/autoconvert/Makefile.in
index 19d51b7..ea2e7fa 100644
--- a/gst/autoconvert/Makefile.in
+++ b/gst/autoconvert/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/bayer/Makefile.in b/gst/bayer/Makefile.in
index bc33d82..97d52c7 100644
--- a/gst/bayer/Makefile.in
+++ b/gst/bayer/Makefile.in
@@ -137,16 +137,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -349,7 +348,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -371,7 +369,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -393,9 +390,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -557,6 +551,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -570,8 +565,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -658,8 +651,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -711,6 +702,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -731,6 +723,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -768,7 +762,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/camerabin2/Makefile.in b/gst/camerabin2/Makefile.in
index b897722..3cb034d 100644
--- a/gst/camerabin2/Makefile.in
+++ b/gst/camerabin2/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -331,7 +330,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -353,7 +351,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -375,9 +372,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -539,6 +533,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -552,8 +547,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -640,8 +633,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -693,6 +684,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -713,6 +705,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -750,7 +744,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/cdxaparse/Makefile.in b/gst/cdxaparse/Makefile.in
index 594ea86..c43ec8a 100644
--- a/gst/cdxaparse/Makefile.in
+++ b/gst/cdxaparse/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/coloreffects/Makefile.in b/gst/coloreffects/Makefile.in
index 0493f7f..f049d80 100644
--- a/gst/coloreffects/Makefile.in
+++ b/gst/coloreffects/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/coloreffects/gstcoloreffects.h b/gst/coloreffects/gstcoloreffects.h
index 32f2230..50c9aa0 100644
--- a/gst/coloreffects/gstcoloreffects.h
+++ b/gst/coloreffects/gstcoloreffects.h
@@ -45,7 +45,7 @@
  * @GST_CLUT_PRESET_SEPIA: Sepia toning filter
  * @GST_CLUT_PRESET_XRAY: Invert colors and slightly shade to cyan
  * @GST_CLUT_PRESET_XPRO: Cross Processing filter
- * @GST_CLUT_PRESET_YELLOWBLUE: Visual magnifier high-contrast color filter. Since: 0.10.24
+ * @GST_CLUT_PRESET_YELLOWBLUE: Visual magnifier high-contrast color filter
  *
  * The lookup table to use to convert input colors
  */
diff --git a/gst/compositor/Makefile.in b/gst/compositor/Makefile.in
index 5293106..286fbad 100644
--- a/gst/compositor/Makefile.in
+++ b/gst/compositor/Makefile.in
@@ -138,16 +138,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -354,7 +353,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -376,7 +374,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -398,9 +395,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -562,6 +556,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -575,8 +570,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -663,8 +656,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -716,6 +707,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -736,6 +728,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -773,7 +767,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/compositor/compositor.c b/gst/compositor/compositor.c
index d015d85..c5b1a9a 100644
--- a/gst/compositor/compositor.c
+++ b/gst/compositor/compositor.c
@@ -216,9 +216,9 @@
 
 static void
 _mixer_pad_get_output_size (GstCompositor * comp,
-    GstCompositorPad * comp_pad, gint * width, gint * height)
+    GstCompositorPad * comp_pad, gint out_par_n, gint out_par_d, gint * width,
+    gint * height)
 {
-  GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (comp);
   GstVideoAggregatorPad *vagg_pad = GST_VIDEO_AGGREGATOR_PAD (comp_pad);
   gint pad_width, pad_height;
   guint dar_n, dar_d;
@@ -241,13 +241,10 @@
 
   gst_video_calculate_display_ratio (&dar_n, &dar_d, pad_width, pad_height,
       GST_VIDEO_INFO_PAR_N (&vagg_pad->info),
-      GST_VIDEO_INFO_PAR_D (&vagg_pad->info),
-      GST_VIDEO_INFO_PAR_N (&vagg->info), GST_VIDEO_INFO_PAR_D (&vagg->info)
-      );
+      GST_VIDEO_INFO_PAR_D (&vagg_pad->info), out_par_n, out_par_d);
   GST_LOG_OBJECT (comp_pad, "scaling %ux%u by %u/%u (%u/%u / %u/%u)", pad_width,
       pad_height, dar_n, dar_d, GST_VIDEO_INFO_PAR_N (&vagg_pad->info),
-      GST_VIDEO_INFO_PAR_D (&vagg_pad->info),
-      GST_VIDEO_INFO_PAR_N (&vagg->info), GST_VIDEO_INFO_PAR_D (&vagg->info));
+      GST_VIDEO_INFO_PAR_D (&vagg_pad->info), out_par_n, out_par_d);
 
   if (pad_height % dar_n == 0) {
     pad_width = gst_util_uint64_scale_int (pad_height, dar_n, dar_d);
@@ -292,7 +289,8 @@
       gst_video_colorimetry_to_string (&(wanted_info->colorimetry));
   best_chroma = gst_video_chroma_to_string (wanted_info->chroma_site);
 
-  _mixer_pad_get_output_size (comp, cpad, &width, &height);
+  _mixer_pad_get_output_size (comp, cpad, GST_VIDEO_INFO_PAR_N (&vagg->info),
+      GST_VIDEO_INFO_PAR_D (&vagg->info), &width, &height);
 
   if (GST_VIDEO_INFO_FORMAT (wanted_info) !=
       GST_VIDEO_INFO_FORMAT (current_info)
@@ -310,8 +308,8 @@
         width, height);
     tmp_info.chroma_site = wanted_info->chroma_site;
     tmp_info.colorimetry = wanted_info->colorimetry;
-    tmp_info.par_n = vagg->info.par_n;
-    tmp_info.par_d = vagg->info.par_d;
+    tmp_info.par_n = wanted_info->par_n;
+    tmp_info.par_d = wanted_info->par_d;
     tmp_info.fps_n = current_info->fps_n;
     tmp_info.fps_d = current_info->fps_d;
     tmp_info.flags = current_info->flags;
@@ -403,7 +401,8 @@
    *     width/height. See ->set_info()
    * */
 
-  _mixer_pad_get_output_size (comp, cpad, &width, &height);
+  _mixer_pad_get_output_size (comp, cpad, GST_VIDEO_INFO_PAR_N (&vagg->info),
+      GST_VIDEO_INFO_PAR_D (&vagg->info), &width, &height);
 
   /* The only thing that can change here is the width
    * and height, otherwise set_info would've been called */
@@ -498,7 +497,8 @@
     GstCompositorPad *cpad2 = GST_COMPOSITOR_PAD (pad2);
     gint pad2_width, pad2_height;
 
-    _mixer_pad_get_output_size (comp, cpad2, &pad2_width, &pad2_height);
+    _mixer_pad_get_output_size (comp, cpad2, GST_VIDEO_INFO_PAR_N (&vagg->info),
+        GST_VIDEO_INFO_PAR_D (&vagg->info), &pad2_width, &pad2_height);
 
     /* We don't need to clamp the coords of the second rectangle */
     frame2_rect.x = cpad2->xpos;
@@ -883,17 +883,26 @@
 }
 
 static GstCaps *
-_update_caps (GstVideoAggregator * vagg, GstCaps * caps)
+_fixate_caps (GstVideoAggregator * vagg, GstCaps * caps)
 {
   GList *l;
   gint best_width = -1, best_height = -1;
-  GstVideoInfo info;
+  gint best_fps_n = -1, best_fps_d = -1;
+  gint par_n, par_d;
+  gdouble best_fps = 0.;
   GstCaps *ret = NULL;
+  GstStructure *s;
 
-  gst_video_info_from_caps (&info, caps);
+  ret = gst_caps_make_writable (caps);
 
-  /* FIXME: this doesn't work for non 1/1 output par's as we don't have that
-   * information available at this time */
+  /* we need this to calculate how large to make the output frame */
+  s = gst_caps_get_structure (ret, 0);
+  if (gst_structure_has_field (s, "pixel-aspect-ratio")) {
+    gst_structure_fixate_field_nearest_fraction (s, "pixel-aspect-ratio", 1, 1);
+    gst_structure_get_fraction (s, "pixel-aspect-ratio", &par_n, &par_d);
+  } else {
+    par_n = par_d = 1;
+  }
 
   GST_OBJECT_LOCK (vagg);
   for (l = GST_ELEMENT (vagg)->sinkpads; l; l = l->next) {
@@ -901,9 +910,13 @@
     GstCompositorPad *compositor_pad = GST_COMPOSITOR_PAD (vaggpad);
     gint this_width, this_height;
     gint width, height;
+    gint fps_n, fps_d;
+    gdouble cur_fps;
 
-    _mixer_pad_get_output_size (GST_COMPOSITOR (vagg), compositor_pad, &width,
-        &height);
+    fps_n = GST_VIDEO_INFO_FPS_N (&vaggpad->info);
+    fps_d = GST_VIDEO_INFO_FPS_D (&vaggpad->info);
+    _mixer_pad_get_output_size (GST_COMPOSITOR (vagg), compositor_pad, par_n,
+        par_d, &width, &height);
 
     if (width == 0 || height == 0)
       continue;
@@ -915,17 +928,40 @@
       best_width = this_width;
     if (best_height < this_height)
       best_height = this_height;
+
+    if (fps_d == 0)
+      cur_fps = 0.0;
+    else
+      gst_util_fraction_to_double (fps_n, fps_d, &cur_fps);
+
+    if (best_fps < cur_fps) {
+      best_fps = cur_fps;
+      best_fps_n = fps_n;
+      best_fps_d = fps_d;
+    }
   }
   GST_OBJECT_UNLOCK (vagg);
 
-  if (best_width > 0 && best_height > 0) {
-    info.width = best_width;
-    info.height = best_height;
-    if (set_functions (GST_COMPOSITOR (vagg), &info))
-      ret = gst_video_info_to_caps (&info);
+  if (best_fps_n <= 0 || best_fps_d <= 0 || best_fps == 0.0) {
+    best_fps_n = 25;
+    best_fps_d = 1;
+    best_fps = 25.0;
+  }
 
-    gst_caps_set_simple (ret, "pixel-aspect-ratio", GST_TYPE_FRACTION_RANGE,
-        1, G_MAXINT, G_MAXINT, 1, NULL);
+  gst_structure_fixate_field_nearest_int (s, "width", best_width);
+  gst_structure_fixate_field_nearest_int (s, "height", best_height);
+  gst_structure_fixate_field_nearest_fraction (s, "framerate", best_fps_n,
+      best_fps_d);
+  ret = gst_caps_fixate (ret);
+
+  if (best_width > 0 && best_height > 0) {
+    GstVideoInfo v_info;
+
+    gst_video_info_from_caps (&v_info, ret);
+    if (!set_functions (GST_COMPOSITOR (vagg), &v_info)) {
+      GST_ERROR_OBJECT (vagg, "Failed to setup vfuncs");
+      return NULL;
+    }
   }
 
   return ret;
@@ -1059,7 +1095,7 @@
 
   agg_class->sinkpads_type = GST_TYPE_COMPOSITOR_PAD;
   agg_class->sink_query = _sink_query;
-  videoaggregator_class->update_caps = _update_caps;
+  videoaggregator_class->fixate_caps = _fixate_caps;
   videoaggregator_class->aggregate_frames = gst_compositor_aggregate_frames;
 
   g_object_class_install_property (gobject_class, PROP_BACKGROUND,
diff --git a/gst/dataurisrc/Makefile.in b/gst/dataurisrc/Makefile.in
index cad26ea..60c0940 100644
--- a/gst/dataurisrc/Makefile.in
+++ b/gst/dataurisrc/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -320,7 +319,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -342,7 +340,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -364,9 +361,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -528,6 +522,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -541,8 +536,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -629,8 +622,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -682,6 +673,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -702,6 +694,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -739,7 +733,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/dccp/Makefile.in b/gst/dccp/Makefile.in
index e9e034b..3b7b5f7 100644
--- a/gst/dccp/Makefile.in
+++ b/gst/dccp/Makefile.in
@@ -118,16 +118,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -330,7 +329,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -352,7 +350,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -374,9 +371,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -538,6 +532,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -551,8 +546,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -639,8 +632,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -692,6 +683,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -712,6 +704,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -749,7 +743,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/debugutils/Makefile.am b/gst/debugutils/Makefile.am
index aff78a2..783a9ce 100644
--- a/gst/debugutils/Makefile.am
+++ b/gst/debugutils/Makefile.am
@@ -1,17 +1,3 @@
-glib_gen_prefix = __gst_debugutils
-glib_gen_basename = debugutils
-
-include $(top_srcdir)/common/gst-glib-gen.mak
-
-built_sources = debugutils-marshal.c
-built_headers = debugutils-marshal.h
-
-BUILT_SOURCES = $(built_sources) $(built_headers)
-
-CLEANFILES = $(BUILT_SOURCES)
-
-EXTRA_DIST = debugutils-marshal.list
-
 plugin_LTLIBRARIES = libgstdebugutilsbad.la
 
 libgstdebugutilsbad_la_SOURCES = \
@@ -24,7 +10,6 @@
 	gstwatchdog.c \
 	gsterrorignore.c
 
-nodist_libgstdebugutilsbad_la_SOURCES = $(BUILT_SOURCES)
 libgstdebugutilsbad_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
 libgstdebugutilsbad_la_LIBADD = $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
 	-lgstvideo-$(GST_API_VERSION) \
diff --git a/gst/debugutils/Makefile.in b/gst/debugutils/Makefile.in
index 86740c7..e49636e 100644
--- a/gst/debugutils/Makefile.in
+++ b/gst/debugutils/Makefile.in
@@ -14,14 +14,6 @@
 
 @SET_MAKE@
 
-# these are the variables your Makefile.am should set
-# the example is based on the colorbalance interface
-
-#glib_enum_headers=$(colorbalance_headers)
-#glib_enum_define=GST_COLOR_BALANCE
-#glib_gen_prefix=gst_color_balance
-#glib_gen_basename=colorbalance
-
 
 VPATH = @srcdir@
 am__is_gnu_make = { \
@@ -124,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -183,12 +174,7 @@
 	libgstdebugutilsbad_la-gstcompare.lo \
 	libgstdebugutilsbad_la-gstwatchdog.lo \
 	libgstdebugutilsbad_la-gsterrorignore.lo
-am__objects_1 = libgstdebugutilsbad_la-debugutils-marshal.lo
-am__objects_2 =
-am__objects_3 = $(am__objects_1) $(am__objects_2)
-nodist_libgstdebugutilsbad_la_OBJECTS = $(am__objects_3)
-libgstdebugutilsbad_la_OBJECTS = $(am_libgstdebugutilsbad_la_OBJECTS) \
-	$(nodist_libgstdebugutilsbad_la_OBJECTS)
+libgstdebugutilsbad_la_OBJECTS = $(am_libgstdebugutilsbad_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
@@ -231,8 +217,7 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libgstdebugutilsbad_la_SOURCES) \
-	$(nodist_libgstdebugutilsbad_la_SOURCES)
+SOURCES = $(libgstdebugutilsbad_la_SOURCES)
 DIST_SOURCES = $(libgstdebugutilsbad_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
@@ -259,8 +244,7 @@
   done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in \
-	$(top_srcdir)/common/gst-glib-gen.mak $(top_srcdir)/depcomp
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -346,7 +330,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -368,7 +351,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -390,9 +372,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -554,6 +533,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -567,8 +547,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -655,8 +633,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -708,6 +684,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -728,6 +705,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -765,7 +744,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -805,14 +783,6 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
-glib_gen_prefix = __gst_debugutils
-glib_gen_basename = debugutils
-enum_headers = $(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
-built_sources = debugutils-marshal.c
-built_headers = debugutils-marshal.h
-BUILT_SOURCES = $(built_sources) $(built_headers)
-CLEANFILES = $(BUILT_SOURCES)
-EXTRA_DIST = debugutils-marshal.list
 plugin_LTLIBRARIES = libgstdebugutilsbad.la
 libgstdebugutilsbad_la_SOURCES = \
 	gstdebugspy.c \
@@ -824,7 +794,6 @@
 	gstwatchdog.c \
 	gsterrorignore.c
 
-nodist_libgstdebugutilsbad_la_SOURCES = $(BUILT_SOURCES)
 libgstdebugutilsbad_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
 libgstdebugutilsbad_la_LIBADD = $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
 	-lgstvideo-$(GST_API_VERSION) \
@@ -840,12 +809,11 @@
 	gstwatchdog.h \
 	gsterrorignore.h
 
-all: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) all-am
+all: all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/gst-glib-gen.mak $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -865,7 +833,6 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(top_srcdir)/common/gst-glib-gen.mak $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -920,7 +887,6 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdebugutilsbad_la-debugutils-marshal.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdebugutilsbad_la-debugutilsbad.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdebugutilsbad_la-fpsdisplaysink.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdebugutilsbad_la-gstchecksumsink.Plo@am__quote@
@@ -1010,13 +976,6 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdebugutilsbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdebugutilsbad_la_CFLAGS) $(CFLAGS) -c -o libgstdebugutilsbad_la-gsterrorignore.lo `test -f 'gsterrorignore.c' || echo '$(srcdir)/'`gsterrorignore.c
 
-libgstdebugutilsbad_la-debugutils-marshal.lo: debugutils-marshal.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdebugutilsbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdebugutilsbad_la_CFLAGS) $(CFLAGS) -MT libgstdebugutilsbad_la-debugutils-marshal.lo -MD -MP -MF $(DEPDIR)/libgstdebugutilsbad_la-debugutils-marshal.Tpo -c -o libgstdebugutilsbad_la-debugutils-marshal.lo `test -f 'debugutils-marshal.c' || echo '$(srcdir)/'`debugutils-marshal.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstdebugutilsbad_la-debugutils-marshal.Tpo $(DEPDIR)/libgstdebugutilsbad_la-debugutils-marshal.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='debugutils-marshal.c' object='libgstdebugutilsbad_la-debugutils-marshal.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 $(libgstdebugutilsbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdebugutilsbad_la_CFLAGS) $(CFLAGS) -c -o libgstdebugutilsbad_la-debugutils-marshal.lo `test -f 'debugutils-marshal.c' || echo '$(srcdir)/'`debugutils-marshal.c
-
 mostlyclean-libtool:
 	-rm -f *.lo
 
@@ -1106,15 +1065,13 @@
 	  fi; \
 	done
 check-am: all-am
-check: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) check-am
+check: check-am
 all-am: Makefile $(LTLIBRARIES) $(HEADERS)
 installdirs:
 	for dir in "$(DESTDIR)$(plugindir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
-install: $(BUILT_SOURCES)
-	$(MAKE) $(AM_MAKEFLAGS) install-am
+install: install-am
 install-exec: install-exec-am
 install-data: install-data-am
 uninstall: uninstall-am
@@ -1136,7 +1093,6 @@
 mostlyclean-generic:
 
 clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
@@ -1145,7 +1101,6 @@
 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 \
@@ -1217,7 +1172,7 @@
 
 uninstall-am: uninstall-pluginLTLIBRARIES
 
-.MAKE: all check install install-am install-strip
+.MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
 	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
@@ -1237,42 +1192,6 @@
 .PRECIOUS: Makefile
 
 
-# these are all the rules generating the relevant files
-$(glib_gen_basename)-marshal.h: $(glib_gen_basename)-marshal.list
-	$(AM_V_GEN)$(GLIB_GENMARSHAL) --header --prefix=$(glib_gen_prefix)_marshal $^ > $(glib_gen_basename)-marshal.h.tmp && \
-	mv $(glib_gen_basename)-marshal.h.tmp $(glib_gen_basename)-marshal.h
-
-$(glib_gen_basename)-marshal.c: $(glib_gen_basename)-marshal.list
-	$(AM_V_GEN)echo "#include \"$(glib_gen_basename)-marshal.h\"" >> $(glib_gen_basename)-marshal.c.tmp && \
-	$(GLIB_GENMARSHAL) --body --prefix=$(glib_gen_prefix)_marshal $^ >> $(glib_gen_basename)-marshal.c.tmp && \
-	mv $(glib_gen_basename)-marshal.c.tmp $(glib_gen_basename)-marshal.c
-
-$(glib_gen_basename)-enumtypes.h: $(glib_enum_headers)
-	$(AM_V_GEN)$(GLIB_MKENUMS) \
-	--fhead "#ifndef __$(glib_enum_define)_ENUM_TYPES_H__\n#define __$(glib_enum_define)_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
-	--fprod "\n/* enumerations from \"@filename@\" */\n" \
-	--vhead "GType @enum_name@_get_type (void);\n#define GST_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n"         \
-	--ftail "G_END_DECLS\n\n#endif /* __$(glib_enum_define)_ENUM_TYPES_H__ */" \
-	$^ > $@
-
-$(glib_gen_basename)-enumtypes.c: $(glib_enum_headers)
-	@if test "x$(glib_enum_headers)" = "x"; then echo "ERROR: glib_enum_headers is empty, please fix Makefile"; exit 1; fi
-	$(AM_V_GEN)$(GLIB_MKENUMS) \
-	--fhead "#include \"$(glib_gen_basename)-enumtypes.h\"\n$(enum_headers)" \
-	--fprod "\n/* enumerations from \"@filename@\" */" \
-	--vhead "GType\n@enum_name@_get_type (void)\n{\n  static volatile gsize g_define_type_id__volatile = 0;\n  if (g_once_init_enter (&g_define_type_id__volatile)) {\n    static const G@Type@Value values[] = {"     \
-	--vprod "      { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
-	--vtail "      { 0, NULL, NULL }\n    };\n    GType g_define_type_id = g_@type@_register_static (\"@EnumName@\", values);\n    g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);\n  }\n  return g_define_type_id__volatile;\n}\n" \
-	$^ > $@
-
-# a hack rule to make sure .Plo files exist because they get include'd
-# from Makefile's
-.deps/%-marshal.Plo:
-	@touch $@
-
-.deps/%-enumtypes.Plo:
-	@touch $@
-
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/gst/debugutils/debugutils-marshal.list b/gst/debugutils/debugutils-marshal.list
deleted file mode 100644
index 8073fd3..0000000
--- a/gst/debugutils/debugutils-marshal.list
+++ /dev/null
@@ -1,2 +0,0 @@
-VOID:DOUBLE,DOUBLE,DOUBLE
-
diff --git a/gst/debugutils/fpsdisplaysink.c b/gst/debugutils/fpsdisplaysink.c
index 39c2422..92b3201 100644
--- a/gst/debugutils/fpsdisplaysink.c
+++ b/gst/debugutils/fpsdisplaysink.c
@@ -47,7 +47,6 @@
 #include "config.h"
 #endif
 
-#include "debugutils-marshal.h"
 #include "fpsdisplaysink.h"
 
 #define DEFAULT_SIGNAL_FPS_MEASUREMENTS FALSE
@@ -198,13 +197,10 @@
    * @avgfps: The average fps
    *
    * Signals the application about the measured fps
-   *
-   * Since: 0.10.20
    */
   fpsdisplaysink_signals[SIGNAL_FPS_MEASUREMENTS] =
       g_signal_new ("fps-measurements", G_TYPE_FROM_CLASS (klass),
-      G_SIGNAL_RUN_LAST, 0, NULL, NULL,
-      __gst_debugutils_marshal_VOID__DOUBLE_DOUBLE_DOUBLE,
+      G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
       G_TYPE_NONE, 3, G_TYPE_DOUBLE, G_TYPE_DOUBLE, G_TYPE_DOUBLE);
 
   gstelement_klass->change_state = fps_display_sink_change_state;
diff --git a/gst/dvbsuboverlay/Makefile.in b/gst/dvbsuboverlay/Makefile.in
index 22a8288..f2f0f2e 100644
--- a/gst/dvbsuboverlay/Makefile.in
+++ b/gst/dvbsuboverlay/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/dvdspu/Makefile.in b/gst/dvdspu/Makefile.in
index 49c3927..1134894 100644
--- a/gst/dvdspu/Makefile.in
+++ b/gst/dvdspu/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -327,7 +326,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -349,7 +347,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -371,9 +368,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -535,6 +529,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -548,8 +543,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -636,8 +629,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -689,6 +680,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -709,6 +701,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -746,7 +740,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/faceoverlay/Makefile.in b/gst/faceoverlay/Makefile.in
index 382cd5a..5ab8c18 100644
--- a/gst/faceoverlay/Makefile.in
+++ b/gst/faceoverlay/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/festival/Makefile.in b/gst/festival/Makefile.in
index 32c7b01..530b0ae 100644
--- a/gst/festival/Makefile.in
+++ b/gst/festival/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/fieldanalysis/Makefile.in b/gst/fieldanalysis/Makefile.in
index da057cc..63b480e 100644
--- a/gst/fieldanalysis/Makefile.in
+++ b/gst/fieldanalysis/Makefile.in
@@ -138,16 +138,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -352,7 +351,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -374,7 +372,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -396,9 +393,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -560,6 +554,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -573,8 +568,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -661,8 +654,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -714,6 +705,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -734,6 +726,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -771,7 +765,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/freeverb/Makefile.in b/gst/freeverb/Makefile.in
index 01c5cb2..71fb484 100644
--- a/gst/freeverb/Makefile.in
+++ b/gst/freeverb/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -326,7 +325,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -348,7 +346,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -370,9 +367,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -534,6 +528,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -547,8 +542,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -635,8 +628,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -688,6 +679,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -708,6 +700,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -745,7 +739,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/frei0r/Makefile.in b/gst/frei0r/Makefile.in
index e16cfbd..b7ef938 100644
--- a/gst/frei0r/Makefile.in
+++ b/gst/frei0r/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -327,7 +326,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -349,7 +347,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -371,9 +368,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -535,6 +529,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -548,8 +543,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -636,8 +629,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -689,6 +680,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -709,6 +701,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -746,7 +740,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/frei0r/gstfrei0rmixer.c b/gst/frei0r/gstfrei0rmixer.c
index 8d5f59b..f2c8453 100644
--- a/gst/frei0r/gstfrei0rmixer.c
+++ b/gst/frei0r/gstfrei0rmixer.c
@@ -216,8 +216,12 @@
       }
     }
   } else if (!gst_caps_is_equal (caps, self->caps)) {
-    if (gst_pad_peer_query_accept_caps (pad, self->caps))
+    GstCaps *upstream_caps;
+
+    upstream_caps = gst_pad_peer_query_caps (pad, NULL);
+    if (gst_caps_can_intersect (self->caps, upstream_caps))
       gst_pad_push_event (pad, gst_event_new_reconfigure ());
+    gst_caps_unref (upstream_caps);
     ret = FALSE;
   }
 
diff --git a/gst/gaudieffects/Makefile.in b/gst/gaudieffects/Makefile.in
index 76b1bcb..a4edbea 100644
--- a/gst/gaudieffects/Makefile.in
+++ b/gst/gaudieffects/Makefile.in
@@ -138,16 +138,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -358,7 +357,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -380,7 +378,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -402,9 +399,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -566,6 +560,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -579,8 +574,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -667,8 +660,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -720,6 +711,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -740,6 +732,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -777,7 +771,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/gdp/Makefile.in b/gst/gdp/Makefile.in
index eabc65b..725531f 100644
--- a/gst/gdp/Makefile.in
+++ b/gst/gdp/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/gdp/gstgdpdepay.c b/gst/gdp/gstgdpdepay.c
index b16a9c8..b779a85 100644
--- a/gst/gdp/gstgdpdepay.c
+++ b/gst/gdp/gstgdpdepay.c
@@ -45,6 +45,7 @@
 enum
 {
   PROP_0,
+  PROP_TS_OFFSET
 };
 
 static GstStaticPadTemplate gdp_depay_sink_template =
@@ -81,6 +82,10 @@
     element, GstStateChange transition);
 
 static void gst_gdp_depay_finalize (GObject * object);
+static void gst_gdp_depay_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_gdp_depay_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
 
 static void
 gst_gdp_depay_class_init (GstGDPDepayClass * klass)
@@ -91,6 +96,15 @@
   gobject_class = (GObjectClass *) klass;
   gstelement_class = (GstElementClass *) klass;
 
+  gobject_class->set_property = gst_gdp_depay_set_property;
+  gobject_class->get_property = gst_gdp_depay_get_property;
+
+  g_object_class_install_property (gobject_class, PROP_TS_OFFSET,
+      g_param_spec_int64 ("ts-offset", "Timestamp Offset",
+          "Timestamp Offset",
+          G_MININT64, G_MAXINT64, 0,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
   gst_element_class_set_static_metadata (gstelement_class,
       "GDP Depayloader", "GDP/Depayloader",
       "Depayloads GStreamer Data Protocol buffers",
@@ -143,6 +157,42 @@
   GST_CALL_PARENT (G_OBJECT_CLASS, finalize, (gobject));
 }
 
+static void
+gst_gdp_depay_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstGDPDepay *this;
+
+  this = GST_GDP_DEPAY (object);
+
+  switch (prop_id) {
+    case PROP_TS_OFFSET:
+      this->ts_offset = g_value_get_int64 (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_gdp_depay_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstGDPDepay *this;
+
+  this = GST_GDP_DEPAY (object);
+
+  switch (prop_id) {
+    case PROP_TS_OFFSET:
+      g_value_set_int64 (value, this->ts_offset);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
 static gboolean
 gst_gdp_depay_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
 {
@@ -317,6 +367,16 @@
           gst_adapter_flush (this->adapter, this->payload_length);
         }
 
+        if (GST_BUFFER_TIMESTAMP (buf) > -this->ts_offset)
+          GST_BUFFER_TIMESTAMP (buf) += this->ts_offset;
+        else
+          GST_BUFFER_TIMESTAMP (buf) = 0;
+
+        if (GST_BUFFER_DTS (buf) > -this->ts_offset)
+          GST_BUFFER_DTS (buf) += this->ts_offset;
+        else
+          GST_BUFFER_DTS (buf) = 0;
+
         /* set caps and push */
         GST_LOG_OBJECT (this, "deserialized buffer %p, pushing, timestamp %"
             GST_TIME_FORMAT ", duration %" GST_TIME_FORMAT
diff --git a/gst/gdp/gstgdpdepay.h b/gst/gdp/gstgdpdepay.h
index ca22c08..43bbf9d 100644
--- a/gst/gdp/gstgdpdepay.h
+++ b/gst/gdp/gstgdpdepay.h
@@ -66,6 +66,8 @@
   guint8 *header;
   guint32 payload_length;
   GstDPPayloadType payload_type;
+
+  gint64 ts_offset;
 };
 
 struct _GstGDPDepayClass
diff --git a/gst/geometrictransform/Makefile.in b/gst/geometrictransform/Makefile.in
index 03401d8..961e037 100644
--- a/gst/geometrictransform/Makefile.in
+++ b/gst/geometrictransform/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -346,7 +345,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -368,7 +366,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -390,9 +387,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -554,6 +548,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -567,8 +562,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -655,8 +648,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -708,6 +699,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -728,6 +720,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -765,7 +759,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/hdvparse/Makefile.in b/gst/hdvparse/Makefile.in
index 3bd46c6..c3f3910 100644
--- a/gst/hdvparse/Makefile.in
+++ b/gst/hdvparse/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/id3tag/Makefile.in b/gst/id3tag/Makefile.in
index 6e0ddee..d1884a8 100644
--- a/gst/id3tag/Makefile.in
+++ b/gst/id3tag/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/inter/Makefile.in b/gst/inter/Makefile.in
index e2b9c6c..47d7ccd 100644
--- a/gst/inter/Makefile.in
+++ b/gst/inter/Makefile.in
@@ -118,16 +118,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -340,7 +339,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -362,7 +360,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -384,9 +381,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -548,6 +542,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -561,8 +556,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -649,8 +642,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -702,6 +693,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -722,6 +714,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -759,7 +753,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/interlace/Makefile.in b/gst/interlace/Makefile.in
index 4fd3cb2..7b8e977 100644
--- a/gst/interlace/Makefile.in
+++ b/gst/interlace/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -320,7 +319,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -342,7 +340,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -364,9 +361,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -528,6 +522,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -541,8 +536,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -629,8 +622,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -682,6 +673,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -702,6 +694,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -739,7 +733,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/ivfparse/Makefile.in b/gst/ivfparse/Makefile.in
index fb0e17d..aaf29ab 100644
--- a/gst/ivfparse/Makefile.in
+++ b/gst/ivfparse/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/ivtc/Makefile.in b/gst/ivtc/Makefile.in
index 4027f80..fe9235f 100644
--- a/gst/ivtc/Makefile.in
+++ b/gst/ivtc/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -321,7 +320,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -343,7 +341,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -365,9 +362,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -529,6 +523,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -542,8 +537,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -630,8 +623,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -683,6 +674,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -703,6 +695,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -740,7 +734,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/jp2kdecimator/Makefile.in b/gst/jp2kdecimator/Makefile.in
index 637eafa..500fb53 100644
--- a/gst/jp2kdecimator/Makefile.in
+++ b/gst/jp2kdecimator/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/jpegformat/Makefile.in b/gst/jpegformat/Makefile.in
index 946a9f2..1cf88c8 100644
--- a/gst/jpegformat/Makefile.in
+++ b/gst/jpegformat/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/librfb/Makefile.in b/gst/librfb/Makefile.in
index 1d8527c..f2bcf10 100644
--- a/gst/librfb/Makefile.in
+++ b/gst/librfb/Makefile.in
@@ -118,16 +118,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -333,7 +332,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -355,7 +353,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -377,9 +374,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -541,6 +535,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -554,8 +549,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -642,8 +635,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -695,6 +686,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -715,6 +707,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -752,7 +746,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/midi/Makefile.in b/gst/midi/Makefile.in
index 0427cf9..1b3cc46 100644
--- a/gst/midi/Makefile.in
+++ b/gst/midi/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/mpegdemux/Makefile.in b/gst/mpegdemux/Makefile.in
index e9af940..44f0d4c 100644
--- a/gst/mpegdemux/Makefile.in
+++ b/gst/mpegdemux/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/mpegpsmux/Makefile.in b/gst/mpegpsmux/Makefile.in
index cd804d6..d8a2b2d 100644
--- a/gst/mpegpsmux/Makefile.in
+++ b/gst/mpegpsmux/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -326,7 +325,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -348,7 +346,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -370,9 +367,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -534,6 +528,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -547,8 +542,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -635,8 +628,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -688,6 +679,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -708,6 +700,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -745,7 +739,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/mpegtsdemux/Makefile.in b/gst/mpegtsdemux/Makefile.in
index cf5e9cd..c235476 100644
--- a/gst/mpegtsdemux/Makefile.in
+++ b/gst/mpegtsdemux/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -331,7 +330,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -353,7 +351,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -375,9 +372,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -539,6 +533,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -552,8 +547,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -640,8 +633,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -693,6 +684,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -713,6 +705,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -750,7 +744,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c
index 3dcde60..d63122f 100644
--- a/gst/mpegtsdemux/mpegtsbase.c
+++ b/gst/mpegtsdemux/mpegtsbase.c
@@ -1433,11 +1433,23 @@
         }
         base->mode = BASE_MODE_PUSHING;
       }
+    } else {
+      GST_WARNING ("subclass has no seek implementation");
     }
 
     return ret == GST_FLOW_OK;
   }
 
+  if (!klass->seek) {
+    GST_WARNING ("subclass has no seek implementation");
+    return FALSE;
+  }
+
+  if (rate <= 0.0) {
+    GST_WARNING ("Negative rate not supported");
+    return FALSE;
+  }
+
   GST_DEBUG ("seek event, rate: %f start: %" GST_TIME_FORMAT
       " stop: %" GST_TIME_FORMAT, rate, GST_TIME_ARGS (start),
       GST_TIME_ARGS (stop));
@@ -1479,16 +1491,11 @@
 
 
   /* If the subclass can seek, do that */
-  if (klass->seek) {
-    ret = klass->seek (base, event);
-    if (G_UNLIKELY (ret != GST_FLOW_OK))
-      GST_WARNING ("seeking failed %s", gst_flow_get_name (ret));
-    else
-      base->last_seek_seqnum = GST_EVENT_SEQNUM (event);
-  } else {
-    /* FIXME : Check this before so we don't do seeks we can't handle ? */
-    GST_WARNING ("subclass has no seek implementation");
-  }
+  ret = klass->seek (base, event);
+  if (G_UNLIKELY (ret != GST_FLOW_OK))
+    GST_WARNING ("seeking failed %s", gst_flow_get_name (ret));
+  else
+    base->last_seek_seqnum = GST_EVENT_SEQNUM (event);
 
   if (flush_event) {
     /* if we sent a FLUSH_START, we now send a FLUSH_STOP */
diff --git a/gst/mpegtsmux/Makefile.in b/gst/mpegtsmux/Makefile.in
index 671a23a..84fe942 100644
--- a/gst/mpegtsmux/Makefile.in
+++ b/gst/mpegtsmux/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -370,7 +369,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -392,7 +390,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -414,9 +411,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -578,6 +572,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -591,8 +586,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -679,8 +672,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -732,6 +723,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -752,6 +744,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -789,7 +783,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/mpegtsmux/mpegtsmux.c b/gst/mpegtsmux/mpegtsmux.c
index 1d208a7..cd07338 100644
--- a/gst/mpegtsmux/mpegtsmux.c
+++ b/gst/mpegtsmux/mpegtsmux.c
@@ -127,6 +127,8 @@
         "video/x-dirac;"
         "video/x-h264,stream-format=(string)byte-stream,"
         "alignment=(string){au, nal}; "
+        "video/x-h265,stream-format=(string)byte-stream,"
+        "alignment=(string){au, nal}; "
         "audio/mpeg, "
         "parsed = (boolean) TRUE, "
         "mpegversion = (int) { 1, 2 };"
@@ -612,6 +614,8 @@
     st = TSMUX_ST_PS_AUDIO_LPCM;
   } else if (strcmp (mt, "video/x-h264") == 0) {
     st = TSMUX_ST_VIDEO_H264;
+  } else if (strcmp (mt, "video/x-h265") == 0) {
+    st = TSMUX_ST_VIDEO_HEVC;
   } else if (strcmp (mt, "audio/mpeg") == 0) {
     gint mpegversion;
 
diff --git a/gst/mpegtsmux/tsmux/Makefile.in b/gst/mpegtsmux/tsmux/Makefile.in
index ace58fb..bb580d3 100644
--- a/gst/mpegtsmux/tsmux/Makefile.in
+++ b/gst/mpegtsmux/tsmux/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -295,7 +294,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -317,7 +315,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -339,9 +336,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -503,6 +497,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -516,8 +511,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -604,8 +597,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -657,6 +648,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -677,6 +669,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -714,7 +708,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/mpegtsmux/tsmux/tsmux.c b/gst/mpegtsmux/tsmux/tsmux.c
index 00e1203..638de15 100644
--- a/gst/mpegtsmux/tsmux/tsmux.c
+++ b/gst/mpegtsmux/tsmux/tsmux.c
@@ -692,7 +692,7 @@
       buf[pos++] = (pcr_base >> 17) & 0xff;
       buf[pos++] = (pcr_base >> 9) & 0xff;
       buf[pos++] = (pcr_base >> 1) & 0xff;
-      buf[pos++] = ((pcr_base << 7) & 0x80) | ((pcr_ext >> 8) & 0x01);
+      buf[pos++] = ((pcr_base << 7) & 0x80) | 0x7e | ((pcr_ext >> 8) & 0x01);   /* set 6 reserve bits to 1 */
       buf[pos++] = (pcr_ext) & 0xff;
     }
     if (pi->flags & TSMUX_PACKET_FLAG_WRITE_OPCR) {
@@ -708,7 +708,7 @@
       buf[pos++] = (opcr_base >> 17) & 0xff;
       buf[pos++] = (opcr_base >> 9) & 0xff;
       buf[pos++] = (opcr_base >> 1) & 0xff;
-      buf[pos++] = ((opcr_base << 7) & 0x80) | ((opcr_ext >> 8) & 0x01);
+      buf[pos++] = ((opcr_base << 7) & 0x80) | 0x7e | ((opcr_ext >> 8) & 0x01); /* set 6 reserve bits to 1 */
       buf[pos++] = (opcr_ext) & 0xff;
     }
     if (pi->flags & TSMUX_PACKET_FLAG_WRITE_SPLICE) {
@@ -730,7 +730,7 @@
       TS_DEBUG ("FIXME: write Adaptation extension");
       /* Write an empty extension for now */
       buf[pos++] = 1;
-      buf[pos++] = 0;
+      buf[pos++] = 0x1f;        /* lower 5 bits are reserved, and should be all 1 */
     }
   }
   /* Write the flags at the start */
diff --git a/gst/mpegtsmux/tsmux/tsmuxstream.c b/gst/mpegtsmux/tsmux/tsmuxstream.c
index 31fd196..6b7c17e 100644
--- a/gst/mpegtsmux/tsmux/tsmuxstream.c
+++ b/gst/mpegtsmux/tsmux/tsmuxstream.c
@@ -138,6 +138,7 @@
     case TSMUX_ST_VIDEO_MPEG2:
     case TSMUX_ST_VIDEO_MPEG4:
     case TSMUX_ST_VIDEO_H264:
+    case TSMUX_ST_VIDEO_HEVC:
       /* FIXME: Assign sequential IDs? */
       stream->id = 0xE0;
       stream->pi.flags |= TSMUX_PACKET_FLAG_PES_FULL_HEADER;
@@ -315,8 +316,10 @@
     /* FIXME: As a hack, for unbounded streams, start a new PES packet for each
      * incoming packet we receive. This assumes that incoming data is 
      * packetised sensibly - ie, every video frame */
-    if (stream->cur_pes_payload_size == 0)
+    if (stream->cur_pes_payload_size == 0) {
       stream->state = TSMUX_STREAM_STATE_HEADER;
+      stream->pes_bytes_written = 0;
+    }
   }
 }
 
@@ -408,11 +411,6 @@
     stream->cur_pes_payload_size = stream->pes_payload_size;
     tsmux_stream_find_pts_dts_within (stream, stream->cur_pes_payload_size,
         &stream->pts, &stream->dts);
-  } else if (stream->is_video_stream) {
-    /* Unbounded for video streams */
-    stream->cur_pes_payload_size = 0;
-    tsmux_stream_find_pts_dts_within (stream, stream->bytes_avail, &stream->pts,
-        &stream->dts);
   } else {
     /* Output a PES packet of all currently available bytes otherwise */
     stream->cur_pes_payload_size = stream->bytes_avail;
@@ -440,6 +438,16 @@
     }
   }
 
+  if (stream->is_video_stream) {
+    guint8 hdr_len;
+
+    hdr_len = tsmux_stream_pes_header_length (stream);
+
+    /* Unbounded for video streams if pes packet length is over 16 bit */
+    if ((stream->cur_pes_payload_size + hdr_len - 6) > G_MAXUINT16)
+      stream->cur_pes_payload_size = 0;
+  }
+
   return TRUE;
 }
 
diff --git a/gst/mpegtsmux/tsmux/tsmuxstream.h b/gst/mpegtsmux/tsmux/tsmuxstream.h
index 26fe207..73b2a88 100644
--- a/gst/mpegtsmux/tsmux/tsmuxstream.h
+++ b/gst/mpegtsmux/tsmux/tsmuxstream.h
@@ -133,6 +133,7 @@
   TSMUX_ST_AUDIO_AAC                  = 0x0f,
   TSMUX_ST_VIDEO_MPEG4                = 0x10,
   TSMUX_ST_VIDEO_H264                 = 0x1b,
+  TSMUX_ST_VIDEO_HEVC                 = 0x24,
 
   /* private stream types */
   TSMUX_ST_PS_AUDIO_AC3               = 0x81,
diff --git a/gst/mve/Makefile.in b/gst/mve/Makefile.in
index ff46b84..43ba43c 100644
--- a/gst/mve/Makefile.in
+++ b/gst/mve/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -327,7 +326,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -349,7 +347,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -371,9 +368,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -535,6 +529,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -548,8 +543,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -636,8 +629,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -689,6 +680,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -709,6 +701,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -746,7 +740,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/mxf/Makefile.in b/gst/mxf/Makefile.in
index af2151a..f161fc7 100644
--- a/gst/mxf/Makefile.in
+++ b/gst/mxf/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -332,7 +331,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -354,7 +352,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -376,9 +373,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -540,6 +534,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -553,8 +548,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -641,8 +634,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -694,6 +685,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -714,6 +706,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -751,7 +745,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/mxf/mxfmetadata.c b/gst/mxf/mxfmetadata.c
index 172bc2e..69aadb5 100644
--- a/gst/mxf/mxfmetadata.c
+++ b/gst/mxf/mxfmetadata.c
@@ -932,20 +932,18 @@
   }
   ret = g_list_prepend (ret, t);
 
-  if (self->dm_schemes) {
-    t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, MXF_UL (DM_SCHEMES), 16);
-    t->size = 8 + 16 * self->n_dm_schemes;
-    t->data = g_slice_alloc0 (t->size);
-    t->g_slice = TRUE;
-    mxf_primer_pack_add_mapping (primer, 0x3b0b, &t->ul);
-    GST_WRITE_UINT32_BE (t->data, self->n_dm_schemes);
-    GST_WRITE_UINT32_BE (t->data + 4, 16);
-    for (i = 0; i < self->n_dm_schemes; i++) {
-      memcpy (t->data + 8 + 16 * i, &self->dm_schemes[i], 16);
-    }
-    ret = g_list_prepend (ret, t);
+  t = g_slice_new0 (MXFLocalTag);
+  memcpy (&t->ul, MXF_UL (DM_SCHEMES), 16);
+  t->size = 8 + 16 * self->n_dm_schemes;
+  t->data = g_slice_alloc0 (t->size);
+  t->g_slice = TRUE;
+  mxf_primer_pack_add_mapping (primer, 0x3b0b, &t->ul);
+  GST_WRITE_UINT32_BE (t->data, self->n_dm_schemes);
+  GST_WRITE_UINT32_BE (t->data + 4, 16);
+  for (i = 0; i < self->n_dm_schemes; i++) {
+    memcpy (t->data + 8 + 16 * i, &self->dm_schemes[i], 16);
   }
+  ret = g_list_prepend (ret, t);
 
   return ret;
 }
@@ -1236,6 +1234,17 @@
     ret = g_list_prepend (ret, t);
   }
 
+  if (!mxf_uuid_is_zero (&self->this_generation_uid)) {
+    t = g_slice_new0 (MXFLocalTag);
+    memcpy (&t->ul, MXF_UL (THIS_GENERATION_UID), 16);
+    t->size = 16;
+    t->data = g_slice_alloc (t->size);
+    t->g_slice = TRUE;
+    memcpy (t->data, &self->this_generation_uid, 16);
+    mxf_primer_pack_add_mapping (primer, 0x3c09, &t->ul);
+    ret = g_list_prepend (ret, t);
+  }
+
   return ret;
 }
 
@@ -4424,15 +4433,25 @@
       if (GST_READ_UINT32_BE (tag_data) == 0)
         return TRUE;
 
-      if (GST_READ_UINT32_BE (tag_data) != 2 &&
-          GST_READ_UINT32_BE (tag_data + 4) != 4)
+      if (GST_READ_UINT32_BE (tag_data + 4) != 4)
         goto error;
 
-      if (tag_size != 16)
+      if (GST_READ_UINT32_BE (tag_data) != 1 &&
+          GST_READ_UINT32_BE (tag_data) != 2)
+        goto error;
+
+      if ((GST_READ_UINT32_BE (tag_data) == 1 && tag_size != 12) ||
+          (GST_READ_UINT32_BE (tag_data) == 2 && tag_size != 16))
         goto error;
 
       self->video_line_map[0] = GST_READ_UINT32_BE (tag_data + 8);
-      self->video_line_map[1] = GST_READ_UINT32_BE (tag_data + 12);
+
+      /* Workaround for files created by ffmpeg */
+      if (GST_READ_UINT32_BE (tag_data) == 1)
+        self->video_line_map[0] = 0;
+      else
+        self->video_line_map[1] = GST_READ_UINT32_BE (tag_data + 12);
+
       GST_DEBUG ("  video line map = {%i, %i}", self->video_line_map[0],
           self->video_line_map[1]);
       break;
@@ -4514,14 +4533,12 @@
   gst_structure_id_set (ret, MXF_QUARK (SIGNAL_STANDARD), G_TYPE_UCHAR,
       self->signal_standard, NULL);
 
-  if (self->frame_layout != 255)
-    gst_structure_id_set (ret, MXF_QUARK (FRAME_LAYOUT), G_TYPE_UCHAR,
-        self->frame_layout, NULL);
+  gst_structure_id_set (ret, MXF_QUARK (FRAME_LAYOUT), G_TYPE_UCHAR,
+      self->frame_layout, NULL);
 
-  if (self->stored_width != 0 && self->stored_height != 0)
-    gst_structure_id_set (ret, MXF_QUARK (STORED_WIDTH), G_TYPE_UINT,
-        self->stored_width, MXF_QUARK (STORED_HEIGHT), G_TYPE_UINT,
-        self->stored_height, NULL);
+  gst_structure_id_set (ret, MXF_QUARK (STORED_WIDTH), G_TYPE_UINT,
+      self->stored_width, MXF_QUARK (STORED_HEIGHT), G_TYPE_UINT,
+      self->stored_height, NULL);
 
   if (self->stored_f2_offset != 0)
     gst_structure_id_set (ret, MXF_QUARK (STORED_F2_OFFSET), G_TYPE_INT,
@@ -4565,10 +4582,9 @@
     gst_structure_id_set (ret, MXF_QUARK (ACTIVE_FORMAT_DESCRIPTOR),
         G_TYPE_UCHAR, self->active_format_descriptor, NULL);
 
-  if (self->video_line_map[0] != 0 && self->video_line_map[1] != 0)
-    gst_structure_id_set (ret, MXF_QUARK (VIDEO_LINE_MAP_0), G_TYPE_UINT,
-        self->video_line_map[0], MXF_QUARK (VIDEO_LINE_MAP_1), G_TYPE_UINT,
-        self->video_line_map[1], NULL);
+  gst_structure_id_set (ret, MXF_QUARK (VIDEO_LINE_MAP_0), G_TYPE_UINT,
+      self->video_line_map[0], MXF_QUARK (VIDEO_LINE_MAP_1), G_TYPE_UINT,
+      self->video_line_map[1], NULL);
 
   if (self->alpha_transparency != 0)
     gst_structure_id_set (ret, MXF_QUARK (ALPHA_TRANSPARENCY), G_TYPE_UCHAR,
@@ -4628,38 +4644,32 @@
     ret = g_list_prepend (ret, t);
   }
 
-  if (self->frame_layout != 255) {
-    t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, MXF_UL (FRAME_LAYOUT), 16);
-    t->size = 1;
-    t->data = g_slice_alloc (t->size);
-    t->g_slice = TRUE;
-    GST_WRITE_UINT8 (t->data, self->frame_layout);
-    mxf_primer_pack_add_mapping (primer, 0x320c, &t->ul);
-    ret = g_list_prepend (ret, t);
-  }
+  t = g_slice_new0 (MXFLocalTag);
+  memcpy (&t->ul, MXF_UL (FRAME_LAYOUT), 16);
+  t->size = 1;
+  t->data = g_slice_alloc (t->size);
+  t->g_slice = TRUE;
+  GST_WRITE_UINT8 (t->data, self->frame_layout);
+  mxf_primer_pack_add_mapping (primer, 0x320c, &t->ul);
+  ret = g_list_prepend (ret, t);
 
-  if (self->stored_width != 0) {
-    t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, MXF_UL (STORED_WIDTH), 16);
-    t->size = 4;
-    t->data = g_slice_alloc (t->size);
-    t->g_slice = TRUE;
-    GST_WRITE_UINT32_BE (t->data, self->stored_width);
-    mxf_primer_pack_add_mapping (primer, 0x3203, &t->ul);
-    ret = g_list_prepend (ret, t);
-  }
+  t = g_slice_new0 (MXFLocalTag);
+  memcpy (&t->ul, MXF_UL (STORED_WIDTH), 16);
+  t->size = 4;
+  t->data = g_slice_alloc (t->size);
+  t->g_slice = TRUE;
+  GST_WRITE_UINT32_BE (t->data, self->stored_width);
+  mxf_primer_pack_add_mapping (primer, 0x3203, &t->ul);
+  ret = g_list_prepend (ret, t);
 
-  if (self->stored_height != 0) {
-    t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, MXF_UL (STORED_HEIGHT), 16);
-    t->size = 4;
-    t->data = g_slice_alloc (t->size);
-    t->g_slice = TRUE;
-    GST_WRITE_UINT32_BE (t->data, self->stored_height);
-    mxf_primer_pack_add_mapping (primer, 0x3202, &t->ul);
-    ret = g_list_prepend (ret, t);
-  }
+  t = g_slice_new0 (MXFLocalTag);
+  memcpy (&t->ul, MXF_UL (STORED_HEIGHT), 16);
+  t->size = 4;
+  t->data = g_slice_alloc (t->size);
+  t->g_slice = TRUE;
+  GST_WRITE_UINT32_BE (t->data, self->stored_height);
+  mxf_primer_pack_add_mapping (primer, 0x3202, &t->ul);
+  ret = g_list_prepend (ret, t);
 
   if (self->stored_f2_offset != 0) {
     t = g_slice_new0 (MXFLocalTag);
@@ -4771,17 +4781,15 @@
     ret = g_list_prepend (ret, t);
   }
 
-  if (self->aspect_ratio.n != 0 && self->aspect_ratio.d != 0) {
-    t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, MXF_UL (ASPECT_RATIO), 16);
-    t->size = 8;
-    t->data = g_slice_alloc (t->size);
-    t->g_slice = TRUE;
-    GST_WRITE_UINT32_BE (t->data, self->aspect_ratio.n);
-    GST_WRITE_UINT32_BE (t->data + 4, self->aspect_ratio.d);
-    mxf_primer_pack_add_mapping (primer, 0x320e, &t->ul);
-    ret = g_list_prepend (ret, t);
-  }
+  t = g_slice_new0 (MXFLocalTag);
+  memcpy (&t->ul, MXF_UL (ASPECT_RATIO), 16);
+  t->size = 8;
+  t->data = g_slice_alloc (t->size);
+  t->g_slice = TRUE;
+  GST_WRITE_UINT32_BE (t->data, self->aspect_ratio.n);
+  GST_WRITE_UINT32_BE (t->data + 4, self->aspect_ratio.d);
+  mxf_primer_pack_add_mapping (primer, 0x320e, &t->ul);
+  ret = g_list_prepend (ret, t);
 
   if (self->active_format_descriptor != 0) {
     t = g_slice_new0 (MXFLocalTag);
@@ -4794,17 +4802,17 @@
     ret = g_list_prepend (ret, t);
   }
 
-  if (self->video_line_map[0] != 0 || self->video_line_map[1] != 0) {
-    t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, MXF_UL (VIDEO_LINE_MAP), 16);
-    t->size = 16;
-    t->data = g_slice_alloc (t->size);
-    t->g_slice = TRUE;
-    GST_WRITE_UINT64_BE (t->data, self->video_line_map[0]);
-    GST_WRITE_UINT64_BE (t->data + 8, self->video_line_map[1]);
-    mxf_primer_pack_add_mapping (primer, 0x320d, &t->ul);
-    ret = g_list_prepend (ret, t);
-  }
+  t = g_slice_new0 (MXFLocalTag);
+  memcpy (&t->ul, MXF_UL (VIDEO_LINE_MAP), 16);
+  t->size = 16;
+  t->data = g_slice_alloc (t->size);
+  t->g_slice = TRUE;
+  GST_WRITE_UINT32_BE (t->data, 2);
+  GST_WRITE_UINT32_BE (t->data + 4, 4);
+  GST_WRITE_UINT32_BE (t->data + 8, self->video_line_map[0]);
+  GST_WRITE_UINT32_BE (t->data + 12, self->video_line_map[1]);
+  mxf_primer_pack_add_mapping (primer, 0x320d, &t->ul);
+  ret = g_list_prepend (ret, t);
 
   if (self->alpha_transparency != 0) {
     t = g_slice_new0 (MXFLocalTag);
@@ -4952,16 +4960,18 @@
   gst_caps_set_simple (caps, "width", G_TYPE_INT, width, "height", G_TYPE_INT,
       height, NULL);
 
-  if (self->aspect_ratio.n == 0 || self->aspect_ratio.d == 0) {
+  if (self->aspect_ratio.n == 0 && self->aspect_ratio.d == 0) {
+    gst_caps_set_simple (caps, "pixel-aspect-ratio", GST_TYPE_FRACTION,
+        1, 1, NULL);
+  } else if (self->aspect_ratio.n == 0 || self->aspect_ratio.d == 0) {
     GST_ERROR ("Invalid aspect ratio");
-    return;
+  } else {
+    par_n = height * self->aspect_ratio.n;
+    par_d = width * self->aspect_ratio.d;
+
+    gst_caps_set_simple (caps, "pixel-aspect-ratio", GST_TYPE_FRACTION,
+        par_n, par_d, NULL);
   }
-
-  par_n = height * self->aspect_ratio.n;
-  par_d = width * self->aspect_ratio.d;
-
-  gst_caps_set_simple (caps, "pixel-aspect-ratio", GST_TYPE_FRACTION,
-      par_n, par_d, NULL);
 }
 
 static gint
@@ -4985,7 +4995,7 @@
   gint fps_n, fps_d;
   MXFMetadataFileDescriptor *f = (MXFMetadataFileDescriptor *) self;
   GstStructure *s;
-  gboolean interlaced;
+  gboolean interlaced = FALSE;
 
   g_return_val_if_fail (MXF_IS_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR
       (self), FALSE);
@@ -5136,13 +5146,11 @@
     gst_structure_id_set (ret, MXF_QUARK (ELECTRO_SPATIAL_FORMULATION),
         G_TYPE_UCHAR, self->electro_spatial_formulation, NULL);
 
-  if (self->channel_count != 0)
-    gst_structure_id_set (ret, MXF_QUARK (CHANNEL_COUNT), G_TYPE_UINT,
-        self->channel_count, NULL);
+  gst_structure_id_set (ret, MXF_QUARK (CHANNEL_COUNT), G_TYPE_UINT,
+      self->channel_count, NULL);
 
-  if (self->quantization_bits != 0)
-    gst_structure_id_set (ret, MXF_QUARK (QUANTIZATION_BITS), G_TYPE_UINT,
-        self->quantization_bits, NULL);
+  gst_structure_id_set (ret, MXF_QUARK (QUANTIZATION_BITS), G_TYPE_UINT,
+      self->quantization_bits, NULL);
 
   if (self->dial_norm != 0)
     gst_structure_id_set (ret, MXF_QUARK (DIAL_NORM), G_TYPE_CHAR,
@@ -5171,17 +5179,15 @@
       (m, primer);
   MXFLocalTag *t;
 
-  if (self->audio_sampling_rate.d && self->audio_sampling_rate.n) {
-    t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, MXF_UL (AUDIO_SAMPLING_RATE), 16);
-    t->size = 8;
-    t->data = g_slice_alloc (t->size);
-    t->g_slice = TRUE;
-    GST_WRITE_UINT32_BE (t->data, self->audio_sampling_rate.n);
-    GST_WRITE_UINT32_BE (t->data + 4, self->audio_sampling_rate.d);
-    mxf_primer_pack_add_mapping (primer, 0x3d03, &t->ul);
-    ret = g_list_prepend (ret, t);
-  }
+  t = g_slice_new0 (MXFLocalTag);
+  memcpy (&t->ul, MXF_UL (AUDIO_SAMPLING_RATE), 16);
+  t->size = 8;
+  t->data = g_slice_alloc (t->size);
+  t->g_slice = TRUE;
+  GST_WRITE_UINT32_BE (t->data, self->audio_sampling_rate.n);
+  GST_WRITE_UINT32_BE (t->data + 4, self->audio_sampling_rate.d);
+  mxf_primer_pack_add_mapping (primer, 0x3d03, &t->ul);
+  ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
   memcpy (&t->ul, MXF_UL (LOCKED), 16);
@@ -5214,27 +5220,23 @@
     ret = g_list_prepend (ret, t);
   }
 
-  if (self->channel_count) {
-    t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, MXF_UL (CHANNEL_COUNT), 16);
-    t->size = 4;
-    t->data = g_slice_alloc (t->size);
-    t->g_slice = TRUE;
-    GST_WRITE_UINT32_BE (t->data, self->channel_count);
-    mxf_primer_pack_add_mapping (primer, 0x3d07, &t->ul);
-    ret = g_list_prepend (ret, t);
-  }
+  t = g_slice_new0 (MXFLocalTag);
+  memcpy (&t->ul, MXF_UL (CHANNEL_COUNT), 16);
+  t->size = 4;
+  t->data = g_slice_alloc (t->size);
+  t->g_slice = TRUE;
+  GST_WRITE_UINT32_BE (t->data, self->channel_count);
+  mxf_primer_pack_add_mapping (primer, 0x3d07, &t->ul);
+  ret = g_list_prepend (ret, t);
 
-  if (self->quantization_bits) {
-    t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, MXF_UL (QUANTIZATION_BITS), 16);
-    t->size = 4;
-    t->data = g_slice_alloc (t->size);
-    t->g_slice = TRUE;
-    GST_WRITE_UINT32_BE (t->data, self->quantization_bits);
-    mxf_primer_pack_add_mapping (primer, 0x3d01, &t->ul);
-    ret = g_list_prepend (ret, t);
-  }
+  t = g_slice_new0 (MXFLocalTag);
+  memcpy (&t->ul, MXF_UL (QUANTIZATION_BITS), 16);
+  t->size = 4;
+  t->data = g_slice_alloc (t->size);
+  t->g_slice = TRUE;
+  GST_WRITE_UINT32_BE (t->data, self->quantization_bits);
+  mxf_primer_pack_add_mapping (primer, 0x3d01, &t->ul);
+  ret = g_list_prepend (ret, t);
 
   if (self->dial_norm != 0) {
     t = g_slice_new0 (MXFLocalTag);
@@ -5265,7 +5267,7 @@
     mxf_metadata_generic_sound_essence_descriptor_init
     (MXFMetadataGenericSoundEssenceDescriptor * self)
 {
-  self->audio_sampling_rate.n = 48000;
+  self->audio_sampling_rate.n = 0;
   self->audio_sampling_rate.d = 1;
   self->electro_spatial_formulation = 255;
 }
@@ -5476,13 +5478,11 @@
   MXFMetadataCDCIPictureEssenceDescriptor *self =
       MXF_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR (m);
 
-  if (self->component_depth != 0)
-    gst_structure_id_set (ret, MXF_QUARK (COMPONENT_DEPTH), G_TYPE_UINT,
-        self->component_depth, NULL);
+  gst_structure_id_set (ret, MXF_QUARK (COMPONENT_DEPTH), G_TYPE_UINT,
+      self->component_depth, NULL);
 
-  if (self->horizontal_subsampling != 0)
-    gst_structure_id_set (ret, MXF_QUARK (HORIZONTAL_SUBSAMPLING), G_TYPE_UINT,
-        self->horizontal_subsampling, NULL);
+  gst_structure_id_set (ret, MXF_QUARK (HORIZONTAL_SUBSAMPLING), G_TYPE_UINT,
+      self->horizontal_subsampling, NULL);
 
   if (self->vertical_subsampling != 0)
     gst_structure_id_set (ret, MXF_QUARK (VERTICAL_SUBSAMPLING), G_TYPE_UINT,
@@ -5530,27 +5530,23 @@
       (m, primer);
   MXFLocalTag *t;
 
-  if (self->component_depth) {
-    t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, MXF_UL (COMPONENT_DEPTH), 16);
-    t->size = 4;
-    t->data = g_slice_alloc (t->size);
-    t->g_slice = TRUE;
-    GST_WRITE_UINT32_BE (t->data, self->component_depth);
-    mxf_primer_pack_add_mapping (primer, 0x3301, &t->ul);
-    ret = g_list_prepend (ret, t);
-  }
+  t = g_slice_new0 (MXFLocalTag);
+  memcpy (&t->ul, MXF_UL (COMPONENT_DEPTH), 16);
+  t->size = 4;
+  t->data = g_slice_alloc (t->size);
+  t->g_slice = TRUE;
+  GST_WRITE_UINT32_BE (t->data, self->component_depth);
+  mxf_primer_pack_add_mapping (primer, 0x3301, &t->ul);
+  ret = g_list_prepend (ret, t);
 
-  if (self->horizontal_subsampling) {
-    t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, MXF_UL (HORIZONTAL_SUBSAMPLING), 16);
-    t->size = 4;
-    t->data = g_slice_alloc (t->size);
-    t->g_slice = TRUE;
-    GST_WRITE_UINT32_BE (t->data, self->horizontal_subsampling);
-    mxf_primer_pack_add_mapping (primer, 0x3302, &t->ul);
-    ret = g_list_prepend (ret, t);
-  }
+  t = g_slice_new0 (MXFLocalTag);
+  memcpy (&t->ul, MXF_UL (HORIZONTAL_SUBSAMPLING), 16);
+  t->size = 4;
+  t->data = g_slice_alloc (t->size);
+  t->g_slice = TRUE;
+  GST_WRITE_UINT32_BE (t->data, self->horizontal_subsampling);
+  mxf_primer_pack_add_mapping (primer, 0x3302, &t->ul);
+  ret = g_list_prepend (ret, t);
 
   if (self->vertical_subsampling) {
     t = g_slice_new0 (MXFLocalTag);
@@ -5728,7 +5724,7 @@
     case 0x3401:{
       guint i, len;
 
-      if (tag_size % 2 != 0)
+      if (tag_size % 2 != 0 || tag_size > 16)
         goto error;
 
       i = 0;
@@ -5741,7 +5737,7 @@
       if (len == 0)
         return TRUE;
 
-      self->pixel_layout = g_malloc0 (2 * len);
+      self->pixel_layout = g_malloc0 (16);
 
       for (i = 0; i < len; i++) {
         self->pixel_layout[2 * i] = tag_data[2 * i];
@@ -5887,17 +5883,15 @@
     ret = g_list_prepend (ret, t);
   }
 
-  if (self->pixel_layout) {
-    t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, MXF_UL (PIXEL_LAYOUT), 16);
-    t->size = 2 * self->n_pixel_layout + 2;
-    t->data = g_slice_alloc0 (t->size);
-    t->g_slice = TRUE;
+  t = g_slice_new0 (MXFLocalTag);
+  memcpy (&t->ul, MXF_UL (PIXEL_LAYOUT), 16);
+  t->size = 16;
+  t->data = g_slice_alloc0 (t->size);
+  t->g_slice = TRUE;
+  if (self->pixel_layout)
     memcpy (t->data, self->pixel_layout, self->n_pixel_layout * 2);
-    mxf_primer_pack_add_mapping (primer, 0x3401, &t->ul);
-    ret = g_list_prepend (ret, t);
-
-  }
+  mxf_primer_pack_add_mapping (primer, 0x3401, &t->ul);
+  ret = g_list_prepend (ret, t);
 
   return ret;
 }
diff --git a/gst/mxf/mxfmpeg.c b/gst/mxf/mxfmpeg.c
index da35722..30ba9cf 100644
--- a/gst/mxf/mxfmpeg.c
+++ b/gst/mxf/mxfmpeg.c
@@ -941,7 +941,7 @@
 
 static const guint8 mpeg_essence_container_ul[] = {
   0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x02,
-  0x0d, 0x01, 0x03, 0x01, 0x02, 0x04, 0x01, 0x01
+  0x0d, 0x01, 0x03, 0x01, 0x02, 0x00, 0x00, 0x01
 };
 
 static MXFMetadataFileDescriptor *
@@ -1016,6 +1016,9 @@
 
   memcpy (&ret->parent.essence_container, &mpeg_essence_container_ul, 16);
 
+  ret->parent.essence_container.u[13] = 0x04;
+  ret->parent.essence_container.u[14] = 0x40;
+
   if (!mxf_metadata_generic_sound_essence_descriptor_from_caps (ret, caps)) {
     g_object_unref (ret);
     return NULL;
@@ -1257,6 +1260,7 @@
 
   memcpy (&ret->parent.parent.parent.essence_container,
       &mpeg_essence_container_ul, 16);
+
   memcpy (&ret->parent.parent.picture_essence_coding,
       &mpeg_video_picture_essence_compression_ul, 16);
   if (strcmp (gst_structure_get_name (s), "video/mpeg") == 0) {
@@ -1273,13 +1277,19 @@
 
       *mapping_data = g_new0 (MXFMPEGEssenceType, 1);
       memcpy (*mapping_data, &type, sizeof (MXFMPEGEssenceType));
+      ret->parent.parent.picture_essence_coding.u[7] = 0x03;
       ret->parent.parent.picture_essence_coding.u[13] = 0x10;
+      ret->parent.parent.parent.essence_container.u[13] = 0x04;
+      ret->parent.parent.parent.essence_container.u[14] = 0x60;
     } else if (mpegversion == 2) {
       MXFMPEGEssenceType type = MXF_MPEG_ESSENCE_TYPE_VIDEO_MPEG2;
 
       *mapping_data = g_new0 (MXFMPEGEssenceType, 1);
       memcpy (*mapping_data, &type, sizeof (MXFMPEGEssenceType));
+      ret->parent.parent.picture_essence_coding.u[7] = 0x01;
       ret->parent.parent.picture_essence_coding.u[13] = 0x01;
+      ret->parent.parent.parent.essence_container.u[13] = 0x04;
+      ret->parent.parent.parent.essence_container.u[14] = 0x60;
     } else {
       const GValue *v;
       const GstBuffer *codec_data;
@@ -1288,7 +1298,10 @@
       *mapping_data = g_new0 (MXFMPEGEssenceType, 1);
       memcpy (*mapping_data, &type, sizeof (MXFMPEGEssenceType));
 
+      ret->parent.parent.picture_essence_coding.u[7] = 0x03;
       ret->parent.parent.picture_essence_coding.u[13] = 0x20;
+      ret->parent.parent.parent.essence_container.u[13] = 0x04;
+      ret->parent.parent.parent.essence_container.u[14] = 0x60;
       if ((v = gst_structure_get_value (s, "codec_data"))) {
         MXFLocalTag *t = g_slice_new0 (MXFLocalTag);
         GstMapInfo map;
@@ -1307,8 +1320,11 @@
 
     *mapping_data = g_new0 (MXFMPEGEssenceType, 1);
     memcpy (*mapping_data, &type, sizeof (MXFMPEGEssenceType));
+    ret->parent.parent.picture_essence_coding.u[7] = 0x0a;
     ret->parent.parent.picture_essence_coding.u[13] = 0x30;
+    ret->parent.parent.parent.essence_container.u[7] = 0x0a;
     ret->parent.parent.parent.essence_container.u[13] = 0x10;
+    ret->parent.parent.parent.essence_container.u[14] = 0x60;
   } else {
     g_assert_not_reached ();
   }
diff --git a/gst/mxf/mxfmux.c b/gst/mxf/mxfmux.c
index c36ae90..d363e7a 100644
--- a/gst/mxf/mxfmux.c
+++ b/gst/mxf/mxfmux.c
@@ -633,18 +633,18 @@
       memcpy (&p->parent.package_modified_date,
           &mux->preface->last_modified_date, sizeof (MXFTimestamp));
 
-      p->parent.n_tracks = GST_ELEMENT_CAST (mux)->numsinkpads;
+      p->parent.n_tracks = GST_ELEMENT_CAST (mux)->numsinkpads + 1;
       p->parent.tracks = g_new0 (MXFMetadataTrack *, p->parent.n_tracks);
 
-      if (p->parent.n_tracks > 1) {
+      if (p->parent.n_tracks > 2) {
         MXFMetadataMultipleDescriptor *d;
 
         p->descriptor = (MXFMetadataGenericDescriptor *)
             g_object_new (MXF_TYPE_METADATA_MULTIPLE_DESCRIPTOR, NULL);
         d = (MXFMetadataMultipleDescriptor *) p->descriptor;
-        d->n_sub_descriptors = p->parent.n_tracks;
+        d->n_sub_descriptors = p->parent.n_tracks - 1;
         d->sub_descriptors =
-            g_new0 (MXFMetadataGenericDescriptor *, p->parent.n_tracks);
+            g_new0 (MXFMetadataGenericDescriptor *, p->parent.n_tracks - 1);
 
         mxf_uuid_init (&MXF_METADATA_BASE (d)->instance_uid, mux->metadata);
         g_hash_table_insert (mux->metadata,
@@ -654,7 +654,9 @@
 
       /* Tracks */
       {
-        guint n = 0;
+        guint n;
+
+        n = 1;
 
         /* Essence tracks */
         for (l = GST_ELEMENT_CAST (mux)->sinkpads; l; l = l->next) {
@@ -723,11 +725,11 @@
           pad->source_package = p;
           pad->source_track = track;
           pad->descriptor->linked_track_id = n + 1;
-          if (p->parent.n_tracks == 1) {
+          if (p->parent.n_tracks == 2) {
             p->descriptor = (MXFMetadataGenericDescriptor *) pad->descriptor;
           } else {
             MXF_METADATA_MULTIPLE_DESCRIPTOR (p->
-                descriptor)->sub_descriptors[n] =
+                descriptor)->sub_descriptors[n - 1] =
                 (MXFMetadataGenericDescriptor *) pad->descriptor;
           }
 
@@ -780,8 +782,7 @@
 
           source_package = MXF_METADATA_SOURCE_PACKAGE (cstorage->packages[1]);
           source_track =
-              MXF_METADATA_TIMELINE_TRACK (source_package->parent.tracks[n -
-                  1]);
+              MXF_METADATA_TIMELINE_TRACK (source_package->parent.tracks[n]);
 
           p->tracks[n] = (MXFMetadataTrack *)
               g_object_new (MXF_TYPE_METADATA_TIMELINE_TRACK, NULL);
@@ -853,7 +854,7 @@
 
           memcpy (&clip->source_package_id, &cstorage->packages[1]->package_uid,
               32);
-          clip->source_track_id = n;
+          clip->source_track_id = n + 1;
 
           n++;
         }
@@ -923,7 +924,71 @@
       }
     }
 
-    for (i = 0; i < cstorage->packages[1]->n_tracks; i++) {
+    /* Timecode track */
+    {
+      MXFMetadataSourcePackage *p;
+      MXFMetadataTimelineTrack *track;
+      MXFMetadataSequence *sequence;
+      MXFMetadataTimecodeComponent *component;
+      guint n = 0;
+
+      p = (MXFMetadataSourcePackage *) cstorage->packages[1];
+
+      p->parent.tracks[n] = (MXFMetadataTrack *)
+          g_object_new (MXF_TYPE_METADATA_TIMELINE_TRACK, NULL);
+      track = (MXFMetadataTimelineTrack *) p->parent.tracks[n];
+      mxf_uuid_init (&MXF_METADATA_BASE (track)->instance_uid, mux->metadata);
+      g_hash_table_insert (mux->metadata,
+          &MXF_METADATA_BASE (track)->instance_uid, track);
+      mux->metadata_list = g_list_prepend (mux->metadata_list, track);
+
+      track->parent.track_id = n + 1;
+      track->parent.track_number = 0;
+      track->parent.track_name = g_strdup ("Timecode track");
+      /* FIXME: Is this correct? */
+      memcpy (&track->edit_rate, &mux->min_edit_rate, sizeof (MXFFraction));
+
+      sequence = track->parent.sequence = (MXFMetadataSequence *)
+          g_object_new (MXF_TYPE_METADATA_SEQUENCE, NULL);
+      mxf_uuid_init (&MXF_METADATA_BASE (sequence)->instance_uid,
+          mux->metadata);
+      g_hash_table_insert (mux->metadata,
+          &MXF_METADATA_BASE (sequence)->instance_uid, sequence);
+      mux->metadata_list = g_list_prepend (mux->metadata_list, sequence);
+
+      memcpy (&sequence->data_definition,
+          mxf_metadata_track_identifier_get
+          (MXF_METADATA_TRACK_TIMECODE_12M_INACTIVE), 16);
+
+      sequence->n_structural_components = 1;
+      sequence->structural_components =
+          g_new0 (MXFMetadataStructuralComponent *, 1);
+
+      component = (MXFMetadataTimecodeComponent *)
+          g_object_new (MXF_TYPE_METADATA_TIMECODE_COMPONENT, NULL);
+      sequence->structural_components[0] =
+          (MXFMetadataStructuralComponent *) component;
+      mxf_uuid_init (&MXF_METADATA_BASE (component)->instance_uid,
+          mux->metadata);
+      g_hash_table_insert (mux->metadata,
+          &MXF_METADATA_BASE (component)->instance_uid, component);
+      mux->metadata_list = g_list_prepend (mux->metadata_list, component);
+
+      memcpy (&component->parent.data_definition,
+          &sequence->data_definition, 16);
+
+      component->start_timecode = 0;
+      if (track->edit_rate.d == 0)
+        component->rounded_timecode_base = 1;
+      else
+        component->rounded_timecode_base =
+            (((gdouble) track->edit_rate.n) /
+            ((gdouble) track->edit_rate.d) + 0.5);
+      /* TODO: drop frame */
+    }
+
+
+    for (i = 1; i < cstorage->packages[1]->n_tracks; i++) {
       MXFMetadataTrack *track = cstorage->packages[1]->tracks[i];
       guint j;
       guint32 templ;
@@ -935,7 +1000,7 @@
       templ = track->track_number;
       n_type = 0;
 
-      for (j = 0; j < cstorage->packages[1]->n_tracks; j++) {
+      for (j = 1; j < cstorage->packages[1]->n_tracks; j++) {
         MXFMetadataTrack *tmp = cstorage->packages[1]->tracks[j];
 
         if (tmp->track_number == templ) {
@@ -944,7 +1009,7 @@
       }
 
       n = 0;
-      for (j = 0; j < cstorage->packages[1]->n_tracks; j++) {
+      for (j = 1; j < cstorage->packages[1]->n_tracks; j++) {
         MXFMetadataTrack *tmp = cstorage->packages[1]->tracks[j];
 
         if (tmp->track_number == templ) {
@@ -970,7 +1035,7 @@
 
     cstorage->essence_container_data[0]->linked_package =
         MXF_METADATA_SOURCE_PACKAGE (cstorage->packages[1]);
-    cstorage->essence_container_data[0]->index_sid = 1;
+    cstorage->essence_container_data[0]->index_sid = 2;
     cstorage->essence_container_data[0]->body_sid = 1;
   }
 
@@ -1263,6 +1328,8 @@
   GstBuffer *buf;
 
   mux->partition.type = MXF_PARTITION_PACK_BODY;
+  mux->partition.closed = TRUE;
+  mux->partition.complete = TRUE;
   mux->partition.this_partition = mux->offset;
   mux->partition.prev_partition = 0;
   mux->partition.footer_partition = 0;
@@ -1379,6 +1446,18 @@
   }
 
   {
+    MXFMetadataTimelineTrack *track =
+        MXF_METADATA_TIMELINE_TRACK (mux->preface->
+        content_storage->packages[1]->tracks[0]);
+    MXFMetadataSequence *sequence = track->parent.sequence;
+    MXFMetadataTimecodeComponent *component =
+        MXF_METADATA_TIMECODE_COMPONENT (sequence->structural_components[0]);
+
+    sequence->duration = mux->last_gc_position;
+    component->parent.duration = mux->last_gc_position;
+  }
+
+  {
     guint64 body_partition = mux->partition.this_partition;
     guint32 body_sid = mux->partition.body_sid;
     guint64 footer_partition = mux->offset;
@@ -1389,6 +1468,7 @@
     GList *index_entries = NULL, *l;
     guint index_byte_count = 0;
     guint i;
+    GstBuffer *buf;
 
     for (i = 0; i < mux->index_table->len; i++) {
       MXFIndexTableSegment *segment =
@@ -1461,6 +1541,28 @@
         GST_ERROR_OBJECT (mux, "Rewriting header partition failed");
         return ret;
       }
+
+      g_assert (mux->offset == body_partition);
+
+      mux->partition.type = MXF_PARTITION_PACK_BODY;
+      mux->partition.closed = TRUE;
+      mux->partition.complete = TRUE;
+      mux->partition.this_partition = mux->offset;
+      mux->partition.prev_partition = 0;
+      mux->partition.footer_partition = footer_partition;
+      mux->partition.header_byte_count = 0;
+      mux->partition.index_byte_count = 0;
+      mux->partition.index_sid = 0;
+      mux->partition.body_offset = 0;
+      mux->partition.body_sid =
+          mux->preface->content_storage->essence_container_data[0]->body_sid;
+
+      buf = mxf_partition_pack_to_buffer (&mux->partition);
+      ret = gst_mxf_mux_push (mux, buf);
+      if (ret != GST_FLOW_OK) {
+        GST_ERROR_OBJECT (mux, "Rewriting body partition failed");
+        return ret;
+      }
     } else {
       GST_WARNING_OBJECT (mux, "Can't rewrite header partition");
     }
diff --git a/gst/mxf/mxftypes.c b/gst/mxf/mxftypes.c
index ab04427..14e2362 100644
--- a/gst/mxf/mxftypes.c
+++ b/gst/mxf/mxftypes.c
@@ -216,7 +216,8 @@
   do {
     for (i = 0; i < 4; i++)
       GST_WRITE_UINT32_BE (&uuid->u[i * 4], g_random_int ());
-
+    uuid->u[6] = 0x40 | (uuid->u[6] & 0x0f);
+    uuid->u[8] = (uuid->u[8] & 0xbf) | 0x80;
   } while (hashtable && (mxf_uuid_is_zero (uuid) ||
           g_hash_table_lookup_extended (hashtable, uuid, NULL, NULL)));
 }
@@ -1585,15 +1586,14 @@
   data += 8;
 
   if (pack->mappings) {
-    guint local_tag;
+    gpointer local_tag;
     MXFUL *ul;
     GHashTableIter iter;
 
     g_hash_table_iter_init (&iter, pack->mappings);
 
-    while (g_hash_table_iter_next (&iter, (gpointer) & local_tag,
-            (gpointer) & ul)) {
-      GST_WRITE_UINT16_BE (data, local_tag);
+    while (g_hash_table_iter_next (&iter, &local_tag, (gpointer) & ul)) {
+      GST_WRITE_UINT16_BE (data, GPOINTER_TO_UINT (local_tag));
       memcpy (data + 2, ul, 16);
       data += 18;
     }
diff --git a/gst/mxf/mxful.c b/gst/mxf/mxful.c
index b5389f6..3d186f9 100644
--- a/gst/mxf/mxful.c
+++ b/gst/mxf/mxful.c
@@ -121,6 +121,9 @@
   {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
           0x06, 0x01, 0x01, 0x04, 0x06, 0x04, 0x00, 0x00}},
   /* CONTENT_STORAGE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x04, 0x02, 0x01, 0x00, 0x00}},
+  /* OPERATIONAL_PATTERN */
   {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
           0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00}},
   /* ESSENCE_CONTAINERS */
@@ -130,6 +133,9 @@
   {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
           0x01, 0x02, 0x02, 0x10, 0x02, 0x02, 0x00, 0x00}},
   /* Identification */
+  /* THIS_GENERATION_UID */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x05, 0x20, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00}},
   /* COMPANY_NAME */
   {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
           0x05, 0x20, 0x07, 0x01, 0x02, 0x01, 0x00, 0x00}},
diff --git a/gst/mxf/mxful.h b/gst/mxf/mxful.h
index 7b76f43..76e3ba6 100644
--- a/gst/mxf/mxful.h
+++ b/gst/mxf/mxful.h
@@ -63,6 +63,7 @@
   MXF_UL_OPERATIONAL_PATTERN,
   MXF_UL_ESSENCE_CONTAINERS,
   MXF_UL_DM_SCHEMES,
+  MXF_UL_THIS_GENERATION_UID,
   MXF_UL_COMPANY_NAME,
   MXF_UL_PRODUCT_NAME,
   MXF_UL_PRODUCT_VERSION,
diff --git a/gst/netsim/Makefile.am b/gst/netsim/Makefile.am
new file mode 100644
index 0000000..c145289
--- /dev/null
+++ b/gst/netsim/Makefile.am
@@ -0,0 +1,9 @@
+plugin_LTLIBRARIES = libgstnetsim.la
+
+libgstnetsim_la_SOURCES = gstnetsim.c
+libgstnetsim_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstnetsim_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS)
+libgstnetsim_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstnetsim_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
+
+noinst_HEADERS = gstnetsim.h
diff --git a/ext/mpg123/Makefile.in b/gst/netsim/Makefile.in
similarity index 90%
rename from ext/mpg123/Makefile.in
rename to gst/netsim/Makefile.in
index e0f8f27..8b6e32f 100644
--- a/ext/mpg123/Makefile.in
+++ b/gst/netsim/Makefile.in
@@ -90,7 +90,7 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-subdir = ext/mpg123
+subdir = gst/netsim
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -164,19 +163,18 @@
 am__installdirs = "$(DESTDIR)$(plugindir)"
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-libgstmpg123_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-am_libgstmpg123_la_OBJECTS = libgstmpg123_la-gstmpg123audiodec.lo
-libgstmpg123_la_OBJECTS = $(am_libgstmpg123_la_OBJECTS)
+libgstnetsim_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgstnetsim_la_OBJECTS = libgstnetsim_la-gstnetsim.lo
+libgstnetsim_la_OBJECTS = $(am_libgstnetsim_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-libgstmpg123_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(libgstmpg123_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(CCLD) $(libgstmpg123_la_CFLAGS) $(CFLAGS) \
-	$(libgstmpg123_la_LDFLAGS) $(LDFLAGS) -o $@
+libgstnetsim_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(libgstnetsim_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	$(CCLD) $(libgstnetsim_la_CFLAGS) $(CFLAGS) \
+	$(libgstnetsim_la_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -211,8 +209,8 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libgstmpg123_la_SOURCES)
-DIST_SOURCES = $(libgstmpg123_la_SOURCES)
+SOURCES = $(libgstnetsim_la_SOURCES)
+DIST_SOURCES = $(libgstnetsim_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -324,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -783,18 +775,13 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
-plugin_LTLIBRARIES = libgstmpg123.la
-libgstmpg123_la_SOURCES = gstmpg123audiodec.c
-libgstmpg123_la_CFLAGS = -DGST_USE_UNSTABLE_API \
-	$(GST_PLUGINS_BASE_CFLAGS) \
-	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(MPG123_CFLAGS)
-
-libgstmpg123_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_API_VERSION@ \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(MPG123_LIBS)
-
-libgstmpg123_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstmpg123_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = gstmpg123audiodec.h
+plugin_LTLIBRARIES = libgstnetsim.la
+libgstnetsim_la_SOURCES = gstnetsim.c
+libgstnetsim_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS)
+libgstnetsim_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS)
+libgstnetsim_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstnetsim_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
+noinst_HEADERS = gstnetsim.h
 all: all-am
 
 .SUFFIXES:
@@ -808,9 +795,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/mpg123/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/netsim/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu ext/mpg123/Makefile
+	  $(AUTOMAKE) --gnu gst/netsim/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -864,8 +851,8 @@
 	  rm -f $${locs}; \
 	}
 
-libgstmpg123.la: $(libgstmpg123_la_OBJECTS) $(libgstmpg123_la_DEPENDENCIES) $(EXTRA_libgstmpg123_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libgstmpg123_la_LINK) -rpath $(plugindir) $(libgstmpg123_la_OBJECTS) $(libgstmpg123_la_LIBADD) $(LIBS)
+libgstnetsim.la: $(libgstnetsim_la_OBJECTS) $(libgstnetsim_la_DEPENDENCIES) $(EXTRA_libgstnetsim_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libgstnetsim_la_LINK) -rpath $(plugindir) $(libgstnetsim_la_OBJECTS) $(libgstnetsim_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -873,7 +860,7 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstnetsim_la-gstnetsim.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -899,12 +886,12 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-libgstmpg123_la-gstmpg123audiodec.lo: gstmpg123audiodec.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpg123_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpg123_la_CFLAGS) $(CFLAGS) -MT libgstmpg123_la-gstmpg123audiodec.lo -MD -MP -MF $(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Tpo -c -o libgstmpg123_la-gstmpg123audiodec.lo `test -f 'gstmpg123audiodec.c' || echo '$(srcdir)/'`gstmpg123audiodec.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Tpo $(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstmpg123audiodec.c' object='libgstmpg123_la-gstmpg123audiodec.lo' libtool=yes @AMDEPBACKSLASH@
+libgstnetsim_la-gstnetsim.lo: gstnetsim.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstnetsim_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstnetsim_la_CFLAGS) $(CFLAGS) -MT libgstnetsim_la-gstnetsim.lo -MD -MP -MF $(DEPDIR)/libgstnetsim_la-gstnetsim.Tpo -c -o libgstnetsim_la-gstnetsim.lo `test -f 'gstnetsim.c' || echo '$(srcdir)/'`gstnetsim.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstnetsim_la-gstnetsim.Tpo $(DEPDIR)/libgstnetsim_la-gstnetsim.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstnetsim.c' object='libgstnetsim_la-gstnetsim.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 $(libgstmpg123_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpg123_la_CFLAGS) $(CFLAGS) -c -o libgstmpg123_la-gstmpg123audiodec.lo `test -f 'gstmpg123audiodec.c' || echo '$(srcdir)/'`gstmpg123audiodec.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstnetsim_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstnetsim_la_CFLAGS) $(CFLAGS) -c -o libgstnetsim_la-gstnetsim.lo `test -f 'gstnetsim.c' || echo '$(srcdir)/'`gstnetsim.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
diff --git a/gst/netsim/gstnetsim.c b/gst/netsim/gstnetsim.c
new file mode 100644
index 0000000..2e15ac3
--- /dev/null
+++ b/gst/netsim/gstnetsim.c
@@ -0,0 +1,472 @@
+/*
+ * GStreamer
+ *
+ *  Copyright 2006 Collabora Ltd,
+ *  Copyright 2006 Nokia Corporation
+ *   @author: Philippe Kalaf <philippe.kalaf@collabora.co.uk>.
+ *  Copyright 2012-2015 Pexip
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+#include "gstnetsim.h"
+
+GST_DEBUG_CATEGORY (netsim_debug);
+#define GST_CAT_DEFAULT (netsim_debug)
+
+
+enum
+{
+  ARG_0,
+  ARG_MIN_DELAY,
+  ARG_MAX_DELAY,
+  ARG_DELAY_PROBABILITY,
+  ARG_DROP_PROBABILITY,
+  ARG_DUPLICATE_PROBABILITY,
+  ARG_DROP_PACKETS
+};
+
+struct _GstNetSimPrivate
+{
+  GstPad *sinkpad, *srcpad;
+
+  GMutex loop_mutex;
+  GCond start_cond;
+  GMainLoop *main_loop;
+  gboolean running;
+
+  GRand *rand_seed;
+  gint min_delay;
+  gint max_delay;
+  gfloat delay_probability;
+  gfloat drop_probability;
+  gfloat duplicate_probability;
+  guint drop_packets;
+};
+
+/* these numbers are nothing but wild guesses and dont reflect any reality */
+#define DEFAULT_MIN_DELAY 200
+#define DEFAULT_MAX_DELAY 400
+#define DEFAULT_DELAY_PROBABILITY 0.0
+#define DEFAULT_DROP_PROBABILITY 0.0
+#define DEFAULT_DUPLICATE_PROBABILITY 0.0
+#define DEFAULT_DROP_PACKETS 0
+
+#define GST_NET_SIM_GET_PRIVATE(o) \
+  (G_TYPE_INSTANCE_GET_PRIVATE ((o), GST_TYPE_NET_SIM, \
+                                GstNetSimPrivate))
+
+static GstStaticPadTemplate gst_net_sim_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate gst_net_sim_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS_ANY);
+
+G_DEFINE_TYPE (GstNetSim, gst_net_sim, GST_TYPE_ELEMENT);
+
+static void
+gst_net_sim_loop (GstNetSim * netsim)
+{
+  GMainLoop *loop;
+
+  GST_TRACE_OBJECT (netsim, "TASK: begin");
+
+  g_mutex_lock (&netsim->priv->loop_mutex);
+  loop = g_main_loop_ref (netsim->priv->main_loop);
+  netsim->priv->running = TRUE;
+  GST_TRACE_OBJECT (netsim, "TASK: signal start");
+  g_cond_signal (&netsim->priv->start_cond);
+  g_mutex_unlock (&netsim->priv->loop_mutex);
+
+  GST_TRACE_OBJECT (netsim, "TASK: run");
+  g_main_loop_run (loop);
+  g_main_loop_unref (loop);
+
+  g_mutex_lock (&netsim->priv->loop_mutex);
+  GST_TRACE_OBJECT (netsim, "TASK: pause");
+  gst_pad_pause_task (netsim->priv->srcpad);
+  netsim->priv->running = FALSE;
+  GST_TRACE_OBJECT (netsim, "TASK: signal end");
+  g_cond_signal (&netsim->priv->start_cond);
+  g_mutex_unlock (&netsim->priv->loop_mutex);
+  GST_TRACE_OBJECT (netsim, "TASK: end");
+}
+
+static gboolean
+_main_loop_quit_and_remove_source (gpointer user_data)
+{
+  GMainLoop *main_loop = user_data;
+  GST_DEBUG ("MAINLOOP: Quit %p", main_loop);
+  g_main_loop_quit (main_loop);
+  g_assert (!g_main_loop_is_running (main_loop));
+  return FALSE;                 /* Remove source */
+}
+
+static gboolean
+gst_net_sim_src_activatemode (GstPad * pad, GstObject * parent,
+    GstPadMode mode, gboolean active)
+{
+  GstNetSim *netsim = GST_NET_SIM (parent);
+  gboolean result = FALSE;
+
+  (void) pad;
+  (void) mode;
+
+  g_mutex_lock (&netsim->priv->loop_mutex);
+  if (active) {
+    if (netsim->priv->main_loop == NULL) {
+      GMainContext *main_context = g_main_context_new ();
+      netsim->priv->main_loop = g_main_loop_new (main_context, FALSE);
+      g_main_context_unref (main_context);
+
+      GST_TRACE_OBJECT (netsim, "ACT: Starting task on srcpad");
+      result = gst_pad_start_task (netsim->priv->srcpad,
+          (GstTaskFunction) gst_net_sim_loop, netsim, NULL);
+
+      GST_TRACE_OBJECT (netsim, "ACT: Wait for task to start");
+      g_assert (!netsim->priv->running);
+      while (!netsim->priv->running)
+        g_cond_wait (&netsim->priv->start_cond, &netsim->priv->loop_mutex);
+      GST_TRACE_OBJECT (netsim, "ACT: Task on srcpad started");
+    }
+  } else {
+    if (netsim->priv->main_loop != NULL) {
+      GSource *source;
+      guint id;
+
+      /* Adds an Idle Source which quits the main loop from within.
+       * This removes the possibility for run/quit race conditions. */
+      GST_TRACE_OBJECT (netsim, "DEACT: Stopping main loop on deactivate");
+      source = g_idle_source_new ();
+      g_source_set_callback (source, _main_loop_quit_and_remove_source,
+          g_main_loop_ref (netsim->priv->main_loop),
+          (GDestroyNotify) g_main_loop_unref);
+      id = g_source_attach (source,
+          g_main_loop_get_context (netsim->priv->main_loop));
+      g_source_unref (source);
+      g_assert_cmpuint (id, >, 0);
+      g_main_loop_unref (netsim->priv->main_loop);
+      netsim->priv->main_loop = NULL;
+
+      GST_TRACE_OBJECT (netsim, "DEACT: Wait for mainloop and task to pause");
+      g_assert (netsim->priv->running);
+      while (netsim->priv->running)
+        g_cond_wait (&netsim->priv->start_cond, &netsim->priv->loop_mutex);
+
+      GST_TRACE_OBJECT (netsim, "DEACT: Stopping task on srcpad");
+      result = gst_pad_stop_task (netsim->priv->srcpad);
+      GST_TRACE_OBJECT (netsim, "DEACT: Mainloop and GstTask stopped");
+    }
+  }
+  g_mutex_unlock (&netsim->priv->loop_mutex);
+
+  return result;
+}
+
+typedef struct
+{
+  GstPad *pad;
+  GstBuffer *buf;
+} PushBufferCtx;
+
+G_INLINE_FUNC PushBufferCtx *
+push_buffer_ctx_new (GstPad * pad, GstBuffer * buf)
+{
+  PushBufferCtx *ctx = g_slice_new (PushBufferCtx);
+  ctx->pad = gst_object_ref (pad);
+  ctx->buf = gst_buffer_ref (buf);
+  return ctx;
+}
+
+G_INLINE_FUNC void
+push_buffer_ctx_free (PushBufferCtx * ctx)
+{
+  if (G_LIKELY (ctx != NULL)) {
+    gst_buffer_unref (ctx->buf);
+    gst_object_unref (ctx->pad);
+    g_slice_free (PushBufferCtx, ctx);
+  }
+}
+
+static gboolean
+push_buffer_ctx_push (PushBufferCtx * ctx)
+{
+  GST_DEBUG_OBJECT (ctx->pad, "Pushing buffer now");
+  gst_pad_push (ctx->pad, gst_buffer_ref (ctx->buf));
+  return FALSE;
+}
+
+static GstFlowReturn
+gst_net_sim_delay_buffer (GstNetSim * netsim, GstBuffer * buf)
+{
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  g_mutex_lock (&netsim->priv->loop_mutex);
+  if (netsim->priv->main_loop != NULL && netsim->priv->delay_probability > 0 &&
+      g_rand_double (netsim->priv->rand_seed) < netsim->priv->delay_probability)
+  {
+    PushBufferCtx *ctx = push_buffer_ctx_new (netsim->priv->srcpad, buf);
+    gint delay = g_rand_int_range (netsim->priv->rand_seed,
+        netsim->priv->min_delay, netsim->priv->max_delay);
+    GSource *source = g_timeout_source_new (delay);
+
+    GST_DEBUG_OBJECT (netsim, "Delaying packet by %d", delay);
+    g_source_set_callback (source, (GSourceFunc) push_buffer_ctx_push,
+        ctx, (GDestroyNotify) push_buffer_ctx_free);
+    g_source_attach (source, g_main_loop_get_context (netsim->priv->main_loop));
+    g_source_unref (source);
+  } else {
+    ret = gst_pad_push (netsim->priv->srcpad, gst_buffer_ref (buf));
+  }
+  g_mutex_unlock (&netsim->priv->loop_mutex);
+
+  return ret;
+}
+
+static GstFlowReturn
+gst_net_sim_chain (GstPad * pad, GstObject * parent, GstBuffer * buf)
+{
+  GstNetSim *netsim = GST_NET_SIM (parent);
+  GstFlowReturn ret = GST_FLOW_OK;
+
+  (void) pad;
+
+  if (netsim->priv->drop_packets > 0) {
+    netsim->priv->drop_packets--;
+    GST_DEBUG_OBJECT (netsim, "Dropping packet (%d left)",
+        netsim->priv->drop_packets);
+  } else if (netsim->priv->drop_probability > 0
+      && g_rand_double (netsim->priv->rand_seed) <
+      (gdouble) netsim->priv->drop_probability) {
+    GST_DEBUG_OBJECT (netsim, "Dropping packet");
+  } else if (netsim->priv->duplicate_probability > 0 &&
+      g_rand_double (netsim->priv->rand_seed) <
+      (gdouble) netsim->priv->duplicate_probability) {
+    GST_DEBUG_OBJECT (netsim, "Duplicating packet");
+    gst_net_sim_delay_buffer (netsim, buf);
+    ret = gst_net_sim_delay_buffer (netsim, buf);
+  } else {
+    ret = gst_net_sim_delay_buffer (netsim, buf);
+  }
+
+  gst_buffer_unref (buf);
+
+  return ret;
+}
+
+
+static void
+gst_net_sim_set_property (GObject * object,
+    guint prop_id, const GValue * value, GParamSpec * pspec)
+{
+  GstNetSim *netsim = GST_NET_SIM (object);
+
+  switch (prop_id) {
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    case ARG_MIN_DELAY:
+      netsim->priv->min_delay = g_value_get_int (value);
+      break;
+    case ARG_MAX_DELAY:
+      netsim->priv->max_delay = g_value_get_int (value);
+      break;
+    case ARG_DELAY_PROBABILITY:
+      netsim->priv->delay_probability = g_value_get_float (value);
+      break;
+    case ARG_DROP_PROBABILITY:
+      netsim->priv->drop_probability = g_value_get_float (value);
+      break;
+    case ARG_DUPLICATE_PROBABILITY:
+      netsim->priv->duplicate_probability = g_value_get_float (value);
+      break;
+    case ARG_DROP_PACKETS:
+      netsim->priv->drop_packets = g_value_get_uint (value);
+      break;
+  }
+}
+
+static void
+gst_net_sim_get_property (GObject * object,
+    guint prop_id, GValue * value, GParamSpec * pspec)
+{
+  GstNetSim *netsim = GST_NET_SIM (object);
+
+  switch (prop_id) {
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    case ARG_MIN_DELAY:
+      g_value_set_int (value, netsim->priv->min_delay);
+      break;
+    case ARG_MAX_DELAY:
+      g_value_set_int (value, netsim->priv->max_delay);
+      break;
+    case ARG_DELAY_PROBABILITY:
+      g_value_set_float (value, netsim->priv->delay_probability);
+      break;
+    case ARG_DROP_PROBABILITY:
+      g_value_set_float (value, netsim->priv->drop_probability);
+      break;
+    case ARG_DUPLICATE_PROBABILITY:
+      g_value_set_float (value, netsim->priv->duplicate_probability);
+      break;
+    case ARG_DROP_PACKETS:
+      g_value_set_uint (value, netsim->priv->drop_packets);
+      break;
+  }
+}
+
+
+static void
+gst_net_sim_init (GstNetSim * netsim)
+{
+  netsim->priv = GST_NET_SIM_GET_PRIVATE (netsim);
+
+  netsim->priv->srcpad =
+      gst_pad_new_from_static_template (&gst_net_sim_src_template, "src");
+  netsim->priv->sinkpad =
+      gst_pad_new_from_static_template (&gst_net_sim_sink_template, "sink");
+
+  gst_element_add_pad (GST_ELEMENT (netsim), netsim->priv->srcpad);
+  gst_element_add_pad (GST_ELEMENT (netsim), netsim->priv->sinkpad);
+
+  g_mutex_init (&netsim->priv->loop_mutex);
+  g_cond_init (&netsim->priv->start_cond);
+  netsim->priv->rand_seed = g_rand_new ();
+  netsim->priv->main_loop = NULL;
+
+  GST_OBJECT_FLAG_SET (netsim->priv->sinkpad,
+      GST_PAD_FLAG_PROXY_CAPS | GST_PAD_FLAG_PROXY_ALLOCATION);
+
+  gst_pad_set_chain_function (netsim->priv->sinkpad,
+      GST_DEBUG_FUNCPTR (gst_net_sim_chain));
+  gst_pad_set_activatemode_function (netsim->priv->srcpad,
+      GST_DEBUG_FUNCPTR (gst_net_sim_src_activatemode));
+}
+
+static void
+gst_net_sim_finalize (GObject * object)
+{
+  GstNetSim *netsim = GST_NET_SIM (object);
+
+  g_rand_free (netsim->priv->rand_seed);
+  g_mutex_clear (&netsim->priv->loop_mutex);
+  g_cond_clear (&netsim->priv->start_cond);
+
+  G_OBJECT_CLASS (gst_net_sim_parent_class)->finalize (object);
+}
+
+static void
+gst_net_sim_dispose (GObject * object)
+{
+  GstNetSim *netsim = GST_NET_SIM (object);
+
+  g_assert (netsim->priv->main_loop == NULL);
+
+  G_OBJECT_CLASS (gst_net_sim_parent_class)->dispose (object);
+}
+
+static void
+gst_net_sim_class_init (GstNetSimClass * klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+
+  g_type_class_add_private (klass, sizeof (GstNetSimPrivate));
+
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&gst_net_sim_src_template));
+  gst_element_class_add_pad_template (gstelement_class,
+      gst_static_pad_template_get (&gst_net_sim_sink_template));
+
+  gst_element_class_set_metadata (gstelement_class,
+      "Network Simulator",
+      "Filter/Network",
+      "An element that simulates network jitter, "
+      "packet loss and packet duplication",
+      "Philippe Kalaf <philippe.kalaf@collabora.co.uk>");
+
+  gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_net_sim_dispose);
+  gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_net_sim_finalize);
+
+  gobject_class->set_property = gst_net_sim_set_property;
+  gobject_class->get_property = gst_net_sim_get_property;
+
+  g_object_class_install_property (gobject_class, ARG_MIN_DELAY,
+      g_param_spec_int ("min-delay", "Minimum delay (ms)",
+          "The minimum delay in ms to apply to buffers",
+          G_MININT, G_MAXINT, DEFAULT_MIN_DELAY,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, ARG_MAX_DELAY,
+      g_param_spec_int ("max-delay", "Maximum delay (ms)",
+          "The maximum delay in ms to apply to buffers",
+          G_MININT, G_MAXINT, DEFAULT_MAX_DELAY,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, ARG_DELAY_PROBABILITY,
+      g_param_spec_float ("delay-probability", "Delay Probability",
+          "The Probability a buffer is delayed",
+          0.0, 1.0, DEFAULT_DELAY_PROBABILITY,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, ARG_DROP_PROBABILITY,
+      g_param_spec_float ("drop-probability", "Drop Probability",
+          "The Probability a buffer is dropped",
+          0.0, 1.0, DEFAULT_DROP_PROBABILITY,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, ARG_DUPLICATE_PROBABILITY,
+      g_param_spec_float ("duplicate-probability", "Duplicate Probability",
+          "The Probability a buffer is duplicated",
+          0.0, 1.0, DEFAULT_DUPLICATE_PROBABILITY,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class, ARG_DROP_PACKETS,
+      g_param_spec_uint ("drop-packets", "Drop Packets",
+          "Drop the next n packets",
+          0, G_MAXUINT, DEFAULT_DROP_PACKETS,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
+
+  GST_DEBUG_CATEGORY_INIT (netsim_debug, "netsim", 0, "Network simulator");
+}
+
+static gboolean
+gst_net_sim_plugin_init (GstPlugin * plugin)
+{
+  return gst_element_register (plugin, "netsim",
+      GST_RANK_MARGINAL, GST_TYPE_NET_SIM);
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+    GST_VERSION_MINOR,
+    netsim,
+    "Network Simulator",
+    gst_net_sim_plugin_init, PACKAGE_VERSION, "LGPL", GST_PACKAGE_NAME,
+    GST_PACKAGE_ORIGIN)
diff --git a/gst/netsim/gstnetsim.h b/gst/netsim/gstnetsim.h
new file mode 100644
index 0000000..1db437e
--- /dev/null
+++ b/gst/netsim/gstnetsim.h
@@ -0,0 +1,72 @@
+/*
+ * Farsight Voice+Video library
+ *
+ *  Copyright 2006 Collabora Ltd,
+ *  Copyright 2006 Nokia Corporation
+ *   @author: Philippe Kalaf <philippe.kalaf@collabora.co.uk>.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ */
+
+#ifndef __GST_NET_SIM_H__
+#define __GST_NET_SIM_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+/* #define's don't like whitespacey bits */
+#define GST_TYPE_NET_SIM \
+  (gst_net_sim_get_type())
+#define GST_NET_SIM(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), \
+  GST_TYPE_NET_SIM,GstNetSim))
+#define GST_NET_SIM_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), \
+  GST_TYPE_NET_SIM,GstNetSimClass))
+#define GST_IS_NET_SIM(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_NET_SIM))
+#define GST_IS_NET_SIM_CLASS(obj) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_NET_SIM))
+
+typedef struct _GstNetSim GstNetSim;
+typedef struct _GstNetSimClass GstNetSimClass;
+typedef struct _GstNetSimPrivate GstNetSimPrivate;
+
+struct _GstNetSim
+{
+  GstElement parent;
+
+  GstNetSimPrivate *priv;
+
+  /*< private > */
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+struct _GstNetSimClass
+{
+  GstElementClass parent_class;
+
+  /*< private > */
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+GType gst_net_sim_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_NET_SIM_H__ */
diff --git a/gst/nuvdemux/Makefile.in b/gst/nuvdemux/Makefile.in
index 15a3d2e..fc59722 100644
--- a/gst/nuvdemux/Makefile.in
+++ b/gst/nuvdemux/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -322,7 +321,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -344,7 +342,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -366,9 +363,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -530,6 +524,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -543,8 +538,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -631,8 +624,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -684,6 +675,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -704,6 +696,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -741,7 +735,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/onvif/Makefile.in b/gst/onvif/Makefile.in
index 99ab850..067abc7 100644
--- a/gst/onvif/Makefile.in
+++ b/gst/onvif/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -322,7 +321,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -344,7 +342,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -366,9 +363,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -530,6 +524,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -543,8 +538,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -631,8 +624,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -684,6 +675,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -704,6 +696,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -741,7 +735,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/patchdetect/Makefile.in b/gst/patchdetect/Makefile.in
index 9958c65..fa7a5cc 100644
--- a/gst/patchdetect/Makefile.in
+++ b/gst/patchdetect/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/pcapparse/Makefile.in b/gst/pcapparse/Makefile.in
index 2bb8ec6..71b498a 100644
--- a/gst/pcapparse/Makefile.in
+++ b/gst/pcapparse/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/pnm/Makefile.in b/gst/pnm/Makefile.in
index 38bef83..3c935b0 100644
--- a/gst/pnm/Makefile.in
+++ b/gst/pnm/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/rawparse/Makefile.in b/gst/rawparse/Makefile.in
index 0dd2393..b314a10 100644
--- a/gst/rawparse/Makefile.in
+++ b/gst/rawparse/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/rawparse/gstrawparse.c b/gst/rawparse/gstrawparse.c
index 0308890..a6468d9 100644
--- a/gst/rawparse/gstrawparse.c
+++ b/gst/rawparse/gstrawparse.c
@@ -222,6 +222,22 @@
   }
 
   rp->negotiated = gst_pad_set_caps (rp->srcpad, caps);
+
+  /* if subclass inplement decide_allocation, send an allocation
+   * query, pass result to subclass and let it handle allocation if needed. */
+  if (rp_class->decide_allocation) {
+    GstQuery *query;
+
+    query = gst_query_new_allocation (caps, TRUE);
+    if (!gst_pad_peer_query (rp->srcpad, query)) {
+      /* not a problem, just debug a little */
+      GST_DEBUG_OBJECT (rp, "peer ALLOCATION query failed");
+    }
+
+    rp_class->decide_allocation (rp, query);
+    gst_query_unref (query);
+  }
+
   gst_caps_unref (caps);
 
   return rp->negotiated;
@@ -233,10 +249,12 @@
   GstFlowReturn ret;
   gint nframes;
   GstRawParseClass *rpclass;
+  gsize size;
 
   rpclass = GST_RAW_PARSE_GET_CLASS (rp);
 
-  nframes = gst_buffer_get_size (buffer) / rp->framesize;
+  size = gst_buffer_get_size (buffer);
+  nframes = size / rp->framesize;
 
   if (rp->segment.rate < 0) {
     rp->n_frames -= nframes;
@@ -257,8 +275,8 @@
     GST_BUFFER_DURATION (buffer) = GST_CLOCK_TIME_NONE;
   }
 
-  if (rpclass->set_buffer_flags) {
-    rpclass->set_buffer_flags (rp, buffer);
+  if (rpclass->pre_push_buffer) {
+    rpclass->pre_push_buffer (rp, buffer);
   }
 
   if (rp->discont) {
@@ -267,7 +285,7 @@
   }
 
   if (rp->segment.rate >= 0) {
-    rp->offset += gst_buffer_get_size (buffer);
+    rp->offset += size;
     rp->n_frames += nframes;
   }
 
diff --git a/gst/rawparse/gstrawparse.h b/gst/rawparse/gstrawparse.h
index f62bb98..2327dc6 100644
--- a/gst/rawparse/gstrawparse.h
+++ b/gst/rawparse/gstrawparse.h
@@ -77,7 +77,8 @@
   GstElementClass parent_class;
 
   GstCaps * (*get_caps) (GstRawParse *rp);
-  void (*set_buffer_flags) (GstRawParse *rp, GstBuffer *buffer);
+  void (*pre_push_buffer) (GstRawParse *rp, GstBuffer *buffer);
+  void (*decide_allocation) (GstRawParse *rp, GstQuery *query);
 
   gboolean multiple_frames_per_buffer;
 };
diff --git a/gst/rawparse/gstvideoparse.c b/gst/rawparse/gstvideoparse.c
index b8bc7d1..7b5e037 100644
--- a/gst/rawparse/gstvideoparse.c
+++ b/gst/rawparse/gstvideoparse.c
@@ -37,10 +37,14 @@
     GValue * value, GParamSpec * pspec);
 
 static GstCaps *gst_video_parse_get_caps (GstRawParse * rp);
-static void gst_video_parse_set_buffer_flags (GstRawParse * rp,
+static void gst_video_parse_pre_push_buffer (GstRawParse * rp,
     GstBuffer * buffer);
+static void gst_video_parse_decide_allocation (GstRawParse * rp,
+    GstQuery * query);
 
-static void gst_video_parse_update_frame_size (GstVideoParse * vp);
+static void gst_video_parse_update_info (GstVideoParse * vp);
+static gboolean gst_video_parse_deserialize_int_array (const gchar * str,
+    gint * dest, guint n_values);
 
 GST_DEBUG_CATEGORY_STATIC (gst_video_parse_debug);
 #define GST_CAT_DEFAULT gst_video_parse_debug
@@ -54,7 +58,10 @@
   PROP_PAR,
   PROP_FRAMERATE,
   PROP_INTERLACED,
-  PROP_TOP_FIELD_FIRST
+  PROP_TOP_FIELD_FIRST,
+  PROP_STRIDES,
+  PROP_OFFSETS,
+  PROP_FRAMESIZE
 };
 
 #define gst_video_parse_parent_class parent_class
@@ -72,7 +79,8 @@
   gobject_class->get_property = gst_video_parse_get_property;
 
   rp_class->get_caps = gst_video_parse_get_caps;
-  rp_class->set_buffer_flags = gst_video_parse_set_buffer_flags;
+  rp_class->pre_push_buffer = gst_video_parse_pre_push_buffer;
+  rp_class->decide_allocation = gst_video_parse_decide_allocation;
 
   g_object_class_install_property (gobject_class, PROP_FORMAT,
       g_param_spec_enum ("format", "Format", "Format of images in raw stream",
@@ -100,6 +108,18 @@
       g_param_spec_boolean ("top-field-first", "Top field first",
           "True if top field is earlier than bottom field", TRUE,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_STRIDES,
+      g_param_spec_string ("strides", "Strides",
+          "Stride of each planes in bytes using string format: 's0,s1,s2,s3'",
+          NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_OFFSETS,
+      g_param_spec_string ("offsets", "Offsets",
+          "Offset of each planes in bytes using string format: 'o0,o1,o2,o3'",
+          NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_FRAMESIZE,
+      g_param_spec_uint ("framesize", "Framesize",
+          "Size of an image in raw stream (0: default)", 0, G_MAXUINT, 0,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   gst_element_class_set_static_metadata (gstelement_class, "Video Parse",
       "Filter/Video",
@@ -126,8 +146,8 @@
   vp->par_n = 1;
   vp->par_d = 1;
 
-  gst_video_parse_update_frame_size (vp);
   gst_raw_parse_set_fps (GST_RAW_PARSE (vp), 25, 1);
+  gst_video_parse_update_info (vp);
 }
 
 static void
@@ -163,12 +183,35 @@
     case PROP_TOP_FIELD_FIRST:
       vp->top_field_first = g_value_get_boolean (value);
       break;
+    case PROP_STRIDES:
+      if (gst_video_parse_deserialize_int_array (g_value_get_string (value),
+              vp->stride, GST_VIDEO_MAX_PLANES)) {
+        vp->stride_set = TRUE;
+      } else {
+        GST_WARNING_OBJECT (vp, "failed to deserialize given strides");
+        vp->stride_set = FALSE;
+      }
+
+      break;
+    case PROP_OFFSETS:
+      if (gst_video_parse_deserialize_int_array (g_value_get_string (value),
+              vp->offset, GST_VIDEO_MAX_PLANES)) {
+        vp->offset_set = TRUE;
+      } else {
+        GST_WARNING_OBJECT (vp, "failed to deserialized given offsets");
+        vp->offset_set = FALSE;
+      }
+
+      break;
+    case PROP_FRAMESIZE:
+      vp->framesize = g_value_get_uint (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
   }
 
-  gst_video_parse_update_frame_size (vp);
+  gst_video_parse_update_info (vp);
 }
 
 static void
@@ -203,22 +246,259 @@
     case PROP_TOP_FIELD_FIRST:
       g_value_set_boolean (value, vp->top_field_first);
       break;
+    case PROP_STRIDES:
+    {
+      gchar *tmp;
+
+      tmp = g_strdup_printf ("%d,%d,%d,%d", vp->info.stride[0],
+          vp->info.stride[1], vp->info.stride[2], vp->info.stride[3]);
+      g_value_set_string (value, tmp);
+      g_free (tmp);
+      break;
+    }
+    case PROP_OFFSETS:
+    {
+      gchar *tmp;
+
+      tmp = g_strdup_printf ("%" G_GSIZE_FORMAT ",%" G_GSIZE_FORMAT
+          ",%" G_GSIZE_FORMAT ",%" G_GSIZE_FORMAT, vp->info.offset[0],
+          vp->info.offset[1], vp->info.offset[2], vp->info.offset[3]);
+      g_value_set_string (value, tmp);
+      g_free (tmp);
+      break;
+    }
+    case PROP_FRAMESIZE:
+      g_value_set_uint (value, vp->info.size);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
   }
 }
 
-void
-gst_video_parse_update_frame_size (GstVideoParse * vp)
+static gboolean
+gst_video_parse_deserialize_int_array (const gchar * str, gint * dest,
+    guint n_values)
 {
+  gchar **strv;
+  guint length;
+  guint i;
+
+  strv = g_strsplit (str, ",", n_values);
+  if (strv == NULL)
+    return FALSE;
+
+  length = g_strv_length (strv);
+
+  for (i = 0; i < length; i++) {
+    gint64 val;
+
+    val = g_ascii_strtoll (strv[i], NULL, 10);
+    if (val < G_MININT || val > G_MAXINT) {
+      g_strfreev (strv);
+      return FALSE;
+    }
+
+    dest[i] = val;
+  }
+
+  /* fill remaining values with 0 */
+  for (i = length; i < n_values; i++)
+    dest[i] = 0;
+
+  g_strfreev (strv);
+
+  return TRUE;
+}
+
+static inline gsize
+gst_video_parse_get_plane_size (GstVideoInfo * info, guint plane)
+{
+  gsize size = 0;
+
+  if (GST_VIDEO_FORMAT_INFO_IS_TILED (info->finfo)) {
+    gint tile_width, tile_height, x_tiles, y_tiles;
+
+    tile_width = 1 << GST_VIDEO_FORMAT_INFO_TILE_WS (info->finfo);
+    tile_height = 1 << GST_VIDEO_FORMAT_INFO_TILE_HS (info->finfo);
+    x_tiles = GST_VIDEO_TILE_X_TILES (info->stride[plane]);
+    y_tiles = GST_VIDEO_TILE_Y_TILES (info->stride[plane]);
+
+    /* plane size is the size of one tile multiplied by the number of tiles */
+    size = tile_width * tile_height * x_tiles * y_tiles;
+  } else {
+    size = info->stride[plane] *
+        GST_VIDEO_FORMAT_INFO_SCALE_HEIGHT (info->finfo, plane, info->height);
+  }
+
+  return size;
+}
+
+
+static gboolean
+gst_video_parse_update_stride (GstVideoParse * vp)
+{
+  GstVideoInfo *info = &vp->info;
+  guint i;
+
+  /* 1. check that provided strides are greater than the default ones */
+  for (i = 0; i < GST_VIDEO_INFO_N_PLANES (info); i++) {
+    if (GST_VIDEO_FORMAT_INFO_IS_TILED (info->finfo)) {
+      /* for tiled format, make sure there is more tiles than default */
+      gint default_x_tiles, default_y_tiles, x_tiles, y_tiles;
+
+      x_tiles = GST_VIDEO_TILE_X_TILES (vp->stride[i]);
+      y_tiles = GST_VIDEO_TILE_Y_TILES (vp->stride[i]);
+      default_x_tiles = GST_VIDEO_TILE_X_TILES (info->stride[i]);
+      default_y_tiles = GST_VIDEO_TILE_Y_TILES (info->stride[i]);
+
+      if (x_tiles < default_x_tiles) {
+        GST_WARNING_OBJECT (vp,
+            "x_tiles for plane %u is too small: got %d, min %d", i, x_tiles,
+            default_x_tiles);
+        return FALSE;
+      }
+
+      if (y_tiles < default_y_tiles) {
+        GST_WARNING_OBJECT (vp,
+            "y_tiles for plane %u is too small: got %d, min %d", i, y_tiles,
+            default_y_tiles);
+        return FALSE;
+      }
+    } else {
+      if (vp->stride[i] < info->stride[i]) {
+        GST_WARNING_OBJECT (vp,
+            "stride for plane %u is too small: got %d, min %d", i,
+            vp->stride[i], info->stride[i]);
+        return FALSE;
+      }
+    }
+  }
+
+  /* 2. update stride and plane offsets */
+  for (i = 0; i < GST_VIDEO_INFO_N_PLANES (info); i++) {
+    if (vp->stride[i] != info->stride[i]) {
+      info->stride[i] = vp->stride[i];
+
+      if (i > 0) {
+        /* update offset to reflect stride change for plane > 0 */
+        info->offset[i] = info->offset[i - 1] +
+            gst_video_parse_get_plane_size (info, i - 1);
+      }
+
+      vp->need_videometa = TRUE;
+    }
+  }
+
+  return TRUE;
+}
+
+static gboolean
+gst_video_parse_update_offset (GstVideoParse * vp)
+{
+  GstVideoInfo *info = &vp->info;
+  guint i;
+
+  /* 1. check that provided offsets are greaters than the default ones and are
+   * consistent with plane size */
+  for (i = 0; i < GST_VIDEO_INFO_N_PLANES (info); i++) {
+    gsize min_offset = info->offset[i];
+
+    if (i > 0)
+      min_offset = MAX (min_offset,
+          vp->offset[i - 1] + gst_video_parse_get_plane_size (info, i - 1));
+
+    if (vp->offset[i] < min_offset) {
+      GST_WARNING_OBJECT (vp,
+          "offset for plane %u is too small: got %d, min %" G_GSIZE_FORMAT, i,
+          vp->offset[i], min_offset);
+      return FALSE;
+    }
+  }
+
+  /* 2. update offsets */
+  for (i = 0; i < GST_VIDEO_INFO_N_PLANES (info); i++) {
+    if (vp->offset[i] != info->offset[i]) {
+      info->offset[i] = vp->offset[i];
+      vp->need_videometa = TRUE;
+    }
+  }
+
+  return TRUE;
+}
+
+static void
+gst_video_parse_update_info (GstVideoParse * vp)
+{
+  GstVideoInfo *info = &vp->info;
+  gint fps_n, fps_d;
   gint framesize;
-  GstVideoInfo info;
+  guint i;
+  gboolean update_size = FALSE;
 
-  gst_video_info_init (&info);
-  gst_video_info_set_format (&info, vp->format, vp->width, vp->height);
-  framesize = GST_VIDEO_INFO_SIZE (&info);
+  gst_raw_parse_get_fps (GST_RAW_PARSE (vp), &fps_n, &fps_d);
 
+  gst_video_info_init (info);
+  gst_video_info_set_format (info, vp->format, vp->width, vp->height);
+  info->fps_n = fps_n;
+  info->fps_d = fps_d;
+  info->par_n = vp->par_n;
+  info->par_d = vp->par_d;
+  info->interlace_mode = vp->interlaced ?
+      GST_VIDEO_INTERLACE_MODE_INTERLEAVED :
+      GST_VIDEO_INTERLACE_MODE_PROGRESSIVE;
+
+  vp->need_videometa = FALSE;
+
+  if (vp->stride_set) {
+    if (gst_video_parse_update_stride (vp))
+      update_size = TRUE;
+    else
+      GST_WARNING_OBJECT (vp, "invalid strides set, use default ones");
+  }
+
+  if (vp->offset_set) {
+    if (gst_video_parse_update_offset (vp))
+      update_size = TRUE;
+    else
+      GST_WARNING_OBJECT (vp, "invalid offsets set, use default ones");
+  }
+
+  if (update_size) {
+    framesize = 0;
+
+    for (i = 0; i < GST_VIDEO_INFO_N_PLANES (info); i++) {
+      gint planesize = info->offset[i];
+      planesize += gst_video_parse_get_plane_size (info, i);
+
+      if (planesize > framesize)
+        framesize = planesize;
+    }
+
+    info->size = framesize;
+  }
+
+  if (vp->framesize) {
+    /* user requires a specific framesize, just make sure it's bigger than
+     * the current one */
+
+    if (vp->framesize > vp->info.size)
+      vp->info.size = vp->framesize;
+    else
+      GST_WARNING_OBJECT (vp, "invalid framesize set: got %u, min: %"
+          G_GSIZE_FORMAT, vp->framesize, vp->info.size);
+  }
+
+  GST_DEBUG_OBJECT (vp, "video info: %ux%u, format %s, size %" G_GSIZE_FORMAT
+      ", stride {%d,%d,%d,%d}, offset {%" G_GSIZE_FORMAT ",%" G_GSIZE_FORMAT
+      ",%" G_GSIZE_FORMAT ",%" G_GSIZE_FORMAT "}",
+      GST_VIDEO_INFO_WIDTH (info), GST_VIDEO_INFO_HEIGHT (info),
+      GST_VIDEO_INFO_NAME (info), GST_VIDEO_INFO_SIZE (info),
+      info->stride[0], info->stride[1], info->stride[2], info->stride[3],
+      info->offset[0], info->offset[1], info->offset[2], info->offset[3]);
+
+  /* update base class framesize */
+  framesize = GST_VIDEO_INFO_SIZE (info);
   gst_raw_parse_set_framesize (GST_RAW_PARSE (vp), framesize);
 }
 
@@ -226,32 +506,70 @@
 gst_video_parse_get_caps (GstRawParse * rp)
 {
   GstVideoParse *vp = GST_VIDEO_PARSE (rp);
-  GstVideoInfo info;
-  GstCaps *caps;
-  gint fps_n, fps_d;
 
-  gst_raw_parse_get_fps (rp, &fps_n, &fps_d);
+  return gst_video_info_to_caps (&vp->info);
+}
 
-  gst_video_info_init (&info);
-  gst_video_info_set_format (&info, vp->format, vp->width, vp->height);
-  info.fps_n = fps_n;
-  info.fps_d = fps_d;
-  info.par_n = vp->par_n;
-  info.par_d = vp->par_d;
-  info.interlace_mode = vp->interlaced ?
-      GST_VIDEO_INTERLACE_MODE_INTERLEAVED :
-      GST_VIDEO_INTERLACE_MODE_PROGRESSIVE;
+static gboolean
+gst_video_parse_copy_frame (GstVideoParse * vp, GstBuffer * dest,
+    GstVideoInfo * dest_info, GstBuffer * src, GstVideoInfo * src_info)
+{
+  GstVideoFrame src_frame;
+  GstVideoFrame dest_frame;
+  gboolean ret;
 
-  caps = gst_video_info_to_caps (&info);
+  if (!gst_video_frame_map (&src_frame, src_info, src, GST_MAP_READ)) {
+    GST_ERROR_OBJECT (vp, "failed to map src frame");
+    return FALSE;
+  }
 
-  return caps;
+  if (!gst_video_frame_map (&dest_frame, dest_info, dest, GST_MAP_WRITE)) {
+    GST_ERROR_OBJECT (vp, "failed to map dest frame");
+    gst_video_frame_unmap (&src_frame);
+    return FALSE;
+  }
+
+  ret = gst_video_frame_copy (&dest_frame, &src_frame);
+
+  gst_video_frame_unmap (&src_frame);
+  gst_video_frame_unmap (&dest_frame);
+
+  return ret;
 }
 
 static void
-gst_video_parse_set_buffer_flags (GstRawParse * rp, GstBuffer * buffer)
+gst_video_parse_pre_push_buffer (GstRawParse * rp, GstBuffer * buffer)
 {
   GstVideoParse *vp = GST_VIDEO_PARSE (rp);
 
+  if (vp->do_copy) {
+    GstVideoInfo info;
+    GstBuffer *outbuf;
+
+    gst_video_info_init (&info);
+    gst_video_info_set_format (&info, vp->format, vp->width, vp->height);
+
+    GST_DEBUG_OBJECT (vp, "copying frame to remove padding");
+
+    outbuf = gst_buffer_new_allocate (NULL, GST_VIDEO_INFO_SIZE (&info), NULL);
+
+    if (!gst_video_parse_copy_frame (vp, outbuf, &info, buffer, &vp->info))
+      GST_WARNING_OBJECT (vp, "failed to copy frame");
+
+    gst_buffer_replace_all_memory (buffer, gst_buffer_get_all_memory (outbuf));
+    gst_buffer_unref (outbuf);
+  } else {
+    GstVideoInfo *info = &vp->info;
+    GstVideoFrameFlags flags = GST_VIDEO_FRAME_FLAG_NONE;
+
+    if (vp->interlaced && vp->top_field_first)
+      flags = GST_VIDEO_FRAME_FLAG_TFF;
+
+    gst_buffer_add_video_meta_full (buffer, flags, GST_VIDEO_INFO_FORMAT (info),
+        GST_VIDEO_INFO_WIDTH (info), GST_VIDEO_INFO_HEIGHT (info),
+        GST_VIDEO_INFO_N_PLANES (info), info->offset, info->stride);
+  }
+
   if (vp->interlaced) {
     if (vp->top_field_first) {
       GST_BUFFER_FLAG_SET (buffer, GST_VIDEO_BUFFER_FLAG_TFF);
@@ -260,3 +578,20 @@
     }
   }
 }
+
+static void
+gst_video_parse_decide_allocation (GstRawParse * rp, GstQuery * query)
+{
+  GstVideoParse *vp = GST_VIDEO_PARSE (rp);
+  gboolean has_videometa;
+
+  has_videometa = gst_query_find_allocation_meta (query,
+      GST_VIDEO_META_API_TYPE, NULL);
+
+  /* no need to copy if downstream supports videometa or if we don't need
+   * them */
+  if (has_videometa || !vp->need_videometa)
+    return;
+
+  vp->do_copy = TRUE;
+}
diff --git a/gst/rawparse/gstvideoparse.h b/gst/rawparse/gstvideoparse.h
index b4173df..dd540c5 100644
--- a/gst/rawparse/gstvideoparse.h
+++ b/gst/rawparse/gstvideoparse.h
@@ -48,6 +48,12 @@
 {
   GstRawParse parent;
 
+  GstVideoInfo info;
+  gboolean do_copy;
+  gboolean need_videometa;
+  gboolean stride_set;
+  gboolean offset_set;
+
   /* properties */
   GstVideoFormat format;
   gint width;
@@ -55,6 +61,9 @@
   gint par_n, par_d;
   gboolean interlaced;
   gboolean top_field_first;
+  gint stride[GST_VIDEO_MAX_PLANES];
+  gint offset[GST_VIDEO_MAX_PLANES];
+  guint framesize;
 };
 
 struct _GstVideoParseClass
diff --git a/gst/removesilence/Makefile.in b/gst/removesilence/Makefile.in
index ecd0b53..6340dd5 100644
--- a/gst/removesilence/Makefile.in
+++ b/gst/removesilence/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/rtp/Makefile.am b/gst/rtp/Makefile.am
deleted file mode 100644
index 8566ed0..0000000
--- a/gst/rtp/Makefile.am
+++ /dev/null
@@ -1,25 +0,0 @@
-plugin_LTLIBRARIES = libgstrtpbad.la
-
-libgstrtpbad_la_SOURCES = \
-	gstrtp.c \
-	gstrtph265depay.c \
-	gstrtph265pay.c
-
-libgstrtpbad_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) \
-	$(GST_CFLAGS)
-
-libgstrtpbad_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
-	$(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$(GST_API_VERSION).la \
-	-lgstaudio-@GST_API_VERSION@ \
-	-lgstvideo-@GST_API_VERSION@ \
-	-lgsttag-@GST_API_VERSION@ \
-	-lgstrtp-@GST_API_VERSION@ \
-	-lgstpbutils-@GST_API_VERSION@ \
-	$(GST_BASE_LIBS) $(GST_LIBS) \
-	$(LIBM)
-libgstrtpbad_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstrtpbad_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-
-noinst_HEADERS =			\
-	gstrtph265depay.h \
-	gstrtph265pay.h
diff --git a/gst/rtp/Makefile.in b/gst/rtp/Makefile.in
deleted file mode 100644
index 381e8b1..0000000
--- a/gst/rtp/Makefile.in
+++ /dev/null
@@ -1,1159 +0,0 @@
-# Makefile.in generated by automake 1.15 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2014 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-subdir = gst/rtp
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
-	$(top_srcdir)/common/m4/as-auto-alt.m4 \
-	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
-	$(top_srcdir)/common/m4/as-libtool.m4 \
-	$(top_srcdir)/common/m4/as-version.m4 \
-	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
-	$(top_srcdir)/common/m4/ax_pthread.m4 \
-	$(top_srcdir)/common/m4/gst-arch.m4 \
-	$(top_srcdir)/common/m4/gst-args.m4 \
-	$(top_srcdir)/common/m4/gst-check.m4 \
-	$(top_srcdir)/common/m4/gst-default.m4 \
-	$(top_srcdir)/common/m4/gst-dowhile.m4 \
-	$(top_srcdir)/common/m4/gst-error.m4 \
-	$(top_srcdir)/common/m4/gst-feature.m4 \
-	$(top_srcdir)/common/m4/gst-gettext.m4 \
-	$(top_srcdir)/common/m4/gst-glib2.m4 \
-	$(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
-	$(top_srcdir)/common/m4/gst-platform.m4 \
-	$(top_srcdir)/common/m4/gst-plugin-docs.m4 \
-	$(top_srcdir)/common/m4/gst-plugindir.m4 \
-	$(top_srcdir)/common/m4/gst.m4 \
-	$(top_srcdir)/common/m4/gtk-doc.m4 \
-	$(top_srcdir)/common/m4/introspection.m4 \
-	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
-	$(am__DIST_COMMON)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(plugin_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-libgstrtpbad_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$(GST_API_VERSION).la \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-am_libgstrtpbad_la_OBJECTS = libgstrtpbad_la-gstrtp.lo \
-	libgstrtpbad_la-gstrtph265depay.lo \
-	libgstrtpbad_la-gstrtph265pay.lo
-libgstrtpbad_la_OBJECTS = $(am_libgstrtpbad_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-am__v_lt_1 = 
-libgstrtpbad_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(libgstrtpbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(CCLD) $(libgstrtpbad_la_CFLAGS) $(CFLAGS) \
-	$(libgstrtpbad_la_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
-	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC      " $@;
-am__v_CC_1 = 
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD    " $@;
-am__v_CCLD_1 = 
-SOURCES = $(libgstrtpbad_la_SOURCES)
-DIST_SOURCES = $(libgstrtpbad_la_SOURCES)
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-HEADERS = $(noinst_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-ACMENC_CFLAGS = @ACMENC_CFLAGS@
-ACMMP3DEC_CFLAGS = @ACMMP3DEC_CFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-APEXSINK_CFLAGS = @APEXSINK_CFLAGS@
-APEXSINK_LIBS = @APEXSINK_LIBS@
-AR = @AR@
-AS = @AS@
-ASSRENDER_CFLAGS = @ASSRENDER_CFLAGS@
-ASSRENDER_LIBS = @ASSRENDER_LIBS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BLUEZ5_CFLAGS = @BLUEZ5_CFLAGS@
-BLUEZ5_LIBS = @BLUEZ5_LIBS@
-BS2B_CFLAGS = @BS2B_CFLAGS@
-BS2B_LIBS = @BS2B_LIBS@
-BZ2_LIBS = @BZ2_LIBS@
-CC = @CC@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CHROMAPRINT_CFLAGS = @CHROMAPRINT_CFLAGS@
-CHROMAPRINT_LIBS = @CHROMAPRINT_LIBS@
-CLUTTER_CFLAGS = @CLUTTER_CFLAGS@
-CLUTTER_GLX_CFLAGS = @CLUTTER_GLX_CFLAGS@
-CLUTTER_GLX_LIBS = @CLUTTER_GLX_LIBS@
-CLUTTER_LIBS = @CLUTTER_LIBS@
-CLUTTER_X11_CFLAGS = @CLUTTER_X11_CFLAGS@
-CLUTTER_X11_LIBS = @CLUTTER_X11_LIBS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CUDA_CFLAGS = @CUDA_CFLAGS@
-CUDA_LIBS = @CUDA_LIBS@
-CURL_CFLAGS = @CURL_CFLAGS@
-CURL_LIBS = @CURL_LIBS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DAALA_CFLAGS = @DAALA_CFLAGS@
-DAALA_LIBS = @DAALA_LIBS@
-DCCP_LIBS = @DCCP_LIBS@
-DECKLINK_CXXFLAGS = @DECKLINK_CXXFLAGS@
-DECKLINK_LIBS = @DECKLINK_LIBS@
-DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
-DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
-DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
-DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
-DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
-DIRECT3D_LIBS = @DIRECT3D_LIBS@
-DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@
-DIRECTFB_LIBS = @DIRECTFB_LIBS@
-DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
-DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
-DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-DTLS_CFLAGS = @DTLS_CFLAGS@
-DTLS_LIBS = @DTLS_LIBS@
-DTS_LIBS = @DTS_LIBS@
-DUMPBIN = @DUMPBIN@
-DVDNAV_CFLAGS = @DVDNAV_CFLAGS@
-DVDNAV_LIBS = @DVDNAV_LIBS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGL_CFLAGS = @EGL_CFLAGS@
-EGL_LIBS = @EGL_LIBS@
-EGREP = @EGREP@
-ERROR_CFLAGS = @ERROR_CFLAGS@
-ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
-ERROR_OBJCFLAGS = @ERROR_OBJCFLAGS@
-EXEEXT = @EXEEXT@
-EXIF_CFLAGS = @EXIF_CFLAGS@
-EXIF_LIBS = @EXIF_LIBS@
-FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
-FAAD_LIBS = @FAAD_LIBS@
-FFLAGS = @FFLAGS@
-FGREP = @FGREP@
-FLITE_CFLAGS = @FLITE_CFLAGS@
-FLITE_LIBS = @FLITE_LIBS@
-FLUIDSYNTH_CFLAGS = @FLUIDSYNTH_CFLAGS@
-FLUIDSYNTH_LIBS = @FLUIDSYNTH_LIBS@
-GCOV = @GCOV@
-GCOV_CFLAGS = @GCOV_CFLAGS@
-GCOV_LIBS = @GCOV_LIBS@
-GDBUS_CODEGEN = @GDBUS_CODEGEN@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
-GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GIO_CFLAGS = @GIO_CFLAGS@
-GIO_LDFLAGS = @GIO_LDFLAGS@
-GIO_LIBS = @GIO_LIBS@
-GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@
-GIO_UNIX_LIBS = @GIO_UNIX_LIBS@
-GLES2_CFLAGS = @GLES2_CFLAGS@
-GLES2_LIBS = @GLES2_LIBS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
-GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
-GLIB_LIBS = @GLIB_LIBS@
-GLIB_MKENUMS = @GLIB_MKENUMS@
-GLIB_PREFIX = @GLIB_PREFIX@
-GLIB_REQ = @GLIB_REQ@
-GL_CFLAGS = @GL_CFLAGS@
-GL_LIBS = @GL_LIBS@
-GL_OBJCFLAGS = @GL_OBJCFLAGS@
-GME_LIBS = @GME_LIBS@
-GMODULE_EXPORT_CFLAGS = @GMODULE_EXPORT_CFLAGS@
-GMODULE_EXPORT_LIBS = @GMODULE_EXPORT_LIBS@
-GMODULE_NO_EXPORT_CFLAGS = @GMODULE_NO_EXPORT_CFLAGS@
-GMODULE_NO_EXPORT_LIBS = @GMODULE_NO_EXPORT_LIBS@
-GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
-GNUSTL_CFLAGS = @GNUSTL_CFLAGS@
-GNUSTL_LIBS = @GNUSTL_LIBS@
-GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
-GRAPHENE_LIBS = @GRAPHENE_LIBS@
-GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
-GSM_LIBS = @GSM_LIBS@
-GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
-GSTPB_PREFIX = @GSTPB_PREFIX@
-GST_AGE = @GST_AGE@
-GST_ALLOCATORS_CFLAGS = @GST_ALLOCATORS_CFLAGS@
-GST_ALLOCATORS_LIBS = @GST_ALLOCATORS_LIBS@
-GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
-GST_API_VERSION = @GST_API_VERSION@
-GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
-GST_BASE_LIBS = @GST_BASE_LIBS@
-GST_CFLAGS = @GST_CFLAGS@
-GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
-GST_CHECK_LIBS = @GST_CHECK_LIBS@
-GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
-GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
-GST_CURRENT = @GST_CURRENT@
-GST_CXXFLAGS = @GST_CXXFLAGS@
-GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
-GST_LIBS = @GST_LIBS@
-GST_LIBVERSION = @GST_LIBVERSION@
-GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
-GST_LICENSE = @GST_LICENSE@
-GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
-GST_NET_CFLAGS = @GST_NET_CFLAGS@
-GST_NET_LIBS = @GST_NET_LIBS@
-GST_OBJCFLAGS = @GST_OBJCFLAGS@
-GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
-GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
-GST_OPTION_OBJCFLAGS = @GST_OPTION_OBJCFLAGS@
-GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
-GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
-GST_PBUTILS_CFLAGS = @GST_PBUTILS_CFLAGS@
-GST_PBUTILS_LIBS = @GST_PBUTILS_LIBS@
-GST_PKG_CONFIG_PATH = @GST_PKG_CONFIG_PATH@
-GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
-GST_PLUGINS_BAD_CFLAGS = @GST_PLUGINS_BAD_CFLAGS@
-GST_PLUGINS_BAD_CXXFLAGS = @GST_PLUGINS_BAD_CXXFLAGS@
-GST_PLUGINS_BAD_OBJCFLAGS = @GST_PLUGINS_BAD_OBJCFLAGS@
-GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
-GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
-GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
-GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
-GST_PLUGINS_GOOD_CFLAGS = @GST_PLUGINS_GOOD_CFLAGS@
-GST_PLUGINS_GOOD_DIR = @GST_PLUGINS_GOOD_DIR@
-GST_PLUGINS_GOOD_LIBS = @GST_PLUGINS_GOOD_LIBS@
-GST_PLUGINS_LIBAV_CFLAGS = @GST_PLUGINS_LIBAV_CFLAGS@
-GST_PLUGINS_LIBAV_DIR = @GST_PLUGINS_LIBAV_DIR@
-GST_PLUGINS_LIBAV_LIBS = @GST_PLUGINS_LIBAV_LIBS@
-GST_PLUGINS_NONPORTED = @GST_PLUGINS_NONPORTED@
-GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
-GST_PLUGINS_UGLY_CFLAGS = @GST_PLUGINS_UGLY_CFLAGS@
-GST_PLUGINS_UGLY_DIR = @GST_PLUGINS_UGLY_DIR@
-GST_PLUGINS_UGLY_LIBS = @GST_PLUGINS_UGLY_LIBS@
-GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
-GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
-GST_PREFIX = @GST_PREFIX@
-GST_REVISION = @GST_REVISION@
-GST_TOOLS_DIR = @GST_TOOLS_DIR@
-GST_VIDEO_CFLAGS = @GST_VIDEO_CFLAGS@
-GST_VIDEO_LIBS = @GST_VIDEO_LIBS@
-GTK3_CFLAGS = @GTK3_CFLAGS@
-GTK3_GL_CFLAGS = @GTK3_GL_CFLAGS@
-GTK3_GL_LIBS = @GTK3_GL_LIBS@
-GTK3_LIBS = @GTK3_LIBS@
-GTK3_WAYLAND_CFLAGS = @GTK3_WAYLAND_CFLAGS@
-GTK3_WAYLAND_LIBS = @GTK3_WAYLAND_LIBS@
-GTK3_X11_CFLAGS = @GTK3_X11_CFLAGS@
-GTK3_X11_LIBS = @GTK3_X11_LIBS@
-GTKDOC_CHECK = @GTKDOC_CHECK@
-GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
-GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
-GTKDOC_MKPDF = @GTKDOC_MKPDF@
-GTKDOC_REBASE = @GTKDOC_REBASE@
-GTK_BASE_DIR = @GTK_BASE_DIR@
-GTK_CFLAGS = @GTK_CFLAGS@
-GTK_LIBS = @GTK_LIBS@
-GTK_VERSION = @GTK_VERSION@
-G_UDEV_CFLAGS = @G_UDEV_CFLAGS@
-G_UDEV_LIBS = @G_UDEV_LIBS@
-HAVE_CLUTTER = @HAVE_CLUTTER@
-HAVE_CLUTTER_GLX = @HAVE_CLUTTER_GLX@
-HAVE_CLUTTER_X11 = @HAVE_CLUTTER_X11@
-HAVE_CXX = @HAVE_CXX@
-HAVE_DIRECT3D = @HAVE_DIRECT3D@
-HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
-HAVE_DTS = @HAVE_DTS@
-HAVE_EGL = @HAVE_EGL@
-HAVE_FAAC = @HAVE_FAAC@
-HAVE_FAAD = @HAVE_FAAD@
-HAVE_FLITE = @HAVE_FLITE@
-HAVE_GL = @HAVE_GL@
-HAVE_GLES2 = @HAVE_GLES2@
-HAVE_GRAPHENE = @HAVE_GRAPHENE@
-HAVE_GSM = @HAVE_GSM@
-HAVE_GTK3 = @HAVE_GTK3@
-HAVE_JPEG = @HAVE_JPEG@
-HAVE_NAS = @HAVE_NAS@
-HAVE_OPENJPEG = @HAVE_OPENJPEG@
-HAVE_PNG = @HAVE_PNG@
-HAVE_SRTP = @HAVE_SRTP@
-HAVE_WASAPI = @HAVE_WASAPI@
-HAVE_WILDMIDI = @HAVE_WILDMIDI@
-HAVE_WINKS = @HAVE_WINKS@
-HAVE_WINSCREENCAP = @HAVE_WINSCREENCAP@
-HAVE_X11 = @HAVE_X11@
-HTML_DIR = @HTML_DIR@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INTLLIBS = @INTLLIBS@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
-INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_INIT = @INTROSPECTION_INIT@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
-INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
-JPEG_LIBS = @JPEG_LIBS@
-KATE_CFLAGS = @KATE_CFLAGS@
-KATE_LIBS = @KATE_LIBS@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBDC1394_CFLAGS = @LIBDC1394_CFLAGS@
-LIBDC1394_LIBS = @LIBDC1394_LIBS@
-LIBDE265_CFLAGS = @LIBDE265_CFLAGS@
-LIBDE265_LIBS = @LIBDE265_LIBS@
-LIBDIR = @LIBDIR@
-LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
-LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
-LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
-LIBM = @LIBM@
-LIBMMS_CFLAGS = @LIBMMS_CFLAGS@
-LIBMMS_LIBS = @LIBMMS_LIBS@
-LIBOBJS = @LIBOBJS@
-LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
-LIBPNG_LIBS = @LIBPNG_LIBS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBUDEV_CFLAGS = @LIBUDEV_CFLAGS@
-LIBUDEV_LIBS = @LIBUDEV_LIBS@
-LIBUSB_CFLAGS = @LIBUSB_CFLAGS@
-LIBUSB_LIBS = @LIBUSB_LIBS@
-LIBVISUAL_CFLAGS = @LIBVISUAL_CFLAGS@
-LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
-LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
-LIBXML2_LIBS = @LIBXML2_LIBS@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LOCALEDIR = @LOCALEDIR@
-LRDF_CFLAGS = @LRDF_CFLAGS@
-LRDF_LIBS = @LRDF_LIBS@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
-MIMIC_CFLAGS = @MIMIC_CFLAGS@
-MIMIC_LIBS = @MIMIC_LIBS@
-MJPEG_CFLAGS = @MJPEG_CFLAGS@
-MJPEG_LIBS = @MJPEG_LIBS@
-MKDIR_P = @MKDIR_P@
-MOC = @MOC@
-MODPLUG_CFLAGS = @MODPLUG_CFLAGS@
-MODPLUG_LIBS = @MODPLUG_LIBS@
-MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
-MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
-MPLEX_CFLAGS = @MPLEX_CFLAGS@
-MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
-MPLEX_LIBS = @MPLEX_LIBS@
-MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
-MSGMERGE = @MSGMERGE@
-MUSEPACK_LIBS = @MUSEPACK_LIBS@
-NAS_CFLAGS = @NAS_CFLAGS@
-NAS_LIBS = @NAS_LIBS@
-NEON_CFLAGS = @NEON_CFLAGS@
-NEON_LIBS = @NEON_LIBS@
-NETTLE_CFLAGS = @NETTLE_CFLAGS@
-NETTLE_LIBS = @NETTLE_LIBS@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NVENCODE_CFLAGS = @NVENCODE_CFLAGS@
-NVENCODE_LIBS = @NVENCODE_LIBS@
-OBJC = @OBJC@
-OBJCDEPMODE = @OBJCDEPMODE@
-OBJCFLAGS = @OBJCFLAGS@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OFA_CFLAGS = @OFA_CFLAGS@
-OFA_LIBS = @OFA_LIBS@
-OPENAL_CFLAGS = @OPENAL_CFLAGS@
-OPENAL_LIBS = @OPENAL_LIBS@
-OPENCV_CFLAGS = @OPENCV_CFLAGS@
-OPENCV_LIBS = @OPENCV_LIBS@
-OPENCV_PREFIX = @OPENCV_PREFIX@
-OPENEXR_CFLAGS = @OPENEXR_CFLAGS@
-OPENEXR_LIBS = @OPENEXR_LIBS@
-OPENH264_CFLAGS = @OPENH264_CFLAGS@
-OPENH264_LIBS = @OPENH264_LIBS@
-OPENJPEG_CFLAGS = @OPENJPEG_CFLAGS@
-OPENJPEG_LIBS = @OPENJPEG_LIBS@
-OPENNI2_CFLAGS = @OPENNI2_CFLAGS@
-OPENNI2_LIBS = @OPENNI2_LIBS@
-OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
-OPENSSL_LIBS = @OPENSSL_LIBS@
-OPUS_CFLAGS = @OPUS_CFLAGS@
-OPUS_LIBS = @OPUS_LIBS@
-ORCC = @ORCC@
-ORCC_FLAGS = @ORCC_FLAGS@
-ORC_CFLAGS = @ORC_CFLAGS@
-ORC_LIBS = @ORC_LIBS@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
-PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
-PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
-PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
-PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-PLUGINDIR = @PLUGINDIR@
-POSUB = @POSUB@
-PROFILE_CFLAGS = @PROFILE_CFLAGS@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-PVR_CFLAGS = @PVR_CFLAGS@
-PVR_LIBS = @PVR_LIBS@
-PYTHON = @PYTHON@
-PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
-PYTHON_PLATFORM = @PYTHON_PLATFORM@
-PYTHON_PREFIX = @PYTHON_PREFIX@
-PYTHON_VERSION = @PYTHON_VERSION@
-QT_ANDROID_CFLAGS = @QT_ANDROID_CFLAGS@
-QT_ANDROID_LIBS = @QT_ANDROID_LIBS@
-QT_CFLAGS = @QT_CFLAGS@
-QT_LIBS = @QT_LIBS@
-QT_MAC_CFLAGS = @QT_MAC_CFLAGS@
-QT_MAC_LIBS = @QT_MAC_LIBS@
-QT_WAYLAND_CFLAGS = @QT_WAYLAND_CFLAGS@
-QT_WAYLAND_LIBS = @QT_WAYLAND_LIBS@
-QT_X11_CFLAGS = @QT_X11_CFLAGS@
-QT_X11_LIBS = @QT_X11_LIBS@
-RANLIB = @RANLIB@
-RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
-RSVG_CFLAGS = @RSVG_CFLAGS@
-RSVG_LIBS = @RSVG_LIBS@
-RTMP_CFLAGS = @RTMP_CFLAGS@
-RTMP_LIBS = @RTMP_LIBS@
-SBC_CFLAGS = @SBC_CFLAGS@
-SBC_LIBS = @SBC_LIBS@
-SCHRO_CFLAGS = @SCHRO_CFLAGS@
-SCHRO_LIBS = @SCHRO_LIBS@
-SDL_CFLAGS = @SDL_CFLAGS@
-SDL_CLUTTER = @SDL_CLUTTER@
-SDL_CONFIG = @SDL_CONFIG@
-SDL_LIBS = @SDL_LIBS@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
-SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
-SNDFILE_LIBS = @SNDFILE_LIBS@
-SNDIO_LIBS = @SNDIO_LIBS@
-SOUNDTOUCH_CFLAGS = @SOUNDTOUCH_CFLAGS@
-SOUNDTOUCH_LIBS = @SOUNDTOUCH_LIBS@
-SPANDSP_CFLAGS = @SPANDSP_CFLAGS@
-SPANDSP_LIBS = @SPANDSP_LIBS@
-SPC_LIBS = @SPC_LIBS@
-SRTP_CFLAGS = @SRTP_CFLAGS@
-SRTP_LIBS = @SRTP_LIBS@
-SSH2_CFLAGS = @SSH2_CFLAGS@
-SSH2_LIBS = @SSH2_LIBS@
-STRIP = @STRIP@
-TELETEXTDEC_CFLAGS = @TELETEXTDEC_CFLAGS@
-TELETEXTDEC_LIBS = @TELETEXTDEC_LIBS@
-TIGER_CFLAGS = @TIGER_CFLAGS@
-TIGER_LIBS = @TIGER_LIBS@
-TIMIDITY_CFLAGS = @TIMIDITY_CFLAGS@
-TIMIDITY_LIBS = @TIMIDITY_LIBS@
-UIC = @UIC@
-USE_GLES2 = @USE_GLES2@
-USE_NLS = @USE_NLS@
-USE_OPENGL = @USE_OPENGL@
-VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
-VALGRIND_LIBS = @VALGRIND_LIBS@
-VALGRIND_PATH = @VALGRIND_PATH@
-VDPAU_CFLAGS = @VDPAU_CFLAGS@
-VDPAU_LIBS = @VDPAU_LIBS@
-VERSION = @VERSION@
-VOAACENC_CFLAGS = @VOAACENC_CFLAGS@
-VOAACENC_LIBS = @VOAACENC_LIBS@
-VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
-VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
-WARNING_CFLAGS = @WARNING_CFLAGS@
-WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
-WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
-WASAPI_LIBS = @WASAPI_LIBS@
-WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
-WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
-WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
-WAYLAND_LIBS = @WAYLAND_LIBS@
-WEBP_CFLAGS = @WEBP_CFLAGS@
-WEBP_LIBS = @WEBP_LIBS@
-WGET = @WGET@
-WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
-WILDMIDI_LIBS = @WILDMIDI_LIBS@
-WINKS_LIBS = @WINKS_LIBS@
-WINSCREENCAP_LIBS = @WINSCREENCAP_LIBS@
-WINSOCK2_LIBS = @WINSOCK2_LIBS@
-X11_CFLAGS = @X11_CFLAGS@
-X11_LIBS = @X11_LIBS@
-X265_CFLAGS = @X265_CFLAGS@
-X265_LIBS = @X265_LIBS@
-XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
-XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
-XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-XVID_LIBS = @XVID_LIBS@
-X_CFLAGS = @X_CFLAGS@
-X_LIBS = @X_LIBS@
-ZBAR_CFLAGS = @ZBAR_CFLAGS@
-ZBAR_LIBS = @ZBAR_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJC = @ac_ct_OBJC@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-ax_pthread_config = @ax_pthread_config@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pkgpyexecdir = @pkgpyexecdir@
-pkgpythondir = @pkgpythondir@
-plugindir = @plugindir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-pyexecdir = @pyexecdir@
-pythondir = @pythondir@
-runstatedir = @runstatedir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-wayland_scanner = @wayland_scanner@
-plugin_LTLIBRARIES = libgstrtpbad.la
-libgstrtpbad_la_SOURCES = \
-	gstrtp.c \
-	gstrtph265depay.c \
-	gstrtph265pay.c
-
-libgstrtpbad_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) \
-	$(GST_CFLAGS)
-
-libgstrtpbad_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
-	$(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$(GST_API_VERSION).la \
-	-lgstaudio-@GST_API_VERSION@ \
-	-lgstvideo-@GST_API_VERSION@ \
-	-lgsttag-@GST_API_VERSION@ \
-	-lgstrtp-@GST_API_VERSION@ \
-	-lgstpbutils-@GST_API_VERSION@ \
-	$(GST_BASE_LIBS) $(GST_LIBS) \
-	$(LIBM)
-
-libgstrtpbad_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstrtpbad_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = \
-	gstrtph265depay.h \
-	gstrtph265pay.h
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gst/rtp/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu gst/rtp/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	list2=; for p in $$list; do \
-	  if test -f $$p; then \
-	    list2="$$list2 $$p"; \
-	  else :; fi; \
-	done; \
-	test -z "$$list2" || { \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
-	}
-
-uninstall-pluginLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
-	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
-	done
-
-clean-pluginLTLIBRARIES:
-	-test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
-	@list='$(plugin_LTLIBRARIES)'; \
-	locs=`for p in $$list; do echo $$p; done | \
-	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
-	      sort -u`; \
-	test -z "$$locs" || { \
-	  echo rm -f $${locs}; \
-	  rm -f $${locs}; \
-	}
-
-libgstrtpbad.la: $(libgstrtpbad_la_OBJECTS) $(libgstrtpbad_la_DEPENDENCIES) $(EXTRA_libgstrtpbad_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libgstrtpbad_la_LINK) -rpath $(plugindir) $(libgstrtpbad_la_OBJECTS) $(libgstrtpbad_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT)
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpbad_la-gstrtp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpbad_la-gstrtph265depay.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrtpbad_la-gstrtph265pay.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-
-.c.obj:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCC_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-libgstrtpbad_la-gstrtp.lo: gstrtp.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpbad_la_CFLAGS) $(CFLAGS) -MT libgstrtpbad_la-gstrtp.lo -MD -MP -MF $(DEPDIR)/libgstrtpbad_la-gstrtp.Tpo -c -o libgstrtpbad_la-gstrtp.lo `test -f 'gstrtp.c' || echo '$(srcdir)/'`gstrtp.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtpbad_la-gstrtp.Tpo $(DEPDIR)/libgstrtpbad_la-gstrtp.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstrtp.c' object='libgstrtpbad_la-gstrtp.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 $(libgstrtpbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpbad_la_CFLAGS) $(CFLAGS) -c -o libgstrtpbad_la-gstrtp.lo `test -f 'gstrtp.c' || echo '$(srcdir)/'`gstrtp.c
-
-libgstrtpbad_la-gstrtph265depay.lo: gstrtph265depay.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpbad_la_CFLAGS) $(CFLAGS) -MT libgstrtpbad_la-gstrtph265depay.lo -MD -MP -MF $(DEPDIR)/libgstrtpbad_la-gstrtph265depay.Tpo -c -o libgstrtpbad_la-gstrtph265depay.lo `test -f 'gstrtph265depay.c' || echo '$(srcdir)/'`gstrtph265depay.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtpbad_la-gstrtph265depay.Tpo $(DEPDIR)/libgstrtpbad_la-gstrtph265depay.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstrtph265depay.c' object='libgstrtpbad_la-gstrtph265depay.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 $(libgstrtpbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpbad_la_CFLAGS) $(CFLAGS) -c -o libgstrtpbad_la-gstrtph265depay.lo `test -f 'gstrtph265depay.c' || echo '$(srcdir)/'`gstrtph265depay.c
-
-libgstrtpbad_la-gstrtph265pay.lo: gstrtph265pay.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrtpbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpbad_la_CFLAGS) $(CFLAGS) -MT libgstrtpbad_la-gstrtph265pay.lo -MD -MP -MF $(DEPDIR)/libgstrtpbad_la-gstrtph265pay.Tpo -c -o libgstrtpbad_la-gstrtph265pay.lo `test -f 'gstrtph265pay.c' || echo '$(srcdir)/'`gstrtph265pay.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstrtpbad_la-gstrtph265pay.Tpo $(DEPDIR)/libgstrtpbad_la-gstrtph265pay.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstrtph265pay.c' object='libgstrtpbad_la-gstrtph265pay.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 $(libgstrtpbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrtpbad_la_CFLAGS) $(CFLAGS) -c -o libgstrtpbad_la-gstrtph265pay.lo `test -f 'gstrtph265pay.c' || echo '$(srcdir)/'`gstrtph265pay.c
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(plugindir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pluginLTLIBRARIES
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-pluginLTLIBRARIES
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
-	ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-pluginLTLIBRARIES install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
-	uninstall-pluginLTLIBRARIES
-
-.PRECIOUS: Makefile
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/gst/rtp/gstrtph265depay.c b/gst/rtp/gstrtph265depay.c
deleted file mode 100644
index bfc2e13..0000000
--- a/gst/rtp/gstrtph265depay.c
+++ /dev/null
@@ -1,1580 +0,0 @@
-/* GStreamer
- * Copyright (C) <2006> Wim Taymans <wim.taymans@gmail.com>
- * Copyright (C) <2014> Jurgen Slowack <jurgenslowack@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#  include "config.h"
-#endif
-
-#include <stdio.h>
-#include <string.h>
-
-#include <gst/base/gstbitreader.h>
-#include <gst/rtp/gstrtpbuffer.h>
-#include <gst/video/video.h>
-#include "gstrtph265depay.h"
-
-GST_DEBUG_CATEGORY_STATIC (rtph265depay_debug);
-#define GST_CAT_DEFAULT (rtph265depay_debug)
-
-/* This is what we'll default to when downstream hasn't
- * expressed a restriction or preference via caps */
-#define DEFAULT_BYTE_STREAM   TRUE
-#define DEFAULT_ACCESS_UNIT   FALSE
-
-/* 3 zero bytes syncword */
-static const guint8 sync_bytes[] = { 0, 0, 0, 1 };
-
-static GstStaticPadTemplate gst_rtp_h265_depay_src_template =
-    GST_STATIC_PAD_TEMPLATE ("src",
-    GST_PAD_SRC,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (
-        /* FIXME - hvc1 and hev1 formats are not supported yet */
-        /*"video/x-h265, "
-           "stream-format = (string) hvc1, alignment = (string) au; "
-           "video/x-h265, "
-           "stream-format = (string) hev1, alignment = (string) au; " */
-        "video/x-h265, "
-        "stream-format = (string) byte-stream, alignment = (string) { nal, au }")
-    );
-
-static GstStaticPadTemplate gst_rtp_h265_depay_sink_template =
-GST_STATIC_PAD_TEMPLATE ("sink",
-    GST_PAD_SINK,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS ("application/x-rtp, "
-        "media = (string) \"video\", "
-        "clock-rate = (int) 90000, " "encoding-name = (string) \"H265\"")
-        /** optional parameters **/
-    /* "profile-space = (int) [ 0, 3 ], " */
-    /* "profile-id = (int) [ 0, 31 ], " */
-    /* "tier-flag = (int) [ 0, 1 ], " */
-    /* "level-id = (int) [ 0, 255 ], " */
-    /* "interop-constraints = (string) ANY, " */
-    /* "profile-compatibility-indicator = (string) ANY, " */
-    /* "sprop-sub-layer-id = (int) [ 0, 6 ], " */
-    /* "recv-sub-layer-id = (int) [ 0, 6 ], " */
-    /* "max-recv-level-id = (int) [ 0, 255 ], " */
-    /* "tx-mode = (string) {MST , SST}, " */
-    /* "sprop-vps = (string) ANY, " */
-    /* "sprop-sps = (string) ANY, " */
-    /* "sprop-pps = (string) ANY, " */
-    /* "sprop-sei = (string) ANY, " */
-    /* "max-lsr = (int) ANY, " *//* MUST be in the range of MaxLumaSR to 16 * MaxLumaSR, inclusive */
-    /* "max-lps = (int) ANY, " *//* MUST be in the range of MaxLumaPS to 16 * MaxLumaPS, inclusive */
-    /* "max-cpb = (int) ANY, " *//* MUST be in the range of MaxCPB to 16 * MaxCPB, inclusive */
-    /* "max-dpb = (int) [1, 16], " */
-    /* "max-br = (int) ANY, " *//* MUST be in the range of MaxBR to 16 * MaxBR, inclusive, for the highest level */
-    /* "max-tr = (int) ANY, " *//* MUST be in the range of MaxTileRows to 16 * MaxTileRows, inclusive, for the highest level */
-    /* "max-tc = (int) ANY, " *//* MUST be in the range of MaxTileCols to 16 * MaxTileCols, inclusive, for the highest level */
-    /* "max-fps = (int) ANY, " */
-    /* "sprop-max-don-diff = (int) [0, 32767], " */
-    /* "sprop-depack-buf-nalus = (int) [0, 32767], " */
-    /* "sprop-depack-buf-nalus = (int) [0, 4294967295], " */
-    /* "depack-buf-cap = (int) [1, 4294967295], " */
-    /* "sprop-segmentation-id = (int) [0, 3], " */
-    /* "sprop-spatial-segmentation-idc = (string) ANY, " */
-    /* "dec-parallel-cap = (string) ANY, " */
-    );
-
-#define gst_rtp_h265_depay_parent_class parent_class
-G_DEFINE_TYPE (GstRtpH265Depay, gst_rtp_h265_depay,
-    GST_TYPE_RTP_BASE_DEPAYLOAD);
-
-static void gst_rtp_h265_depay_finalize (GObject * object);
-
-static GstStateChangeReturn gst_rtp_h265_depay_change_state (GstElement *
-    element, GstStateChange transition);
-
-static GstBuffer *gst_rtp_h265_depay_process (GstRTPBaseDepayload * depayload,
-    GstRTPBuffer * rtp);
-static gboolean gst_rtp_h265_depay_setcaps (GstRTPBaseDepayload * filter,
-    GstCaps * caps);
-static gboolean gst_rtp_h265_depay_handle_event (GstRTPBaseDepayload * depay,
-    GstEvent * event);
-
-static void
-gst_rtp_h265_depay_class_init (GstRtpH265DepayClass * klass)
-{
-  GObjectClass *gobject_class;
-  GstElementClass *gstelement_class;
-  GstRTPBaseDepayloadClass *gstrtpbasedepayload_class;
-
-  gobject_class = (GObjectClass *) klass;
-  gstelement_class = (GstElementClass *) klass;
-  gstrtpbasedepayload_class = (GstRTPBaseDepayloadClass *) klass;
-
-  gobject_class->finalize = gst_rtp_h265_depay_finalize;
-
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_rtp_h265_depay_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_rtp_h265_depay_sink_template));
-
-  gst_element_class_set_static_metadata (gstelement_class,
-      "RTP H265 depayloader", "Codec/Depayloader/Network/RTP",
-      "Extracts H265 video from RTP packets (draft-ietf-payload-rtp-h265-03.txt)",
-      "Jurgen Slowack <jurgenslowack@gmail.com>");
-  gstelement_class->change_state = gst_rtp_h265_depay_change_state;
-
-  gstrtpbasedepayload_class->process_rtp_packet = gst_rtp_h265_depay_process;
-  gstrtpbasedepayload_class->set_caps = gst_rtp_h265_depay_setcaps;
-  gstrtpbasedepayload_class->handle_event = gst_rtp_h265_depay_handle_event;
-}
-
-static void
-gst_rtp_h265_depay_init (GstRtpH265Depay * rtph265depay)
-{
-  rtph265depay->adapter = gst_adapter_new ();
-  rtph265depay->picture_adapter = gst_adapter_new ();
-  rtph265depay->byte_stream = DEFAULT_BYTE_STREAM;
-  rtph265depay->stream_format = (gchar *) g_malloc (10);
-  rtph265depay->merge = DEFAULT_ACCESS_UNIT;
-  rtph265depay->vps = g_ptr_array_new_with_free_func (
-      (GDestroyNotify) gst_buffer_unref);
-  rtph265depay->sps = g_ptr_array_new_with_free_func (
-      (GDestroyNotify) gst_buffer_unref);
-  rtph265depay->pps = g_ptr_array_new_with_free_func (
-      (GDestroyNotify) gst_buffer_unref);
-}
-
-static void
-gst_rtp_h265_depay_reset (GstRtpH265Depay * rtph265depay)
-{
-  gst_adapter_clear (rtph265depay->adapter);
-  rtph265depay->wait_start = TRUE;
-  gst_adapter_clear (rtph265depay->picture_adapter);
-  rtph265depay->picture_start = FALSE;
-  rtph265depay->last_keyframe = FALSE;
-  rtph265depay->last_ts = 0;
-  rtph265depay->current_fu_type = 0;
-  rtph265depay->new_codec_data = FALSE;
-  g_ptr_array_set_size (rtph265depay->vps, 0);
-  g_ptr_array_set_size (rtph265depay->sps, 0);
-  g_ptr_array_set_size (rtph265depay->pps, 0);
-}
-
-static void
-gst_rtp_h265_depay_finalize (GObject * object)
-{
-  GstRtpH265Depay *rtph265depay;
-
-  rtph265depay = GST_RTP_H265_DEPAY (object);
-
-  if (rtph265depay->codec_data)
-    gst_buffer_unref (rtph265depay->codec_data);
-
-  g_free (rtph265depay->stream_format);
-
-  g_object_unref (rtph265depay->adapter);
-  g_object_unref (rtph265depay->picture_adapter);
-
-  g_ptr_array_free (rtph265depay->vps, TRUE);
-  g_ptr_array_free (rtph265depay->sps, TRUE);
-  g_ptr_array_free (rtph265depay->pps, TRUE);
-
-  G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static void
-gst_rtp_h265_depay_negotiate (GstRtpH265Depay * rtph265depay)
-{
-  GstCaps *caps;
-  gint byte_stream = -1;
-  gint merge = -1;
-
-  caps =
-      gst_pad_get_allowed_caps (GST_RTP_BASE_DEPAYLOAD_SRCPAD (rtph265depay));
-
-  GST_DEBUG_OBJECT (rtph265depay, "allowed caps: %" GST_PTR_FORMAT, caps);
-
-  if (caps) {
-    if (gst_caps_get_size (caps) > 0) {
-      GstStructure *s = gst_caps_get_structure (caps, 0);
-      const gchar *str = NULL;
-
-      if ((str = gst_structure_get_string (s, "stream-format"))) {
-
-        strcpy (rtph265depay->stream_format, str);
-
-        if (strcmp (str, "hev1") == 0) {
-          byte_stream = FALSE;
-        } else if (strcmp (str, "hvc1") == 0) {
-          byte_stream = FALSE;
-        } else if (strcmp (str, "byte-stream") == 0) {
-          byte_stream = TRUE;
-        } else {
-          GST_DEBUG_OBJECT (rtph265depay, "unknown stream-format: %s", str);
-        }
-      }
-
-      if ((str = gst_structure_get_string (s, "alignment"))) {
-        if (strcmp (str, "au") == 0) {
-          merge = TRUE;
-        } else if (strcmp (str, "nal") == 0) {
-          merge = FALSE;
-        } else {
-          GST_DEBUG_OBJECT (rtph265depay, "unknown alignment: %s", str);
-        }
-      }
-    }
-    gst_caps_unref (caps);
-  }
-
-  if (byte_stream != -1) {
-    GST_DEBUG_OBJECT (rtph265depay, "downstream requires byte-stream %d",
-        byte_stream);
-    rtph265depay->byte_stream = byte_stream;
-  } else {
-    GST_DEBUG_OBJECT (rtph265depay, "defaulting to byte-stream %d",
-        DEFAULT_BYTE_STREAM);
-    strcpy (rtph265depay->stream_format, "byte-stream");
-    rtph265depay->byte_stream = DEFAULT_BYTE_STREAM;
-  }
-  if (merge != -1) {
-    GST_DEBUG_OBJECT (rtph265depay, "downstream requires merge %d", merge);
-    rtph265depay->merge = merge;
-  } else {
-    GST_DEBUG_OBJECT (rtph265depay, "defaulting to merge %d",
-        DEFAULT_ACCESS_UNIT);
-    rtph265depay->merge = DEFAULT_ACCESS_UNIT;
-  }
-}
-
-/* Stolen from bad/gst/mpegtsdemux/payloader_parsers.c */
-/* variable length Exp-Golomb parsing according to H.265 spec section 9.2*/
-static gboolean
-read_golomb (GstBitReader * br, guint32 * value)
-{
-  guint8 b, leading_zeros = -1;
-  *value = 1;
-
-  for (b = 0; !b; leading_zeros++) {
-    if (!gst_bit_reader_get_bits_uint8 (br, &b, 1))
-      return FALSE;
-    *value *= 2;
-  }
-
-  *value = (*value >> 1) - 1;
-  if (leading_zeros > 0) {
-    guint32 tmp = 0;
-    if (!gst_bit_reader_get_bits_uint32 (br, &tmp, leading_zeros))
-      return FALSE;
-    *value += tmp;
-  }
-
-  return TRUE;
-}
-
-static gboolean
-parse_sps (GstMapInfo * map, guint32 * sps_id)
-{                               /* To parse seq_parameter_set_id */
-  GstBitReader br = GST_BIT_READER_INIT (map->data + 15,
-      map->size - 15);
-
-  if (map->size < 16)
-    return FALSE;
-
-  if (!read_golomb (&br, sps_id))
-    return FALSE;
-
-  return TRUE;
-}
-
-static gboolean
-parse_pps (GstMapInfo * map, guint32 * sps_id, guint32 * pps_id)
-{                               /* To parse picture_parameter_set_id */
-  GstBitReader br = GST_BIT_READER_INIT (map->data + 2,
-      map->size - 2);
-
-  if (map->size < 3)
-    return FALSE;
-
-  if (!read_golomb (&br, pps_id))
-    return FALSE;
-  if (!read_golomb (&br, sps_id))
-    return FALSE;
-
-  return TRUE;
-}
-
-
-static gboolean
-gst_rtp_h265_set_src_caps (GstRtpH265Depay * rtph265depay)
-{
-  gboolean res;
-  GstCaps *srccaps;
-
-  if (!rtph265depay->byte_stream &&
-      (!rtph265depay->new_codec_data ||
-          rtph265depay->vps->len == 0 || rtph265depay->sps->len == 0
-          || rtph265depay->pps->len == 0))
-    return TRUE;
-
-  srccaps = gst_caps_new_simple ("video/x-h265",
-      "stream-format", G_TYPE_STRING,
-      rtph265depay->stream_format,
-      "alignment", G_TYPE_STRING, rtph265depay->merge ? "au" : "nal", NULL);
-
-  if (!rtph265depay->byte_stream) {
-
-    GstBuffer *codec_data;
-    gint i = 0;
-    gint len;
-    guint num_vps = rtph265depay->vps->len;
-    guint num_sps = rtph265depay->sps->len;
-    guint num_pps = rtph265depay->pps->len;
-    GstMapInfo map, nalmap;
-    guint8 *data;
-    gint nl;
-    guint8 num_arrays = 0;
-    guint new_size;
-    GstBitReader br;
-    guint32 tmp;
-    guint8 tmp8 = 0;
-    guint32 max_sub_layers_minus1, temporal_id_nesting_flag, chroma_format_idc,
-        bit_depth_luma_minus8, bit_depth_chroma_minus8,
-        min_spatial_segmentation_idc;
-
-    /* Fixme: Current implementation is not embedding SEI in codec_data */
-
-    if (num_sps == 0)
-      return FALSE;
-
-    /* start with 23 bytes header */
-    len = 23;
-
-    num_arrays = (num_vps > 0) + (num_sps > 0) + (num_pps > 0);
-    len += num_arrays;
-
-    /* add size of vps, sps & pps */
-    for (i = 0; i < num_vps; i++)
-      len += 2 + gst_buffer_get_size (g_ptr_array_index (rtph265depay->vps, i));
-    for (i = 0; i < num_sps; i++)
-      len += 2 + gst_buffer_get_size (g_ptr_array_index (rtph265depay->sps, i));
-    for (i = 0; i < num_pps; i++)
-      len += 2 + gst_buffer_get_size (g_ptr_array_index (rtph265depay->pps, i));
-
-    GST_DEBUG_OBJECT (rtph265depay,
-        "constructing codec_data: num_vps =%d num_sps=%d, num_pps=%d", num_vps,
-        num_sps, num_pps);
-
-    codec_data = gst_buffer_new_and_alloc (len);
-    g_debug ("alloc_len: %u", len);
-    gst_buffer_map (codec_data, &map, GST_MAP_READWRITE);
-    data = map.data;
-
-    memset (data, 0, map.size);
-
-    /* Parsing sps to get the info required further on */
-
-    gst_buffer_map (g_ptr_array_index (rtph265depay->sps, 0), &nalmap,
-        GST_MAP_READ);
-
-    max_sub_layers_minus1 = ((nalmap.data[2]) >> 1) & 0x07;
-    temporal_id_nesting_flag = nalmap.data[2] & 0x01;
-
-    gst_bit_reader_init (&br, nalmap.data + 15, nalmap.size - 15);
-
-    read_golomb (&br, &tmp);    /* sps_seq_parameter_set_id */
-    read_golomb (&br, &chroma_format_idc);      /* chroma_format_idc */
-
-    if (chroma_format_idc == 3)
-
-      gst_bit_reader_get_bits_uint8 (&br, &tmp8, 1);    /* separate_colour_plane_flag */
-
-    read_golomb (&br, &tmp);    /* pic_width_in_luma_samples */
-    read_golomb (&br, &tmp);    /* pic_height_in_luma_samples */
-
-    gst_bit_reader_get_bits_uint8 (&br, &tmp8, 1);      /* conformance_window_flag */
-    if (tmp8) {
-      read_golomb (&br, &tmp);  /* conf_win_left_offset */
-      read_golomb (&br, &tmp);  /* conf_win_right_offset */
-      read_golomb (&br, &tmp);  /* conf_win_top_offset */
-      read_golomb (&br, &tmp);  /* conf_win_bottom_offset */
-    }
-
-    read_golomb (&br, &bit_depth_luma_minus8);  /* bit_depth_luma_minus8 */
-    read_golomb (&br, &bit_depth_chroma_minus8);        /* bit_depth_chroma_minus8 */
-
-    GST_DEBUG_OBJECT (rtph265depay,
-        "Ignoring min_spatial_segmentation for now (assuming zero)");
-
-    min_spatial_segmentation_idc = 0;   /* NOTE - we ignore this for now, but in a perfect world, we should continue parsing to obtain the real value */
-
-    nl = nalmap.size;
-
-    gst_buffer_unmap (g_ptr_array_index (rtph265depay->sps, 0), &nalmap);
-
-    /* HEVCDecoderConfigurationVersion = 1 */
-    data[0] = 1;
-
-    /* Copy from profile_tier_level (Rec. ITU-T H.265 (04/2013) section 7.3.3
-     *
-     * profile_space | tier_flat | profile_idc |
-     * profile_compatibility_flags | constraint_indicator_flags |
-     * level_idc | progressive_source_flag | interlaced_source_flag
-     * non_packed_constraint_flag | frame_only_constraint_flag
-     * reserved_zero_44bits | level_idc */
-    gst_buffer_map (g_ptr_array_index (rtph265depay->sps, 0), &nalmap,
-        GST_MAP_READ);
-    for (i = 0; i < 12; i++)
-      data[i + 1] = nalmap.data[i];
-    gst_buffer_unmap (g_ptr_array_index (rtph265depay->sps, 0), &nalmap);
-
-    /* min_spatial_segmentation_idc */
-    GST_WRITE_UINT16_BE (data + 13, min_spatial_segmentation_idc);
-    data[13] |= 0xf0;
-    data[15] = 0xfc;            /* keeping parrallelismType as zero (unknown) */
-    data[16] = 0xfc | chroma_format_idc;
-    data[17] = 0xf8 | bit_depth_luma_minus8;
-    data[18] = 0xf8 | bit_depth_chroma_minus8;
-    data[19] = 0x00;            /* keep avgFrameRate as unspecified */
-    data[20] = 0x00;            /* keep avgFrameRate as unspecified */
-    /* constFrameRate(2 bits): 0, stream may or may not be of constant framerate
-     * numTemporalLayers (3 bits): number of temporal layers, value from SPS
-     * TemporalIdNested (1 bit): sps_temporal_id_nesting_flag from SPS
-     * lengthSizeMinusOne (2 bits): plus 1 indicates the length of the NALUnitLength */
-    data[21] =
-        0x00 | ((max_sub_layers_minus1 +
-            1) << 3) | (temporal_id_nesting_flag << 2) | (nl - 1);
-    GST_WRITE_UINT8 (data + 22, num_arrays);    /* numOfArrays */
-
-    data += 23;
-
-    /* copy all VPS */
-    if (num_vps > 0) {
-      /* array_completeness | reserved_zero bit | nal_unit_type */
-      data[0] = 0x00 | 0x20;
-      data++;
-
-      GST_WRITE_UINT16_BE (data, num_vps);
-      data += 2;
-
-      for (i = 0; i < num_vps; i++) {
-        gsize nal_size =
-            gst_buffer_get_size (g_ptr_array_index (rtph265depay->vps, i));
-        GST_WRITE_UINT16_BE (data, nal_size);
-        gst_buffer_extract (g_ptr_array_index (rtph265depay->vps, i), 0,
-            data + 2, nal_size);
-        data += 2 + nal_size;
-        GST_DEBUG_OBJECT (rtph265depay, "Copied VPS %d of length %u", i,
-            (guint) nal_size);
-      }
-    }
-
-    /* copy all SPS */
-    if (num_sps > 0) {
-      /* array_completeness | reserved_zero bit | nal_unit_type */
-      data[0] = 0x00 | 0x21;
-      data++;
-
-      GST_WRITE_UINT16_BE (data, num_sps);
-      data += 2;
-
-      for (i = 0; i < num_sps; i++) {
-        gsize nal_size =
-            gst_buffer_get_size (g_ptr_array_index (rtph265depay->sps, i));
-        GST_WRITE_UINT16_BE (data, nal_size);
-        gst_buffer_extract (g_ptr_array_index (rtph265depay->sps, i), 0,
-            data + 2, nal_size);
-        data += 2 + nal_size;
-        GST_DEBUG_OBJECT (rtph265depay, "Copied SPS %d of length %u", i,
-            (guint) nal_size);
-      }
-    }
-
-    /* copy all PPS */
-    if (num_pps > 0) {
-      /* array_completeness | reserved_zero bit | nal_unit_type */
-      data[0] = 0x00 | 0x22;
-      data++;
-
-      GST_WRITE_UINT16_BE (data, num_pps);
-      data += 2;
-
-      for (i = 0; i < num_pps; i++) {
-        gsize nal_size =
-            gst_buffer_get_size (g_ptr_array_index (rtph265depay->pps, i));
-        GST_WRITE_UINT16_BE (data, nal_size);
-        gst_buffer_extract (g_ptr_array_index (rtph265depay->pps, i), 0,
-            data + 2, nal_size);
-        data += 2 + nal_size;
-        GST_DEBUG_OBJECT (rtph265depay, "Copied PPS %d of length %u", i,
-            (guint) nal_size);
-      }
-    }
-
-    new_size = data - map.data;
-    gst_buffer_unmap (codec_data, &map);
-    gst_buffer_set_size (codec_data, new_size);
-
-    gst_caps_set_simple (srccaps,
-        "codec_data", GST_TYPE_BUFFER, codec_data, NULL);
-    gst_buffer_unref (codec_data);
-  }
-
-  if (gst_pad_has_current_caps (GST_RTP_BASE_DEPAYLOAD_SRCPAD (rtph265depay))) {
-    GstCaps *old_caps =
-        gst_pad_get_current_caps (GST_RTP_BASE_DEPAYLOAD_SRCPAD (rtph265depay));
-
-    /* Only update the caps if they are not equal. For
-     * AVC we don't update caps if only the codec_data
-     * changes. This is the same behaviour as in h264parse
-     * and gstrtph264depay
-     */
-    if (rtph265depay->byte_stream) {
-      if (!gst_caps_is_equal (srccaps, old_caps))
-        res =
-            gst_pad_set_caps (GST_RTP_BASE_DEPAYLOAD_SRCPAD (rtph265depay),
-            srccaps);
-      else
-        res = TRUE;
-    } else {
-      GstCaps *tmp_caps = gst_caps_copy (srccaps);
-      GstStructure *old_s, *tmp_s;
-
-      old_s = gst_caps_get_structure (old_caps, 0);
-      tmp_s = gst_caps_get_structure (tmp_caps, 0);
-      if (gst_structure_has_field (old_s, "codec_data"))
-        gst_structure_set_value (tmp_s, "codec_data",
-            gst_structure_get_value (old_s, "codec_data"));
-
-      if (!gst_caps_is_equal (old_caps, tmp_caps))
-        res =
-            gst_pad_set_caps (GST_RTP_BASE_DEPAYLOAD_SRCPAD (rtph265depay),
-            srccaps);
-      else
-        res = TRUE;
-
-      gst_caps_unref (tmp_caps);
-    }
-  } else {
-    res =
-        gst_pad_set_caps (GST_RTP_BASE_DEPAYLOAD_SRCPAD (rtph265depay),
-        srccaps);
-  }
-
-  gst_caps_unref (srccaps);
-
-  /* Insert SPS and PPS into the stream on next opportunity */
-  if (rtph265depay->sps->len > 0 || rtph265depay->pps->len > 0) {
-    gint i;
-    GstBuffer *codec_data;
-    GstMapInfo map;
-    guint8 *data;
-    guint len = 0;
-
-    for (i = 0; i < rtph265depay->sps->len; i++) {
-      len += 4 + gst_buffer_get_size (g_ptr_array_index (rtph265depay->sps, i));
-    }
-
-    for (i = 0; i < rtph265depay->pps->len; i++) {
-      len += 4 + gst_buffer_get_size (g_ptr_array_index (rtph265depay->pps, i));
-    }
-
-    codec_data = gst_buffer_new_and_alloc (len);
-    gst_buffer_map (codec_data, &map, GST_MAP_WRITE);
-    data = map.data;
-
-    for (i = 0; i < rtph265depay->sps->len; i++) {
-      GstBuffer *sps_buf = g_ptr_array_index (rtph265depay->sps, i);
-      guint sps_size = gst_buffer_get_size (sps_buf);
-
-      if (rtph265depay->byte_stream)
-        memcpy (data, sync_bytes, sizeof (sync_bytes));
-      else
-        GST_WRITE_UINT32_BE (data, sps_size);
-      gst_buffer_extract (sps_buf, 0, data + 4, -1);
-      data += 4 + sps_size;
-    }
-
-    for (i = 0; i < rtph265depay->pps->len; i++) {
-      GstBuffer *pps_buf = g_ptr_array_index (rtph265depay->pps, i);
-      guint pps_size = gst_buffer_get_size (pps_buf);
-
-      if (rtph265depay->byte_stream)
-        memcpy (data, sync_bytes, sizeof (sync_bytes));
-      else
-        GST_WRITE_UINT32_BE (data, pps_size);
-      gst_buffer_extract (pps_buf, 0, data + 4, -1);
-      data += 4 + pps_size;
-    }
-
-    gst_buffer_unmap (codec_data, &map);
-    if (rtph265depay->codec_data)
-      gst_buffer_unref (rtph265depay->codec_data);
-    rtph265depay->codec_data = codec_data;
-  }
-
-  if (res)
-    rtph265depay->new_codec_data = FALSE;
-
-  return res;
-}
-
-gboolean
-gst_rtp_h265_add_vps_sps_pps (GstElement * rtph265, GPtrArray * vps_array,
-    GPtrArray * sps_array, GPtrArray * pps_array, GstBuffer * nal)
-{
-  GstMapInfo map;
-  guchar type;
-  guint i;
-
-  gst_buffer_map (nal, &map, GST_MAP_READ);
-
-  type = (map.data[0] >> 1) & 0x3f;
-
-  if (type == GST_H265_VPS_NUT) {
-    guint32 vps_id = (map.data[2] >> 4) & 0x0f;
-
-    for (i = 0; i < vps_array->len; i++) {
-      GstBuffer *vps = g_ptr_array_index (vps_array, i);
-      GstMapInfo vpsmap;
-      guint32 tmp_vps_id;
-
-      gst_buffer_map (vps, &vpsmap, GST_MAP_READ);
-      tmp_vps_id = (vpsmap.data[2] >> 4) & 0x0f;
-
-      if (vps_id == tmp_vps_id) {
-        if (map.size == vpsmap.size &&
-            memcmp (map.data, vpsmap.data, vpsmap.size) == 0) {
-          GST_LOG_OBJECT (rtph265, "Unchanged VPS %u, not updating", vps_id);
-          gst_buffer_unmap (vps, &vpsmap);
-          goto drop;
-        } else {
-          gst_buffer_unmap (vps, &vpsmap);
-          g_ptr_array_remove_index_fast (vps_array, i);
-          g_ptr_array_add (vps_array, nal);
-          GST_LOG_OBJECT (rtph265, "Modified VPS %u, replacing", vps_id);
-          goto done;
-        }
-      }
-      gst_buffer_unmap (vps, &vpsmap);
-    }
-    GST_LOG_OBJECT (rtph265, "Adding new VPS %u", vps_id);
-    g_ptr_array_add (vps_array, nal);
-  } else if (type == GST_H265_SPS_NUT) {
-    guint32 sps_id;
-
-    if (!parse_sps (&map, &sps_id)) {
-      GST_WARNING_OBJECT (rtph265, "Invalid SPS,"
-          " can't parse seq_parameter_set_id");
-      goto drop;
-    }
-
-    for (i = 0; i < sps_array->len; i++) {
-      GstBuffer *sps = g_ptr_array_index (sps_array, i);
-      GstMapInfo spsmap;
-      guint32 tmp_sps_id;
-
-      gst_buffer_map (sps, &spsmap, GST_MAP_READ);
-      parse_sps (&spsmap, &tmp_sps_id);
-
-      if (sps_id == tmp_sps_id) {
-        if (map.size == spsmap.size &&
-            memcmp (map.data, spsmap.data, spsmap.size) == 0) {
-          GST_LOG_OBJECT (rtph265, "Unchanged SPS %u, not updating", sps_id);
-          gst_buffer_unmap (sps, &spsmap);
-          goto drop;
-        } else {
-          gst_buffer_unmap (sps, &spsmap);
-          g_ptr_array_remove_index_fast (sps_array, i);
-          g_ptr_array_add (sps_array, nal);
-          GST_LOG_OBJECT (rtph265, "Modified SPS %u, replacing", sps_id);
-          goto done;
-        }
-      }
-      gst_buffer_unmap (sps, &spsmap);
-    }
-    GST_LOG_OBJECT (rtph265, "Adding new SPS %u", sps_id);
-    g_ptr_array_add (sps_array, nal);
-  } else if (type == GST_H265_PPS_NUT) {
-    guint32 sps_id;
-    guint32 pps_id;
-
-    if (!parse_pps (&map, &sps_id, &pps_id)) {
-      GST_WARNING_OBJECT (rtph265, "Invalid PPS,"
-          " can't parse seq_parameter_set_id or pic_parameter_set_id");
-      goto drop;
-    }
-
-    for (i = 0; i < pps_array->len; i++) {
-      GstBuffer *pps = g_ptr_array_index (pps_array, i);
-      GstMapInfo ppsmap;
-      guint32 tmp_sps_id;
-      guint32 tmp_pps_id;
-
-
-      gst_buffer_map (pps, &ppsmap, GST_MAP_READ);
-      parse_pps (&ppsmap, &tmp_sps_id, &tmp_pps_id);
-
-      if (pps_id == tmp_pps_id) {
-        if (map.size == ppsmap.size &&
-            memcmp (map.data, ppsmap.data, ppsmap.size) == 0) {
-          GST_LOG_OBJECT (rtph265, "Unchanged PPS %u:%u, not updating", sps_id,
-              pps_id);
-          gst_buffer_unmap (pps, &ppsmap);
-          goto drop;
-        } else {
-          gst_buffer_unmap (pps, &ppsmap);
-          g_ptr_array_remove_index_fast (pps_array, i);
-          g_ptr_array_add (pps_array, nal);
-          GST_LOG_OBJECT (rtph265, "Modified PPS %u:%u, replacing",
-              sps_id, pps_id);
-          goto done;
-        }
-      }
-      gst_buffer_unmap (pps, &ppsmap);
-    }
-    GST_LOG_OBJECT (rtph265, "Adding new PPS %u:%i", sps_id, pps_id);
-    g_ptr_array_add (pps_array, nal);
-  } else {
-    goto drop;
-  }
-
-done:
-  gst_buffer_unmap (nal, &map);
-
-  return TRUE;
-
-drop:
-  gst_buffer_unmap (nal, &map);
-  gst_buffer_unref (nal);
-
-  return FALSE;
-}
-
-
-static void
-gst_rtp_h265_depay_add_vps_sps_pps (GstRtpH265Depay * rtph265depay,
-    GstBuffer * nal)
-{
-  if (gst_rtp_h265_add_vps_sps_pps (GST_ELEMENT (rtph265depay),
-          rtph265depay->vps, rtph265depay->sps, rtph265depay->pps, nal))
-    rtph265depay->new_codec_data = TRUE;
-}
-
-static gboolean
-gst_rtp_h265_depay_setcaps (GstRTPBaseDepayload * depayload, GstCaps * caps)
-{
-  gint clock_rate;
-  GstStructure *structure = gst_caps_get_structure (caps, 0);
-  GstRtpH265Depay *rtph265depay;
-  const gchar *ps;
-  GstBuffer *codec_data;
-  GstMapInfo map;
-  guint8 *ptr;
-
-  rtph265depay = GST_RTP_H265_DEPAY (depayload);
-
-  if (!gst_structure_get_int (structure, "clock-rate", &clock_rate))
-    clock_rate = 90000;
-  depayload->clock_rate = clock_rate;
-
-  /* Base64 encoded, comma separated config NALs */
-  ps = gst_structure_get_string (structure, "sprop-parameter-sets");
-
-  /* negotiate with downstream w.r.t. output format and alignment */
-  gst_rtp_h265_depay_negotiate (rtph265depay);
-
-  if (rtph265depay->byte_stream && ps != NULL) {
-    /* for bytestream we only need the parameter sets but we don't error out
-     * when they are not there, we assume they are in the stream. */
-    gchar **params;
-    guint len, total;
-    gint i;
-
-    params = g_strsplit (ps, ",", 0);
-
-    /* count total number of bytes in base64. Also include the sync bytes in
-     * front of the params. */
-    len = 0;
-    for (i = 0; params[i]; i++) {
-      len += strlen (params[i]);
-      len += sizeof (sync_bytes);
-    }
-    /* we seriously overshoot the length, but it's fine. */
-    codec_data = gst_buffer_new_and_alloc (len);
-
-    gst_buffer_map (codec_data, &map, GST_MAP_WRITE);
-    ptr = map.data;
-    total = 0;
-    for (i = 0; params[i]; i++) {
-      guint save = 0;
-      gint state = 0;
-
-      GST_DEBUG_OBJECT (depayload, "decoding param %d (%s)", i, params[i]);
-      memcpy (ptr, sync_bytes, sizeof (sync_bytes));
-      ptr += sizeof (sync_bytes);
-      len =
-          g_base64_decode_step (params[i], strlen (params[i]), ptr, &state,
-          &save);
-      GST_DEBUG_OBJECT (depayload, "decoded %d bytes", len);
-      total += len + sizeof (sync_bytes);
-      ptr += len;
-    }
-    gst_buffer_unmap (codec_data, &map);
-    gst_buffer_resize (codec_data, 0, total);
-    g_strfreev (params);
-
-    /* keep the codec_data, we need to send it as the first buffer. We cannot
-     * push it in the adapter because the adapter might be flushed on discont.
-     */
-    if (rtph265depay->codec_data)
-      gst_buffer_unref (rtph265depay->codec_data);
-    rtph265depay->codec_data = codec_data;
-  } else if (!rtph265depay->byte_stream) {
-    gchar **params;
-    gint i;
-
-    if (ps == NULL)
-      goto incomplete_caps;
-
-    params = g_strsplit (ps, ",", 0);
-
-    GST_DEBUG_OBJECT (depayload, "we have %d params", g_strv_length (params));
-
-    /* start with 23 bytes header */
-    for (i = 0; params[i]; i++) {
-      GstBuffer *nal;
-      GstMapInfo nalmap;
-      gsize nal_len;
-      guint save = 0;
-      gint state = 0;
-
-      nal_len = strlen (params[i]);
-      nal = gst_buffer_new_and_alloc (nal_len);
-      gst_buffer_map (nal, &nalmap, GST_MAP_READWRITE);
-
-      nal_len =
-          g_base64_decode_step (params[i], nal_len, nalmap.data, &state, &save);
-
-      GST_DEBUG_OBJECT (depayload, "adding param %d as %s", i,
-          (((nalmap.data[0] >> 1) & 0x3f) ==
-              32) ? "VPS" : (((nalmap.data[0] >> 1) & 0x3f) ==
-              33) ? "SPS" : "PPS");
-
-      gst_buffer_unmap (nal, &nalmap);
-      gst_buffer_set_size (nal, nal_len);
-
-      gst_rtp_h265_depay_add_vps_sps_pps (rtph265depay, nal);
-    }
-    g_strfreev (params);
-
-    if (rtph265depay->sps->len == 0 || rtph265depay->pps->len == 0)
-      goto incomplete_caps;
-  }
-
-  return gst_rtp_h265_set_src_caps (rtph265depay);
-
-  /* ERRORS */
-incomplete_caps:
-  {
-    GST_DEBUG_OBJECT (depayload, "we have incomplete caps,"
-        " doing setcaps later");
-    return TRUE;
-  }
-}
-
-static GstBuffer *
-gst_rtp_h265_complete_au (GstRtpH265Depay * rtph265depay,
-    GstClockTime * out_timestamp, gboolean * out_keyframe)
-{
-  guint outsize;
-  GstBuffer *outbuf;
-
-  /* we had a picture in the adapter and we completed it */
-  GST_DEBUG_OBJECT (rtph265depay, "taking completed AU");
-  outsize = gst_adapter_available (rtph265depay->picture_adapter);
-  outbuf = gst_adapter_take_buffer (rtph265depay->picture_adapter, outsize);
-
-  *out_timestamp = rtph265depay->last_ts;
-  *out_keyframe = rtph265depay->last_keyframe;
-
-  rtph265depay->last_keyframe = FALSE;
-  rtph265depay->picture_start = FALSE;
-
-  return outbuf;
-}
-
-/* VPS/SPS/PPS/RADL/TSA/RASL/IDR/CRA is considered key, all others DELTA;
- * so downstream waiting for keyframe can pick up at VPS/SPS/PPS/IDR */
-
-#define NAL_TYPE_IS_PARAMETER_SET(nt) (		((nt) == GST_H265_VPS_NUT)\
-										||  ((nt) == GST_H265_SPS_NUT)\
-										||  ((nt) == GST_H265_PPS_NUT)				)
-
-#define NAL_TYPE_IS_CODED_SLICE_SEGMENT(nt) (		((nt) == GST_H265_NAL_SLICE_TRAIL_N)\
-												|| 	((nt) == GST_H265_NAL_SLICE_TRAIL_R)\
-												||  ((nt) == GST_H265_NAL_SLICE_TSA_N)\
-												||  ((nt) == GST_H265_NAL_SLICE_TSA_R)\
-												||  ((nt) == GST_H265_NAL_SLICE_STSA_N)\
-												||  ((nt) == GST_H265_NAL_SLICE_STSA_R)\
-												||  ((nt) == GST_H265_NAL_SLICE_RASL_N)\
-												||  ((nt) == GST_H265_NAL_SLICE_RASL_R)\
-												||  ((nt) == GST_H265_NAL_SLICE_BLA_W_LP)\
-												||  ((nt) == GST_H265_NAL_SLICE_BLA_W_RADL)\
-												||  ((nt) == GST_H265_NAL_SLICE_BLA_N_LP)\
-												||  ((nt) == GST_H265_NAL_SLICE_IDR_W_RADL)\
-												||  ((nt) == GST_H265_NAL_SLICE_IDR_N_LP)\
-												||  ((nt) == GST_H265_NAL_SLICE_CRA_NUT)		)
-
-#define NAL_TYPE_IS_KEY(nt) (NAL_TYPE_IS_PARAMETER_SET(nt) || NAL_TYPE_IS_CODED_SLICE_SEGMENT(nt))
-
-static gboolean
-foreach_metadata_copy (GstBuffer * inbuf, GstMeta ** meta, gpointer user_data)
-{
-  CopyMetaData *data = user_data;
-  GstElement *element = data->element;
-  GstBuffer *outbuf = data->outbuf;
-  const GstMetaInfo *info = (*meta)->info;
-  const gchar *const *tags = gst_meta_api_type_get_tags (info->api);
-
-  if (!tags || (g_strv_length ((gchar **) tags) == 1
-          && gst_meta_api_type_has_tag (info->api,
-              g_quark_from_string (GST_META_TAG_VIDEO_STR)))) {
-    GstMetaTransformCopy copy_data = { FALSE, 0, -1 };
-    GST_DEBUG_OBJECT (element, "copy metadata %s", g_type_name (info->api));
-    /* simply copy then */
-    info->transform_func (outbuf, *meta, inbuf,
-        _gst_meta_transform_copy, &copy_data);
-  } else {
-    GST_DEBUG_OBJECT (element, "not copying metadata %s",
-        g_type_name (info->api));
-  }
-
-  return TRUE;
-}
-
-/* TODO: Should probably make copy_tag an array at some point */
-void
-gst_rtp_copy_meta (GstElement * element, GstBuffer * outbuf, GstBuffer * inbuf,
-    GQuark copy_tag)
-{
-  CopyMetaData data = { element, outbuf, copy_tag };
-
-  gst_buffer_foreach_meta (inbuf, foreach_metadata_copy, &data);
-}
-
-static gboolean
-foreach_metadata_drop (GstBuffer * inbuf, GstMeta ** meta, gpointer user_data)
-{
-  GstRtpH265Depay *depay = user_data;
-  const GstMetaInfo *info = (*meta)->info;
-  const gchar *const *tags = gst_meta_api_type_get_tags (info->api);
-
-  if (!tags || (g_strv_length ((gchar **) tags) == 1
-          && gst_meta_api_type_has_tag (info->api,
-              g_quark_from_string (GST_META_TAG_VIDEO_STR)))) {
-    GST_DEBUG_OBJECT (depay, "keeping metadata %s", g_type_name (info->api));
-  } else {
-    GST_DEBUG_OBJECT (depay, "dropping metadata %s", g_type_name (info->api));
-    *meta = NULL;
-  }
-
-  return TRUE;
-}
-
-static GstBuffer *
-gst_rtp_h265_depay_handle_nal (GstRtpH265Depay * rtph265depay, GstBuffer * nal,
-    GstClockTime in_timestamp, gboolean marker)
-{
-  GstRTPBaseDepayload *depayload = GST_RTP_BASE_DEPAYLOAD (rtph265depay);
-  gint nal_type;
-  GstMapInfo map;
-  GstBuffer *outbuf = NULL;
-  GstClockTime out_timestamp;
-  gboolean keyframe, out_keyframe;
-
-  gst_buffer_map (nal, &map, GST_MAP_READ);
-  if (G_UNLIKELY (map.size < 5))
-    goto short_nal;
-
-  nal_type = (map.data[4] >> 1) & 0x3f;
-  GST_DEBUG_OBJECT (rtph265depay, "handle NAL type %d (RTP marker bit %d)",
-      nal_type, marker);
-
-  keyframe = NAL_TYPE_IS_KEY (nal_type);
-
-  out_keyframe = keyframe;
-  out_timestamp = in_timestamp;
-
-  if (!rtph265depay->byte_stream) {
-    if (NAL_TYPE_IS_PARAMETER_SET (nal_type)) {
-      gst_rtp_h265_depay_add_vps_sps_pps (rtph265depay,
-          gst_buffer_copy_region (nal, GST_BUFFER_COPY_ALL,
-              4, gst_buffer_get_size (nal) - 4));
-      gst_buffer_unmap (nal, &map);
-      gst_buffer_unref (nal);
-      return NULL;
-    } else if (rtph265depay->sps->len == 0 || rtph265depay->pps->len == 0) {
-      /* Down push down any buffer in non-bytestream mode if the SPS/PPS haven't
-       * go through yet
-       */
-      gst_pad_push_event (GST_RTP_BASE_DEPAYLOAD_SINKPAD (depayload),
-          gst_event_new_custom (GST_EVENT_CUSTOM_UPSTREAM,
-              gst_structure_new ("GstForceKeyUnit",
-                  "all-headers", G_TYPE_BOOLEAN, TRUE, NULL)));
-      gst_buffer_unmap (nal, &map);
-      gst_buffer_unref (nal);
-      return NULL;
-    }
-
-    if (rtph265depay->new_codec_data &&
-        rtph265depay->sps->len > 0 && rtph265depay->pps->len > 0)
-      gst_rtp_h265_set_src_caps (rtph265depay);
-  }
-
-  if (rtph265depay->merge) {
-    gboolean start = FALSE, complete = FALSE;
-
-    /* marker bit isn't mandatory so in the following code we try to detect
-     * an AU boundary (see H.265 spec section 7.4.2.4.4) */
-    if (!marker) {
-
-      if (NAL_TYPE_IS_CODED_SLICE_SEGMENT (nal_type)) {
-        /* A NAL unit (X) ends an access unit if the next-occurring VCL NAL unit (Y) has the high-order bit of the first byte after its NAL unit header equal to 1 */
-        start = TRUE;
-        if (((map.data[6] >> 7) & 0x01) == 1) {
-          complete = TRUE;
-        }
-        complete = TRUE;
-      } else if ((nal_type >= 32 && nal_type <= 35)
-          || nal_type == 39 || (nal_type >= 41 && nal_type <= 44)
-          || (nal_type >= 48 && nal_type <= 55)) {
-        /* VPS, SPS, PPS, SEI, ... terminate an access unit */
-        complete = TRUE;
-      }
-      GST_DEBUG_OBJECT (depayload, "start %d, complete %d", start, complete);
-
-      if (complete && rtph265depay->picture_start)
-        outbuf = gst_rtp_h265_complete_au (rtph265depay, &out_timestamp,
-            &out_keyframe);
-    }
-    /* add to adapter */
-    gst_buffer_unmap (nal, &map);
-
-    GST_DEBUG_OBJECT (depayload, "adding NAL to picture adapter");
-    gst_adapter_push (rtph265depay->picture_adapter, nal);
-    rtph265depay->last_ts = in_timestamp;
-    rtph265depay->last_keyframe |= keyframe;
-    rtph265depay->picture_start |= start;
-
-    if (marker)
-      outbuf = gst_rtp_h265_complete_au (rtph265depay, &out_timestamp,
-          &out_keyframe);
-  } else {
-    /* no merge, output is input nal */
-    GST_DEBUG_OBJECT (depayload, "using NAL as output");
-    outbuf = nal;
-    gst_buffer_unmap (nal, &map);
-  }
-
-  if (outbuf) {
-    /* prepend codec_data */
-    if (rtph265depay->codec_data) {
-      GST_DEBUG_OBJECT (depayload, "prepending codec_data");
-      gst_rtp_copy_meta (GST_ELEMENT_CAST (rtph265depay),
-          rtph265depay->codec_data, outbuf,
-          g_quark_from_static_string (GST_META_TAG_VIDEO_STR));
-      outbuf = gst_buffer_append (rtph265depay->codec_data, outbuf);
-      rtph265depay->codec_data = NULL;
-      out_keyframe = TRUE;
-    }
-    outbuf = gst_buffer_make_writable (outbuf);
-
-    gst_buffer_foreach_meta (outbuf, foreach_metadata_drop, depayload);
-
-    GST_BUFFER_PTS (outbuf) = out_timestamp;
-
-    if (out_keyframe)
-      GST_BUFFER_FLAG_UNSET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT);
-    else
-      GST_BUFFER_FLAG_SET (outbuf, GST_BUFFER_FLAG_DELTA_UNIT);
-  }
-
-  return outbuf;
-
-  /* ERRORS */
-short_nal:
-  {
-    GST_WARNING_OBJECT (depayload, "dropping short NAL");
-    gst_buffer_unmap (nal, &map);
-    gst_buffer_unref (nal);
-    return NULL;
-  }
-}
-
-static GstBuffer *
-gst_rtp_h265_push_fragmentation_unit (GstRtpH265Depay * rtph265depay,
-    gboolean send)
-{
-  guint outsize;
-  GstMapInfo map;
-  GstBuffer *outbuf;
-
-  outsize = gst_adapter_available (rtph265depay->adapter);
-  outbuf = gst_adapter_take_buffer (rtph265depay->adapter, outsize);
-
-  gst_buffer_map (outbuf, &map, GST_MAP_WRITE);
-  GST_DEBUG_OBJECT (rtph265depay, "output %d bytes", outsize);
-
-  if (rtph265depay->byte_stream) {
-    memcpy (map.data, sync_bytes, sizeof (sync_bytes));
-  } else {
-    goto not_implemented;
-  }
-  gst_buffer_unmap (outbuf, &map);
-
-  rtph265depay->current_fu_type = 0;
-
-  outbuf = gst_rtp_h265_depay_handle_nal (rtph265depay, outbuf,
-      rtph265depay->fu_timestamp, rtph265depay->fu_marker);
-
-  if (send && outbuf) {
-    gst_rtp_base_depayload_push (GST_RTP_BASE_DEPAYLOAD (rtph265depay), outbuf);
-    outbuf = NULL;
-  }
-  return outbuf;
-
-not_implemented:
-  {
-    GST_ERROR_OBJECT (rtph265depay,
-        ("Only bytestream format is currently supported."));
-    gst_buffer_unmap (outbuf, &map);
-    return NULL;
-  }
-}
-
-static GstBuffer *
-gst_rtp_h265_depay_process (GstRTPBaseDepayload * depayload, GstRTPBuffer * rtp)
-{
-  GstRtpH265Depay *rtph265depay;
-  GstBuffer *buf;
-  GstBuffer *outbuf = NULL;
-  guint8 nal_unit_type;
-
-  rtph265depay = GST_RTP_H265_DEPAY (depayload);
-
-  /* flush remaining data on discont */
-  if (GST_BUFFER_IS_DISCONT (rtp->buffer)) {
-    gst_adapter_clear (rtph265depay->adapter);
-    rtph265depay->wait_start = TRUE;
-    rtph265depay->current_fu_type = 0;
-  }
-
-  {
-    gint payload_len;
-    guint8 *payload;
-    guint header_len;
-    GstMapInfo map;
-    guint outsize, nalu_size;
-    GstClockTime timestamp;
-    gboolean marker;
-    guint8 nuh_layer_id, nuh_temporal_id_plus1;
-    guint8 S, E;
-    guint16 nal_header;
-#if 0
-    gboolean donl_present = FALSE;
-#endif
-
-    timestamp = GST_BUFFER_PTS (rtp->buffer);
-
-    payload_len = gst_rtp_buffer_get_payload_len (rtp);
-    payload = gst_rtp_buffer_get_payload (rtp);
-    buf = gst_rtp_buffer_get_payload_buffer (rtp);
-    marker = gst_rtp_buffer_get_marker (rtp);
-
-    GST_DEBUG_OBJECT (rtph265depay, "receiving %d bytes", payload_len);
-
-    if (payload_len == 0)
-      goto empty_packet;
-
-    /* +---------------+---------------+
-     * |0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|
-     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-     * |F|   Type    |  LayerId  | TID |
-     * +-------------+-----------------+
-     *
-     * F must be 0.
-     *
-     */
-    nal_unit_type = (payload[0] >> 1) & 0x3f;
-    nuh_layer_id = ((payload[0] & 0x01) << 5) | (payload[1] >> 3);      /* should be zero for now but this could change in future HEVC extensions */
-    nuh_temporal_id_plus1 = payload[1] & 0x03;
-
-    /* At least two byte header with type */
-    header_len = 2;
-
-    GST_DEBUG_OBJECT (rtph265depay,
-        "NAL header nal_unit_type %d, nuh_temporal_id_plus1 %d", nal_unit_type,
-        nuh_temporal_id_plus1);
-
-    GST_FIXME_OBJECT (rtph265depay, "Assuming DONL field is not present");
-
-    /* FIXME - assuming DONL field is not present for now */
-    /*donl_present = (tx-mode == "MST") || (sprop-max-don-diff > 0); */
-
-    /* If FU unit was being processed, but the current nal is of a different
-     * type.  Assume that the remote payloader is buggy (didn't set the end bit
-     * when the FU ended) and send out what we gathered thusfar */
-    if (G_UNLIKELY (rtph265depay->current_fu_type != 0 &&
-            nal_unit_type != rtph265depay->current_fu_type))
-      gst_rtp_h265_push_fragmentation_unit (rtph265depay, TRUE);
-
-    switch (nal_unit_type) {
-      case 48:
-      {
-        GST_DEBUG_OBJECT (rtph265depay, "Processing aggregation packet");
-
-        /* Aggregation packet (section 4.7) */
-
-        /*  An example of an AP packet containing two aggregation units
-           without the DONL and DOND fields
-
-           0                   1                   2                   3
-           0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |                          RTP Header                           |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |   PayloadHdr (Type=48)        |         NALU 1 Size           |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |          NALU 1 HDR           |                               |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         NALU 1 Data           |
-           |                   . . .                                       |
-           |                                                               |
-           +               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |  . . .        | NALU 2 Size                   | NALU 2 HDR    |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           | NALU 2 HDR    |                                               |
-           +-+-+-+-+-+-+-+-+              NALU 2 Data                      |
-           |                   . . .                                       |
-           |                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-           |                               :...OPTIONAL RTP padding        |
-           +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         */
-
-        /* strip headers */
-        payload += header_len;
-        payload_len -= header_len;
-
-        rtph265depay->wait_start = FALSE;
-
-#if 0
-        if (donl_present)
-          goto not_implemented_donl_present;
-#endif
-
-        while (payload_len > 2) {
-
-          nalu_size = (payload[0] << 8) | payload[1];
-
-          /* dont include nalu_size */
-          if (nalu_size > (payload_len - 2))
-            nalu_size = payload_len - 2;
-
-          outsize = nalu_size + sizeof (sync_bytes);
-          outbuf = gst_buffer_new_and_alloc (outsize);
-
-          gst_buffer_map (outbuf, &map, GST_MAP_WRITE);
-          if (rtph265depay->byte_stream) {
-            memcpy (map.data, sync_bytes, sizeof (sync_bytes));
-          } else {
-            goto not_implemented;
-          }
-
-          /* strip NALU size */
-          payload += 2;
-          payload_len -= 2;
-
-          memcpy (map.data + sizeof (sync_bytes), payload, nalu_size);
-          gst_buffer_unmap (outbuf, &map);
-
-          gst_rtp_copy_meta (GST_ELEMENT_CAST (rtph265depay), outbuf, buf,
-              g_quark_from_static_string (GST_META_TAG_VIDEO_STR));
-
-          outbuf =
-              gst_rtp_h265_depay_handle_nal (rtph265depay, outbuf, timestamp,
-              marker);
-          if (outbuf)
-            gst_adapter_push (rtph265depay->adapter, outbuf);
-
-          payload += nalu_size;
-          payload_len -= nalu_size;
-        }
-
-        outsize = gst_adapter_available (rtph265depay->adapter);
-        if (outsize > 0) {
-          outbuf = gst_adapter_take_buffer (rtph265depay->adapter, outsize);
-          outbuf =
-              gst_rtp_h265_depay_handle_nal (rtph265depay, outbuf, timestamp,
-              marker);
-        }
-        break;
-      }
-      case 49:
-      {
-        GST_DEBUG_OBJECT (rtph265depay, "Processing Fragmentation Unit");
-
-        /* Fragmentation units (FUs)  Section 4.8 */
-
-        /*    The structure of a Fragmentation Unit (FU)
-         *
-         *    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         |    PayloadHdr (Type=49)       |   FU header   | DONL (cond)   |
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
-         | DONL (cond)   |                                               |
-         |-+-+-+-+-+-+-+-+                                               |
-         |                         FU payload                            |
-         |                                                               |
-         |                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         |                               :...OPTIONAL RTP padding        |
-         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-         *
-         *
-         */
-
-        /* strip headers */
-        payload += header_len;
-        payload_len -= header_len;
-
-        /* processing FU header */
-        S = (payload[0] & 0x80) == 0x80;
-        E = (payload[0] & 0x40) == 0x40;
-
-        GST_DEBUG_OBJECT (rtph265depay,
-            "FU header with S %d, E %d, nal_unit_type %d", S, E,
-            payload[0] & 0x3f);
-
-        if (rtph265depay->wait_start && !S)
-          goto waiting_start;
-
-#if 0
-        if (donl_present)
-          goto not_implemented_donl_present;
-#endif
-
-        if (S) {
-
-          GST_DEBUG_OBJECT (rtph265depay, "Start of Fragmentation Unit");
-
-          /* If a new FU unit started, while still processing an older one.
-           * Assume that the remote payloader is buggy (doesn't set the end
-           * bit) and send out what we've gathered thusfar */
-          if (G_UNLIKELY (rtph265depay->current_fu_type != 0))
-            gst_rtp_h265_push_fragmentation_unit (rtph265depay, TRUE);
-
-          rtph265depay->current_fu_type = nal_unit_type;
-          rtph265depay->fu_timestamp = timestamp;
-
-          rtph265depay->wait_start = FALSE;
-
-          /* reconstruct NAL header */
-          nal_header =
-              ((payload[0] & 0x3f) << 9) | (nuh_layer_id << 3) |
-              nuh_temporal_id_plus1;
-
-          /* go back one byte so we can copy the payload + two bytes more in the front which
-           * will be overwritten by the nal_header
-           */
-          payload -= 1;
-          payload_len += 1;
-
-          nalu_size = payload_len;
-          outsize = nalu_size + sizeof (sync_bytes);
-          outbuf = gst_buffer_new_and_alloc (outsize);
-
-          gst_buffer_map (outbuf, &map, GST_MAP_WRITE);
-          memcpy (map.data + sizeof (sync_bytes), payload, nalu_size);
-          map.data[sizeof (sync_bytes)] = nal_header >> 8;
-          map.data[sizeof (sync_bytes) + 1] = nal_header & 0xff;
-          gst_buffer_unmap (outbuf, &map);
-
-          gst_rtp_copy_meta (GST_ELEMENT_CAST (rtph265depay), outbuf, buf,
-              g_quark_from_static_string (GST_META_TAG_VIDEO_STR));
-
-          GST_DEBUG_OBJECT (rtph265depay, "queueing %d bytes", outsize);
-
-          /* and assemble in the adapter */
-          gst_adapter_push (rtph265depay->adapter, outbuf);
-        } else {
-
-          GST_DEBUG_OBJECT (rtph265depay,
-              "Following part of Fragmentation Unit");
-
-          /* strip off FU header byte */
-          payload += 1;
-          payload_len -= 1;
-
-          outsize = payload_len;
-          outbuf = gst_buffer_new_and_alloc (outsize);
-          gst_buffer_fill (outbuf, 0, payload, outsize);
-
-          gst_rtp_copy_meta (GST_ELEMENT_CAST (rtph265depay), outbuf, buf,
-              g_quark_from_static_string (GST_META_TAG_VIDEO_STR));
-
-          GST_DEBUG_OBJECT (rtph265depay, "queueing %d bytes", outsize);
-
-          /* and assemble in the adapter */
-          gst_adapter_push (rtph265depay->adapter, outbuf);
-        }
-
-        outbuf = NULL;
-        rtph265depay->fu_marker = marker;
-
-        /* if NAL unit ends, flush the adapter */
-        if (E) {
-          outbuf = gst_rtp_h265_push_fragmentation_unit (rtph265depay, FALSE);
-          GST_DEBUG_OBJECT (rtph265depay, "End of Fragmentation Unit");
-        }
-        break;
-      }
-      case 50:
-        goto not_implemented;   /* PACI packets  Section 4.9 */
-      default:
-      {
-        rtph265depay->wait_start = FALSE;
-
-        /* All other cases: Single NAL unit packet   Section 4.6 */
-        /* the entire payload is the output buffer */
-
-#if 0
-        if (donl_present)
-          goto not_implemented_donl_present;
-#endif
-
-        nalu_size = payload_len;
-        outsize = nalu_size + sizeof (sync_bytes);
-        outbuf = gst_buffer_new_and_alloc (outsize);
-
-        gst_buffer_map (outbuf, &map, GST_MAP_WRITE);
-        if (rtph265depay->byte_stream) {
-          memcpy (map.data, sync_bytes, sizeof (sync_bytes));
-        } else {
-          goto not_implemented;
-        }
-        memcpy (map.data + sizeof (sync_bytes), payload, nalu_size);
-        gst_buffer_unmap (outbuf, &map);
-
-        gst_rtp_copy_meta (GST_ELEMENT_CAST (rtph265depay), outbuf, buf,
-            g_quark_from_static_string (GST_META_TAG_VIDEO_STR));
-
-        outbuf = gst_rtp_h265_depay_handle_nal (rtph265depay, outbuf, timestamp,
-            marker);
-        break;
-      }
-    }
-  }
-
-  gst_buffer_unref (buf);
-
-  return outbuf;
-
-  /* ERRORS */
-empty_packet:
-  {
-    GST_DEBUG_OBJECT (rtph265depay, "empty packet");
-    gst_buffer_unref (buf);
-    return NULL;
-  }
-waiting_start:
-  {
-    GST_DEBUG_OBJECT (rtph265depay, "waiting for start");
-    gst_buffer_unref (buf);
-    return NULL;
-  }
-#if 0
-not_implemented_donl_present:
-  {
-    GST_ELEMENT_ERROR (rtph265depay, STREAM, FORMAT,
-        (NULL), ("DONL field present not supported yet"));
-    gst_buffer_unref (buf);
-    return NULL;
-  }
-#endif
-not_implemented:
-  {
-    GST_ELEMENT_ERROR (rtph265depay, STREAM, FORMAT,
-        (NULL), ("NAL unit type %d not supported yet", nal_unit_type));
-    gst_buffer_unref (buf);
-    return NULL;
-  }
-}
-
-static gboolean
-gst_rtp_h265_depay_handle_event (GstRTPBaseDepayload * depay, GstEvent * event)
-{
-  GstRtpH265Depay *rtph265depay;
-
-  rtph265depay = GST_RTP_H265_DEPAY (depay);
-
-  switch (GST_EVENT_TYPE (event)) {
-    case GST_EVENT_FLUSH_STOP:
-      gst_rtp_h265_depay_reset (rtph265depay);
-      break;
-    default:
-      break;
-  }
-
-  return
-      GST_RTP_BASE_DEPAYLOAD_CLASS (parent_class)->handle_event (depay, event);
-}
-
-static GstStateChangeReturn
-gst_rtp_h265_depay_change_state (GstElement * element,
-    GstStateChange transition)
-{
-  GstRtpH265Depay *rtph265depay;
-  GstStateChangeReturn ret;
-
-  rtph265depay = GST_RTP_H265_DEPAY (element);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_NULL_TO_READY:
-      break;
-    case GST_STATE_CHANGE_READY_TO_PAUSED:
-      gst_rtp_h265_depay_reset (rtph265depay);
-      break;
-    default:
-      break;
-  }
-
-  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_READY_TO_NULL:
-      break;
-    default:
-      break;
-  }
-  return ret;
-}
-
-gboolean
-gst_rtp_h265_depay_plugin_init (GstPlugin * plugin)
-{
-  GST_DEBUG_CATEGORY_INIT (rtph265depay_debug, "rtph265depay", 0,
-      "H265 Video RTP Depayloader");
-
-  return gst_element_register (plugin, "rtph265depay",
-      GST_RANK_SECONDARY, GST_TYPE_RTP_H265_DEPAY);
-}
diff --git a/gst/rtp/gstrtph265depay.h b/gst/rtp/gstrtph265depay.h
deleted file mode 100644
index 9f50ac6..0000000
--- a/gst/rtp/gstrtph265depay.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/* GStreamer
- * Copyright (C) <2006> Wim Taymans <wim.taymans@gmail.com>
- * Copyright (C) <2014> Jurgen Slowack <jurgenslowack@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_RTP_H265_DEPAY_H__
-#define __GST_RTP_H265_DEPAY_H__
-
-#include <gst/gst.h>
-#include <gst/base/gstadapter.h>
-#include <gst/rtp/gstrtpbasedepayload.h>
-#include <gst/codecparsers/gsth265parser.h>
-
-G_BEGIN_DECLS
-#define GST_TYPE_RTP_H265_DEPAY \
-  (gst_rtp_h265_depay_get_type())
-#define GST_RTP_H265_DEPAY(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_H265_DEPAY,GstRtpH265Depay))
-#define GST_RTP_H265_DEPAY_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_H265_DEPAY,GstRtpH265DepayClass))
-#define GST_IS_RTP_H265_DEPAY(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_H265_DEPAY))
-#define GST_IS_RTP_H265_DEPAY_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_H265_DEPAY))
-typedef struct _GstRtpH265Depay GstRtpH265Depay;
-typedef struct _GstRtpH265DepayClass GstRtpH265DepayClass;
-
-#define GST_H265_VPS_NUT 32
-#define GST_H265_SPS_NUT 33
-#define GST_H265_PPS_NUT 34
-
-typedef enum
-{
-  GST_H265_STREAM_FORMAT_UNKNOWN,
-  GST_H265_STREAM_FORMAT_BYTESTREAM,
-  GST_H265_STREAM_FORMAT_HVC1,
-  GST_H265_STREAM_FORMAT_HEV1
-} GstH265StreamFormat;
-
-struct _GstRtpH265Depay
-{
-  GstRTPBaseDepayload depayload;
-
-  gchar *stream_format;
-  gboolean byte_stream;
-
-  GstBuffer *codec_data;
-  GstAdapter *adapter;
-  gboolean wait_start;
-
-  /* nal merging */
-  gboolean merge;
-  GstAdapter *picture_adapter;
-  gboolean picture_start;
-  GstClockTime last_ts;
-  gboolean last_keyframe;
-
-  /* Work around broken payloaders wrt. Fragmentation Units */
-  guint8 current_fu_type;
-  GstClockTime fu_timestamp;
-  gboolean fu_marker;
-
-  /* misc */
-  GPtrArray *vps;
-  GPtrArray *sps;
-  GPtrArray *pps;
-  gboolean new_codec_data;
-};
-
-struct _GstRtpH265DepayClass
-{
-  GstRTPBaseDepayloadClass parent_class;
-};
-
-typedef struct
-{
-  GstElement *element;
-  GstBuffer *outbuf;
-  GQuark copy_tag;
-} CopyMetaData;
-
-void gst_rtp_copy_meta (GstElement * element, GstBuffer *outbuf, GstBuffer *inbuf, GQuark copy_tag);
-
-GType gst_rtp_h265_depay_get_type (void);
-
-gboolean gst_rtp_h265_depay_plugin_init (GstPlugin * plugin);
-
-gboolean gst_rtp_h265_add_vps_sps_pps (GstElement * rtph265, GPtrArray * vps,
-    GPtrArray * sps, GPtrArray * pps, GstBuffer * nal);
-
-G_END_DECLS
-#endif /* __GST_RTP_H265_DEPAY_H__ */
diff --git a/gst/rtp/gstrtph265pay.c b/gst/rtp/gstrtph265pay.c
deleted file mode 100644
index b17b091..0000000
--- a/gst/rtp/gstrtph265pay.c
+++ /dev/null
@@ -1,1503 +0,0 @@
-/* GStreamer
- * Copyright (C) <2006> Wim Taymans <wim.taymans@gmail.com>
- * Copyright (C) <2014> Jurgen Slowack <jurgenslowack@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#  include "config.h"
-#endif
-
-#include <string.h>
-#include <stdlib.h>
-
-#include <gst/rtp/gstrtpbuffer.h>
-#include <gst/pbutils/pbutils.h>
-#include <gst/video/video.h>
-
-/* Included to not duplicate gst_rtp_h265_add_vps_sps_pps () */
-#include "gstrtph265depay.h"
-
-#include "gstrtph265pay.h"
-
-
-GST_DEBUG_CATEGORY_STATIC (rtph265pay_debug);
-#define GST_CAT_DEFAULT (rtph265pay_debug)
-
-/* references:
- *
- * Internet Draft RTP Payload Format for High Efficiency Video Coding
- *
- *                   draft-ietf-payload-rtp-h265-03.txt
- *
- * This draft will be replaced with an RFC, so some details may change.
- *
- */
-
-static GstStaticPadTemplate gst_rtp_h265_pay_sink_template =
-    GST_STATIC_PAD_TEMPLATE ("sink",
-    GST_PAD_SINK,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS (
-        /* Only bytestream format supported for now */
-        /* "video/x-h265, "
-           "stream-format = (string) hvc1, alignment = (string) au; "
-           "video/x-h265, "
-           "stream-format = (string) hev1, alignment = (string) au; " */
-        "video/x-h265, "
-        "stream-format = (string) byte-stream, alignment = (string) { nal, au }")
-    );
-
-static GstStaticPadTemplate gst_rtp_h265_pay_src_template =
-GST_STATIC_PAD_TEMPLATE ("src",
-    GST_PAD_SRC,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS ("application/x-rtp, "
-        "media = (string) \"video\", "
-        "payload = (int) " GST_RTP_PAYLOAD_DYNAMIC_STRING ", "
-        "clock-rate = (int) 90000, " "encoding-name = (string) \"H265\"")
-                /** optional parameters **/
-    /* "profile-space = (int) [ 0, 3 ], " */
-    /* "profile-id = (int) [ 0, 31 ], " */
-    /* "tier-flag = (int) [ 0, 1 ], " */
-    /* "level-id = (int) [ 0, 255 ], " */
-    /* "interop-constraints = (string) ANY, " */
-    /* "profile-compatibility-indicator = (string) ANY, " */
-    /* "sprop-sub-layer-id = (int) [ 0, 6 ], " */
-    /* "recv-sub-layer-id = (int) [ 0, 6 ], " */
-    /* "max-recv-level-id = (int) [ 0, 255 ], " */
-    /* "tx-mode = (string) {MST , SST}, " */
-    /* "sprop-vps = (string) ANY, " */
-    /* "sprop-sps = (string) ANY, " */
-    /* "sprop-pps = (string) ANY, " */
-    /* "sprop-sei = (string) ANY, " */
-    /* "max-lsr = (int) ANY, " *//* MUST be in the range of MaxLumaSR to 16 * MaxLumaSR, inclusive */
-    /* "max-lps = (int) ANY, " *//* MUST be in the range of MaxLumaPS to 16 * MaxLumaPS, inclusive */
-    /* "max-cpb = (int) ANY, " *//* MUST be in the range of MaxCPB to 16 * MaxCPB, inclusive */
-    /* "max-dpb = (int) [1, 16], " */
-    /* "max-br = (int) ANY, " *//* MUST be in the range of MaxBR to 16 * MaxBR, inclusive, for the highest level */
-    /* "max-tr = (int) ANY, " *//* MUST be in the range of MaxTileRows to 16 * MaxTileRows, inclusive, for the highest level */
-    /* "max-tc = (int) ANY, " *//* MUST be in the range of MaxTileCols to 16 * MaxTileCols, inclusive, for the highest level */
-    /* "max-fps = (int) ANY, " */
-    /* "sprop-max-don-diff = (int) [0, 32767], " */
-    /* "sprop-depack-buf-nalus = (int) [0, 32767], " */
-    /* "sprop-depack-buf-nalus = (int) [0, 4294967295], " */
-    /* "depack-buf-cap = (int) [1, 4294967295], " */
-    /* "sprop-segmentation-id = (int) [0, 3], " */
-    /* "sprop-spatial-segmentation-idc = (string) ANY, " */
-    /* "dec-parallel-cap = (string) ANY, " */
-    );
-
-#define DEFAULT_SPROP_PARAMETER_SETS    NULL
-#define DEFAULT_CONFIG_INTERVAL		      0
-
-enum
-{
-  PROP_0,
-  PROP_SPROP_PARAMETER_SETS,
-  PROP_CONFIG_INTERVAL
-};
-
-#define IS_ACCESS_UNIT(x) (((x) > 0x00) && ((x) < 0x06))
-
-static void gst_rtp_h265_pay_finalize (GObject * object);
-
-static void gst_rtp_h265_pay_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec);
-static void gst_rtp_h265_pay_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec);
-
-static GstCaps *gst_rtp_h265_pay_getcaps (GstRTPBasePayload * payload,
-    GstPad * pad, GstCaps * filter);
-static gboolean gst_rtp_h265_pay_setcaps (GstRTPBasePayload * basepayload,
-    GstCaps * caps);
-static GstFlowReturn gst_rtp_h265_pay_handle_buffer (GstRTPBasePayload * pad,
-    GstBuffer * buffer);
-static gboolean gst_rtp_h265_pay_sink_event (GstRTPBasePayload * payload,
-    GstEvent * event);
-static GstStateChangeReturn gst_rtp_h265_pay_change_state (GstElement *
-    element, GstStateChange transition);
-
-#define gst_rtp_h265_pay_parent_class parent_class
-G_DEFINE_TYPE (GstRtpH265Pay, gst_rtp_h265_pay, GST_TYPE_RTP_BASE_PAYLOAD);
-
-static void
-gst_rtp_h265_pay_class_init (GstRtpH265PayClass * klass)
-{
-  GObjectClass *gobject_class;
-  GstElementClass *gstelement_class;
-  GstRTPBasePayloadClass *gstrtpbasepayload_class;
-
-  gobject_class = (GObjectClass *) klass;
-  gstelement_class = (GstElementClass *) klass;
-  gstrtpbasepayload_class = (GstRTPBasePayloadClass *) klass;
-
-  gobject_class->set_property = gst_rtp_h265_pay_set_property;
-  gobject_class->get_property = gst_rtp_h265_pay_get_property;
-
-  g_object_class_install_property (G_OBJECT_CLASS (klass),
-      PROP_SPROP_PARAMETER_SETS, g_param_spec_string ("sprop-parameter-sets",
-          "sprop-parameter-sets",
-          "The base64 sprop-parameter-sets to set in out caps (set to NULL to "
-          "extract from stream)",
-          DEFAULT_SPROP_PARAMETER_SETS,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
-  g_object_class_install_property (G_OBJECT_CLASS (klass),
-      PROP_CONFIG_INTERVAL,
-      g_param_spec_uint ("config-interval",
-          "VPS SPS PPS Send Interval",
-          "Send VPS, SPS and PPS Insertion Interval in seconds (sprop parameter sets "
-          "will be multiplexed in the data stream when detected.) (0 = disabled)",
-          0, 3600, DEFAULT_CONFIG_INTERVAL,
-          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
-      );
-
-  gobject_class->finalize = gst_rtp_h265_pay_finalize;
-
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_rtp_h265_pay_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_rtp_h265_pay_sink_template));
-
-  gst_element_class_set_static_metadata (gstelement_class, "RTP H265 payloader",
-      "Codec/Payloader/Network/RTP",
-      "Payload-encode H265 video into RTP packets (based on draft-ietf-payload-rtp-h265-03.txt)",
-      "Jurgen Slowack <jurgenslowack@gmail.com>");
-
-  gstelement_class->change_state =
-      GST_DEBUG_FUNCPTR (gst_rtp_h265_pay_change_state);
-
-  gstrtpbasepayload_class->get_caps = gst_rtp_h265_pay_getcaps;
-  gstrtpbasepayload_class->set_caps = gst_rtp_h265_pay_setcaps;
-  gstrtpbasepayload_class->handle_buffer = gst_rtp_h265_pay_handle_buffer;
-  gstrtpbasepayload_class->sink_event = gst_rtp_h265_pay_sink_event;
-
-  GST_DEBUG_CATEGORY_INIT (rtph265pay_debug, "rtph265pay", 0,
-      "H265 RTP Payloader");
-}
-
-static void
-gst_rtp_h265_pay_init (GstRtpH265Pay * rtph265pay)
-{
-  rtph265pay->queue = g_array_new (FALSE, FALSE, sizeof (guint));
-  rtph265pay->profile = 0;
-  rtph265pay->sps = g_ptr_array_new_with_free_func (
-      (GDestroyNotify) gst_buffer_unref);
-  rtph265pay->pps = g_ptr_array_new_with_free_func (
-      (GDestroyNotify) gst_buffer_unref);
-  rtph265pay->vps = g_ptr_array_new_with_free_func (
-      (GDestroyNotify) gst_buffer_unref);
-  rtph265pay->last_vps_sps_pps = -1;
-  rtph265pay->vps_sps_pps_interval = DEFAULT_CONFIG_INTERVAL;
-
-  rtph265pay->adapter = gst_adapter_new ();
-}
-
-static void
-gst_rtp_h265_pay_clear_vps_sps_pps (GstRtpH265Pay * rtph265pay)
-{
-  g_ptr_array_set_size (rtph265pay->vps, 0);
-  g_ptr_array_set_size (rtph265pay->sps, 0);
-  g_ptr_array_set_size (rtph265pay->pps, 0);
-}
-
-static void
-gst_rtp_h265_pay_finalize (GObject * object)
-{
-  GstRtpH265Pay *rtph265pay;
-
-  rtph265pay = GST_RTP_H265_PAY (object);
-
-  g_array_free (rtph265pay->queue, TRUE);
-
-  g_ptr_array_free (rtph265pay->sps, TRUE);
-  g_ptr_array_free (rtph265pay->pps, TRUE);
-  g_ptr_array_free (rtph265pay->vps, TRUE);
-
-  g_free (rtph265pay->sprop_parameter_sets);
-
-  g_object_unref (rtph265pay->adapter);
-
-  G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-static const gchar all_levels[][4] = {
-  "1",
-  "2",
-  "2.1",
-  "3",
-  "3.1",
-  "4",
-  "4.1",
-  "5",
-  "5.1",
-  "5.2",
-  "6",
-  "6.1",
-  "6.2"
-};
-
-static GstCaps *
-gst_rtp_h265_pay_getcaps (GstRTPBasePayload * payload, GstPad * pad,
-    GstCaps * filter)
-{
-  GstCaps *template_caps;
-  GstCaps *allowed_caps;
-  GstCaps *caps;
-  GstCaps *icaps;
-  gboolean append_unrestricted;
-  guint i;
-
-  allowed_caps =
-      gst_pad_peer_query_caps (GST_RTP_BASE_PAYLOAD_SRCPAD (payload), NULL);
-
-  if (allowed_caps == NULL)
-    return NULL;
-
-  template_caps =
-      gst_static_pad_template_get_caps (&gst_rtp_h265_pay_sink_template);
-
-  if (gst_caps_is_any (allowed_caps)) {
-    caps = gst_caps_ref (template_caps);
-    goto done;
-  }
-
-  if (gst_caps_is_empty (allowed_caps)) {
-    caps = gst_caps_ref (allowed_caps);
-    goto done;
-  }
-
-  caps = gst_caps_new_empty ();
-
-  append_unrestricted = FALSE;
-  for (i = 0; i < gst_caps_get_size (allowed_caps); i++) {
-    GstStructure *s = gst_caps_get_structure (allowed_caps, i);
-    GstStructure *new_s = gst_structure_new_empty ("video/x-h265");
-    const gchar *profile_level_id;
-
-    profile_level_id = gst_structure_get_string (s, "profile-level-id");
-
-    if (profile_level_id && strlen (profile_level_id) == 6) {   /* Code taken from gstrtph264pay.c, needs to be revised for H.265 */
-      const gchar *profile;
-      const gchar *level;
-      long int spsint;
-      guint8 sps[3];
-
-      spsint = strtol (profile_level_id, NULL, 16);
-      sps[0] = spsint >> 16;
-      sps[1] = spsint >> 8;
-      sps[2] = spsint;
-
-      profile = gst_codec_utils_h265_get_profile (sps, 3);
-      level = gst_codec_utils_h265_get_level (sps, 3);
-
-      if (profile && level) {
-        GST_LOG_OBJECT (payload, "In caps, have profile %s and level %s",
-            profile, level);
-
-        if (!strcmp (profile, "main"))
-          gst_structure_set (new_s, "profile", G_TYPE_STRING, profile, NULL);
-        else {
-          GValue val = { 0, };
-          GValue profiles = { 0, };
-
-          g_value_init (&profiles, GST_TYPE_LIST);
-          g_value_init (&val, G_TYPE_STRING);
-
-          g_value_set_static_string (&val, profile);
-          gst_value_list_append_value (&profiles, &val);
-
-          g_value_set_static_string (&val, "main");
-          gst_value_list_append_value (&profiles, &val);
-
-          gst_structure_take_value (new_s, "profile", &profiles);
-        }
-
-        if (!strcmp (level, "1"))
-          gst_structure_set (new_s, "level", G_TYPE_STRING, level, NULL);
-        else {
-          GValue levels = { 0, };
-          GValue val = { 0, };
-          int j;
-
-          g_value_init (&levels, GST_TYPE_LIST);
-          g_value_init (&val, G_TYPE_STRING);
-
-          for (j = 0; j < G_N_ELEMENTS (all_levels); j++) {
-            g_value_set_static_string (&val, all_levels[j]);
-            gst_value_list_prepend_value (&levels, &val);
-            if (!strcmp (level, all_levels[j]))
-              break;
-          }
-          gst_structure_take_value (new_s, "level", &levels);
-        }
-      } else {
-        /* Invalid profile-level-id means main */
-
-        gst_structure_set (new_s, "profile", G_TYPE_STRING, "main", NULL);
-      }
-    } else {
-      /* No profile-level-id means main or unrestricted */
-
-      gst_structure_set (new_s, "profile", G_TYPE_STRING, "main", NULL);
-      append_unrestricted = TRUE;
-    }
-
-    caps = gst_caps_merge_structure (caps, new_s);
-  }
-
-  if (append_unrestricted) {
-    caps =
-        gst_caps_merge_structure (caps, gst_structure_new ("video/x-h265", NULL,
-            NULL));
-  }
-
-  icaps = gst_caps_intersect (caps, template_caps);
-  gst_caps_unref (caps);
-  caps = icaps;
-
-done:
-
-  gst_caps_unref (template_caps);
-  gst_caps_unref (allowed_caps);
-
-  GST_LOG_OBJECT (payload, "returning caps %" GST_PTR_FORMAT, caps);
-  return caps;
-}
-
-/* take the currently configured VPS, SPS and PPS lists and set them on the caps as
- * sprop-parameter-sets */
-static gboolean
-gst_rtp_h265_pay_set_vps_sps_pps (GstRTPBasePayload * basepayload)
-{
-  GstRtpH265Pay *payloader = GST_RTP_H265_PAY (basepayload);
-  gchar *profile;
-  gchar *set;
-  GString *sprops;
-  guint count;
-  gboolean res;
-  GstMapInfo map;
-  guint i;
-
-  sprops = g_string_new ("");
-  count = 0;
-
-  GST_DEBUG_OBJECT (payloader,
-      "Entering function gst_rtp_h265_pay_set_vps_sps_pps");
-
-  /* build the sprop-parameter-sets */
-  for (i = 0; i < payloader->vps->len; i++) {
-    GstBuffer *vps_buf =
-        GST_BUFFER_CAST (g_ptr_array_index (payloader->vps, i));
-
-    gst_buffer_map (vps_buf, &map, GST_MAP_READ);
-    set = g_base64_encode (map.data, map.size);
-    gst_buffer_unmap (vps_buf, &map);
-
-    g_string_append_printf (sprops, "%s%s", count ? "," : "", set);
-    g_free (set);
-    count++;
-  }
-  for (i = 0; i < payloader->sps->len; i++) {
-    GstBuffer *sps_buf =
-        GST_BUFFER_CAST (g_ptr_array_index (payloader->sps, i));
-
-    gst_buffer_map (sps_buf, &map, GST_MAP_READ);
-    set = g_base64_encode (map.data, map.size);
-    gst_buffer_unmap (sps_buf, &map);
-
-    g_string_append_printf (sprops, "%s%s", count ? "," : "", set);
-    g_free (set);
-    count++;
-  }
-  for (i = 0; i < payloader->pps->len; i++) {
-    GstBuffer *pps_buf =
-        GST_BUFFER_CAST (g_ptr_array_index (payloader->pps, i));
-
-    gst_buffer_map (pps_buf, &map, GST_MAP_READ);
-    set = g_base64_encode (map.data, map.size);
-    gst_buffer_unmap (pps_buf, &map);
-
-    g_string_append_printf (sprops, "%s%s", count ? "," : "", set);
-    g_free (set);
-    count++;
-  }
-
-  if (G_LIKELY (count)) {
-    /* profile is 24 bit. Force it to respect the limit */
-    profile = g_strdup_printf ("%06x", payloader->profile & 0xffffff);
-    /* combine into output caps */
-    res = gst_rtp_base_payload_set_outcaps (basepayload,
-        "sprop-parameter-sets", G_TYPE_STRING, sprops->str, NULL);
-    g_free (profile);
-  } else {
-    res = gst_rtp_base_payload_set_outcaps (basepayload, NULL);
-  }
-  g_string_free (sprops, TRUE);
-
-  return res;
-}
-
-
-static gboolean
-gst_rtp_h265_pay_setcaps (GstRTPBasePayload * basepayload, GstCaps * caps)
-{
-  GstRtpH265Pay *rtph265pay;
-  GstStructure *str;
-  const GValue *value;
-  GstMapInfo map;
-  guint8 *data;
-  gsize size;
-  GstBuffer *buffer;
-  const gchar *alignment, *stream_format;
-  guint8 num_arrays;
-
-  rtph265pay = GST_RTP_H265_PAY (basepayload);
-
-  str = gst_caps_get_structure (caps, 0);
-
-  /* we can only set the output caps when we found the sprops and profile
-   * NALs */
-  gst_rtp_base_payload_set_options (basepayload, "video", TRUE, "H265", 90000);
-
-  rtph265pay->alignment = GST_H265_ALIGNMENT_UNKNOWN;
-  alignment = gst_structure_get_string (str, "alignment");
-  if (alignment) {
-    if (g_str_equal (alignment, "au"))
-      rtph265pay->alignment = GST_H265_ALIGNMENT_AU;
-    if (g_str_equal (alignment, "nal"))
-      rtph265pay->alignment = GST_H265_ALIGNMENT_NAL;
-  }
-
-  rtph265pay->stream_format = GST_H265_STREAM_FORMAT_UNKNOWN;
-  stream_format = gst_structure_get_string (str, "stream-format");
-  if (stream_format) {
-    if (g_str_equal (stream_format, "hvc1"))
-      rtph265pay->stream_format = GST_H265_STREAM_FORMAT_HVC1;
-    if (g_str_equal (stream_format, "hev1"))
-      rtph265pay->stream_format = GST_H265_STREAM_FORMAT_HEV1;
-    if (g_str_equal (stream_format, "byte-stream"))
-      rtph265pay->stream_format = GST_H265_STREAM_FORMAT_BYTESTREAM;
-  }
-
-  /* packetized HEVC video has a codec_data */
-  if ((value = gst_structure_get_value (str, "codec_data"))) {
-    guint num_vps, num_sps, num_pps;
-    gint i, j, nal_size;
-
-    GST_DEBUG_OBJECT (rtph265pay, "have packetized h265");
-
-    buffer = gst_value_get_buffer (value);
-
-    gst_buffer_map (buffer, &map, GST_MAP_READ);
-    data = map.data;
-    size = map.size;
-
-    /* parse the hevcC data */
-    if (size < 23)
-      goto hevcc_too_small;
-    /* HEVCDecoderConfigurationVersion (must be 1) */
-    if (data[0] != 1)
-      goto wrong_version;
-
-    /* profile_space | tier_flag | profile_idc */
-    rtph265pay->profile = data[1];
-    GST_DEBUG_OBJECT (rtph265pay, "profile %06x", rtph265pay->profile);
-
-    /* profile_compatibility_flags */
-    for (i = 2; i < 6; i++) {
-      for (j = 7; j >= 0; j--) {
-        GST_DEBUG_OBJECT (rtph265pay, "profile_compatibility_flag %06x",
-            (data[i] >> j) & 1);
-      }
-    }
-
-    GST_DEBUG_OBJECT (rtph265pay, "progressive_source_flag %06x",
-        (data[6] >> 7) & 1);
-    GST_DEBUG_OBJECT (rtph265pay, "interlaced_source_flag %06x",
-        (data[6] >> 6) & 1);
-    GST_DEBUG_OBJECT (rtph265pay, "non_packed_constraint_flag %06x",
-        (data[6] >> 5) & 1);
-    GST_DEBUG_OBJECT (rtph265pay, "frame_only_constraint_flag %06x",
-        (data[6] >> 4) & 1);
-
-    GST_DEBUG_OBJECT (rtph265pay, "level_idc %06x", data[12]);
-
-    GST_DEBUG_OBJECT (rtph265pay, "min_spatial_segmentation_idc %06x",
-        ((data[13] ^ 0xf0) << 8) + data[14]);
-    GST_DEBUG_OBJECT (rtph265pay, "parrallelismType %06x (ignored by paloader)",
-        data[15]);
-
-    GST_DEBUG_OBJECT (rtph265pay, "sps_chroma_format_idc %06x",
-        data[16] ^ 0xfc);
-    GST_DEBUG_OBJECT (rtph265pay, "bit_depth_luma_minus8 %06x",
-        data[17] ^ 0xf8);
-    GST_DEBUG_OBJECT (rtph265pay, "bit_depth_chroma_minus8 %06x",
-        data[18] ^ 0xf8);
-    GST_DEBUG_OBJECT (rtph265pay, "avgFrameRate %06x", data[19]);
-    GST_DEBUG_OBJECT (rtph265pay, "avgFrameRate %06x", data[20]);
-
-    /* constFrameRate(2 bits): 0, stream may or may not be of constant framerate
-     * numTemporalLayers (3 bits): number of temporal layers, value from SPS
-     * TemporalIdNested (1 bit): sps_temporal_id_nesting_flag from SPS
-     * lengthSizeMinusOne (2 bits): plus 1 indicates the length of the NALUnitLength */
-    GST_DEBUG_OBJECT (rtph265pay, "constFrameRate %06x",
-        (data[21] >> 6) & 0x03);
-    GST_DEBUG_OBJECT (rtph265pay, "numTemporalLayers %06x",
-        (data[21] >> 3) & 0x07);
-    GST_DEBUG_OBJECT (rtph265pay, "temporal_id_nesting_flag %06x",
-        (data[21] >> 2) & 0x01);
-
-    rtph265pay->nal_length_size = (data[21] & 0x3) + 1;
-    GST_DEBUG_OBJECT (rtph265pay, "nal length %u", rtph265pay->nal_length_size);
-
-    num_arrays = GST_READ_UINT8 (data + 22);
-
-    data += 23;
-    size -= 23;
-
-    if (num_arrays > 0) {
-      if (data[0] == (0x00 | 0x20)) {   /* VPS */
-
-        data++;
-        num_vps = data[0] << 8 | data[1];
-        data += 2;
-        size -= 2;
-
-        for (i = 0; i < num_vps; i++) {
-
-          GstBuffer *vps_buf;
-
-          if (size < 2)
-            goto hevcc_error;
-
-          nal_size = (data[0] << 8) | data[1];
-          data += 2;
-          size -= 2;
-
-          GST_LOG_OBJECT (rtph265pay, "VPS %d size %d", i, nal_size);
-
-          if (size < nal_size)
-            goto hevcc_error;
-
-          /* make a buffer out of it and add to VPS list */
-          vps_buf = gst_buffer_new_and_alloc (nal_size);
-          gst_buffer_fill (vps_buf, 0, data, nal_size);
-          gst_rtp_h265_add_vps_sps_pps (GST_ELEMENT (rtph265pay),
-              rtph265pay->vps, rtph265pay->sps, rtph265pay->pps, vps_buf);
-          data += nal_size;
-          size -= nal_size;
-        }
-      }
-
-      --num_arrays;
-    }
-
-    if (num_arrays > 0) {
-      if (data[0] == (0x00 | 0x21)) {   /* SPS */
-
-        data++;
-        num_sps = data[0] << 8 | data[1];
-        data += 2;
-        size -= 2;
-
-        for (i = 0; i < num_sps; i++) {
-
-          GstBuffer *sps_buf;
-
-          if (size < 2)
-            goto hevcc_error;
-
-          nal_size = (data[0] << 8) | data[1];
-          data += 2;
-          size -= 2;
-
-          GST_LOG_OBJECT (rtph265pay, "SPS %d size %d", i, nal_size);
-
-          if (size < nal_size)
-            goto hevcc_error;
-
-          /* make a buffer out of it and add to SPS list */
-          sps_buf = gst_buffer_new_and_alloc (nal_size);
-          gst_buffer_fill (sps_buf, 0, data, nal_size);
-          gst_rtp_h265_add_vps_sps_pps (GST_ELEMENT (rtph265pay),
-              rtph265pay->vps, rtph265pay->sps, rtph265pay->pps, sps_buf);
-          data += nal_size;
-          size -= nal_size;
-        }
-      }
-
-      --num_arrays;
-    }
-
-    if (num_arrays > 0) {
-      if (data[0] == (0x00 | 0x22)) {   /* PPS */
-
-        data++;
-        num_pps = data[0] << 8 | data[1];
-        data += 2;
-        size -= 2;
-
-        for (i = 0; i < num_pps; i++) {
-
-          GstBuffer *pps_buf;
-
-          if (size < 2)
-            goto hevcc_error;
-
-          nal_size = (data[0] << 8) | data[1];
-          data += 2;
-          size -= 2;
-
-          GST_LOG_OBJECT (rtph265pay, "PPS %d size %d", i, nal_size);
-
-          if (size < nal_size)
-            goto hevcc_error;
-
-          /* make a buffer out of it and add to PPS list */
-          pps_buf = gst_buffer_new_and_alloc (nal_size);
-          gst_buffer_fill (pps_buf, 0, data, nal_size);
-          gst_rtp_h265_add_vps_sps_pps (GST_ELEMENT (rtph265pay),
-              rtph265pay->vps, rtph265pay->sps, rtph265pay->pps, pps_buf);
-          data += nal_size;
-          size -= nal_size;
-        }
-      }
-
-      --num_arrays;
-    }
-
-    /* and update the caps with the collected data */
-    if (!gst_rtp_h265_pay_set_vps_sps_pps (basepayload))
-      goto set_vps_sps_pps_failed;
-
-    GST_DEBUG_OBJECT (rtph265pay, "Caps have been set");
-
-    gst_buffer_unmap (buffer, &map);
-  } else {
-    GST_DEBUG_OBJECT (rtph265pay, "have bytestream h265");
-  }
-
-  return TRUE;
-
-hevcc_too_small:
-  {
-    GST_ERROR_OBJECT (rtph265pay, "hevcC size %" G_GSIZE_FORMAT " < 7", size);
-    goto error;
-  }
-wrong_version:
-  {
-    GST_ERROR_OBJECT (rtph265pay, "wrong hevcC version");
-    goto error;
-  }
-hevcc_error:
-  {
-    GST_ERROR_OBJECT (rtph265pay, "hevcC too small ");
-    goto error;
-  }
-set_vps_sps_pps_failed:
-  {
-    GST_ERROR_OBJECT (rtph265pay, "failed to set vps/sps/pps");
-    goto error;
-  }
-error:
-  {
-    gst_buffer_unmap (buffer, &map);
-    return FALSE;
-  }
-}
-
-static void
-gst_rtp_h265_pay_parse_sprop_parameter_sets (GstRtpH265Pay * rtph265pay)
-{
-  const gchar *ps;
-  gchar **params;
-  guint len;
-  gint i;
-  GstBuffer *buf;
-
-  ps = rtph265pay->sprop_parameter_sets;
-  if (ps == NULL)
-    return;
-
-  gst_rtp_h265_pay_clear_vps_sps_pps (rtph265pay);
-
-  params = g_strsplit (ps, ",", 0);
-  len = g_strv_length (params);
-
-  GST_DEBUG_OBJECT (rtph265pay, "we have %d params", len);
-
-  for (i = 0; params[i]; i++) {
-    gsize nal_len;
-    GstMapInfo map;
-    guint8 *nalp;
-    guint save = 0;
-    gint state = 0;
-
-    nal_len = strlen (params[i]);
-    buf = gst_buffer_new_and_alloc (nal_len);
-
-    gst_buffer_map (buf, &map, GST_MAP_WRITE);
-    nalp = map.data;
-    nal_len = g_base64_decode_step (params[i], nal_len, nalp, &state, &save);
-    gst_buffer_unmap (buf, &map);
-    gst_buffer_resize (buf, 0, nal_len);
-
-    if (!nal_len) {
-      gst_buffer_unref (buf);
-      continue;
-    }
-
-    gst_rtp_h265_add_vps_sps_pps (GST_ELEMENT (rtph265pay), rtph265pay->vps,
-        rtph265pay->sps, rtph265pay->pps, buf);
-  }
-  g_strfreev (params);
-}
-
-static guint
-next_start_code (const guint8 * data, guint size)
-{
-  /* Boyer-Moore string matching algorithm, in a degenerative
-   * sense because our search 'alphabet' is binary - 0 & 1 only.
-   * This allow us to simplify the general BM algorithm to a very
-   * simple form. */
-  /* assume 1 is in the 3th byte */
-  guint offset = 2;
-
-  while (offset < size) {
-    if (1 == data[offset]) {
-      unsigned int shift = offset;
-
-      if (0 == data[--shift]) {
-        if (0 == data[--shift]) {
-          return shift;
-        }
-      }
-      /* The jump is always 3 because of the 1 previously matched.
-       * All the 0's must be after this '1' matched at offset */
-      offset += 3;
-    } else if (0 == data[offset]) {
-      /* maybe next byte is 1? */
-      offset++;
-    } else {
-      /* can jump 3 bytes forward */
-      offset += 3;
-    }
-    /* at each iteration, we rescan in a backward manner until
-     * we match 0.0.1 in reverse order. Since our search string
-     * has only 2 'alpabets' (i.e. 0 & 1), we know that any
-     * mismatch will force us to shift a fixed number of steps */
-  }
-  GST_DEBUG ("Cannot find next NAL start code. returning %u", size);
-
-  return size;
-}
-
-static gboolean
-gst_rtp_h265_pay_decode_nal (GstRtpH265Pay * payloader,
-    const guint8 * data, guint size, GstClockTime dts, GstClockTime pts)
-{
-  guint8 header, type;
-  gboolean updated;
-
-  /* default is no update */
-  updated = FALSE;
-
-  GST_DEBUG ("NAL payload len=%u", size);
-
-  header = data[0];
-  type = header & 0x3f;
-
-  /* We record the timestamp of the last SPS/PPS so
-   * that we can insert them at regular intervals and when needed. */
-  if (GST_H265_NAL_VPS == type || GST_H265_NAL_SPS == type
-      || GST_H265_NAL_PPS == type) {
-    GstBuffer *nal;
-
-    /* encode the entire NAL in base64 */
-    GST_DEBUG ("Found %s %x %x %x Len=%u",
-        type == GST_H265_NAL_VPS ? "VPS" : type ==
-        GST_H265_NAL_SPS ? "SPS" : "PPS", (header >> 7), (header >> 5) & 3,
-        type, size);
-
-    nal = gst_buffer_new_allocate (NULL, size, NULL);
-    gst_buffer_fill (nal, 0, data, size);
-
-    updated = gst_rtp_h265_add_vps_sps_pps (GST_ELEMENT (payloader),
-        payloader->vps, payloader->sps, payloader->pps, nal);
-
-    /* remember when we last saw VPS */
-    if (updated && pts != -1)
-      payloader->last_vps_sps_pps = pts;
-  } else {
-    GST_DEBUG ("NAL: %x %x %x Len = %u", (header >> 7),
-        (header >> 5) & 3, type, size);
-  }
-
-  return updated;
-}
-
-static GstFlowReturn
-gst_rtp_h265_pay_payload_nal (GstRTPBasePayload * basepayload,
-    GstBuffer * paybuf, GstClockTime dts, GstClockTime pts, gboolean end_of_au);
-
-static GstFlowReturn
-gst_rtp_h265_pay_send_vps_sps_pps (GstRTPBasePayload * basepayload,
-    GstRtpH265Pay * rtph265pay, GstClockTime dts, GstClockTime pts)
-{
-  GstFlowReturn ret = GST_FLOW_OK;
-  gboolean sent_all_vps_sps_pps = TRUE;
-  guint i;
-
-  for (i = 0; i < rtph265pay->vps->len; i++) {
-    GstBuffer *vps_buf =
-        GST_BUFFER_CAST (g_ptr_array_index (rtph265pay->vps, i));
-
-    GST_DEBUG_OBJECT (rtph265pay, "inserting VPS in the stream");
-    /* resend VPS */
-    ret = gst_rtp_h265_pay_payload_nal (basepayload, gst_buffer_ref (vps_buf),
-        dts, pts, FALSE);
-    /* Not critical here; but throw a warning */
-    if (ret != GST_FLOW_OK) {
-      sent_all_vps_sps_pps = FALSE;
-      GST_WARNING_OBJECT (basepayload, "Problem pushing VPS");
-    }
-  }
-  for (i = 0; i < rtph265pay->sps->len; i++) {
-    GstBuffer *sps_buf =
-        GST_BUFFER_CAST (g_ptr_array_index (rtph265pay->sps, i));
-
-    GST_DEBUG_OBJECT (rtph265pay, "inserting SPS in the stream");
-    /* resend SPS */
-    ret = gst_rtp_h265_pay_payload_nal (basepayload, gst_buffer_ref (sps_buf),
-        dts, pts, FALSE);
-    /* Not critical here; but throw a warning */
-    if (ret != GST_FLOW_OK) {
-      sent_all_vps_sps_pps = FALSE;
-      GST_WARNING_OBJECT (basepayload, "Problem pushing SPS");
-    }
-  }
-  for (i = 0; i < rtph265pay->pps->len; i++) {
-    GstBuffer *pps_buf =
-        GST_BUFFER_CAST (g_ptr_array_index (rtph265pay->pps, i));
-
-    GST_DEBUG_OBJECT (rtph265pay, "inserting PPS in the stream");
-    /* resend PPS */
-    ret = gst_rtp_h265_pay_payload_nal (basepayload, gst_buffer_ref (pps_buf),
-        dts, pts, FALSE);
-    /* Not critical here; but throw a warning */
-    if (ret != GST_FLOW_OK) {
-      sent_all_vps_sps_pps = FALSE;
-      GST_WARNING ("Problem pushing PPS");
-    }
-  }
-
-  if (pts != -1 && sent_all_vps_sps_pps)
-    rtph265pay->last_vps_sps_pps = pts;
-
-  return ret;
-}
-
-static GstFlowReturn
-gst_rtp_h265_pay_payload_nal (GstRTPBasePayload * basepayload,
-    GstBuffer * paybuf, GstClockTime dts, GstClockTime pts, gboolean end_of_au)
-{
-  GstRtpH265Pay *rtph265pay;
-  GstFlowReturn ret;
-  guint8 nalHeader[2];
-  guint8 nalType;
-  guint packet_len, payload_len, mtu;
-  GstBuffer *outbuf;
-  guint8 *payload;
-  GstBufferList *list = NULL;
-  gboolean send_vps_sps_pps;
-  GstRTPBuffer rtp = { NULL };
-  guint size = gst_buffer_get_size (paybuf);
-
-  rtph265pay = GST_RTP_H265_PAY (basepayload);
-  mtu = GST_RTP_BASE_PAYLOAD_MTU (rtph265pay);
-
-  gst_buffer_extract (paybuf, 0, nalHeader, 2);
-  nalType = (nalHeader[0] >> 1) & 0x3f;
-
-  GST_DEBUG_OBJECT (rtph265pay, "Processing Buffer with NAL TYPE=%d", nalType);
-
-  /* should set src caps before pushing stuff,
-   * and if we did not see enough VPS/SPS/PPS, that may not be the case */
-  if (G_UNLIKELY (!gst_pad_has_current_caps (GST_RTP_BASE_PAYLOAD_SRCPAD
-              (basepayload))))
-    gst_rtp_h265_pay_set_vps_sps_pps (basepayload);
-
-  send_vps_sps_pps = FALSE;
-
-  /* check if we need to emit an VPS/SPS/PPS now */
-  if (((nalType == GST_H265_NAL_SLICE_TRAIL_N)
-          || (nalType == GST_H265_NAL_SLICE_TRAIL_R)
-          || (nalType == GST_H265_NAL_SLICE_TSA_N)
-          || (nalType == GST_H265_NAL_SLICE_TSA_R)
-          || (nalType == GST_H265_NAL_SLICE_STSA_N)
-          || (nalType == GST_H265_NAL_SLICE_STSA_R)
-          || (nalType == GST_H265_NAL_SLICE_RASL_N)
-          || (nalType == GST_H265_NAL_SLICE_RASL_R)
-          || (nalType == GST_H265_NAL_SLICE_BLA_W_LP)
-          || (nalType == GST_H265_NAL_SLICE_BLA_W_RADL)
-          || (nalType == GST_H265_NAL_SLICE_BLA_N_LP)
-          || (nalType == GST_H265_NAL_SLICE_IDR_W_RADL)
-          || (nalType == GST_H265_NAL_SLICE_IDR_N_LP)
-          || (nalType == GST_H265_NAL_SLICE_CRA_NUT))
-      && rtph265pay->vps_sps_pps_interval > 0) {
-
-    if (rtph265pay->last_vps_sps_pps != -1) {
-      guint64 diff;
-
-      GST_LOG_OBJECT (rtph265pay,
-          "now %" GST_TIME_FORMAT ", last VPS/SPS/PPS %" GST_TIME_FORMAT,
-          GST_TIME_ARGS (pts), GST_TIME_ARGS (rtph265pay->last_vps_sps_pps));
-
-      /* calculate diff between last SPS/PPS in milliseconds */
-      if (pts > rtph265pay->last_vps_sps_pps)
-        diff = pts - rtph265pay->last_vps_sps_pps;
-      else
-        diff = 0;
-
-      GST_DEBUG_OBJECT (rtph265pay,
-          "interval since last VPS/SPS/PPS %" GST_TIME_FORMAT,
-          GST_TIME_ARGS (diff));
-
-      /* bigger than interval, queue SPS/PPS */
-      if (GST_TIME_AS_SECONDS (diff) >= rtph265pay->vps_sps_pps_interval) {
-        GST_DEBUG_OBJECT (rtph265pay, "time to send VPS/SPS/PPS");
-        send_vps_sps_pps = TRUE;
-      }
-    } else {
-      /* no known previous SPS/PPS time, send now */
-      GST_DEBUG_OBJECT (rtph265pay, "no previous VPS/SPS/PPS time, send now");
-      send_vps_sps_pps = TRUE;
-    }
-  }
-
-  if (send_vps_sps_pps || rtph265pay->send_vps_sps_pps) {
-    /* we need to send SPS/PPS now first. FIXME, don't use the pts for
-     * checking when we need to send SPS/PPS but convert to running_time first. */
-    rtph265pay->send_vps_sps_pps = FALSE;
-    ret = gst_rtp_h265_pay_send_vps_sps_pps (basepayload, rtph265pay, dts, pts);
-    if (ret != GST_FLOW_OK) {
-      gst_buffer_unref (paybuf);
-      return ret;
-    }
-  }
-
-  packet_len = gst_rtp_buffer_calc_packet_len (size, 0, 0);
-
-  GST_FIXME_OBJECT (rtph265pay, "Set RTP marker bit appropriately");
-
-  if (packet_len < mtu) {
-    GST_DEBUG_OBJECT (rtph265pay,
-        "NAL Unit fit in one packet datasize=%d mtu=%d", size, mtu);
-    /* will fit in one packet */
-
-    /* use buffer lists
-     * create buffer without payload containing only the RTP header
-     * (memory block at index 0) */
-    outbuf = gst_rtp_buffer_new_allocate (0, 0, 0);
-
-    gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp);
-
-    /* FIXME : only set the marker bit on packets containing access units */
-    /* if (IS_ACCESS_UNIT (nalType) && end_of_au) {
-       gst_rtp_buffer_set_marker (&rtp, 1);
-       } */
-
-    /* timestamp the outbuffer */
-    GST_BUFFER_PTS (outbuf) = pts;
-    GST_BUFFER_DTS (outbuf) = dts;
-
-    /* insert payload memory block */
-    gst_rtp_copy_meta (GST_ELEMENT_CAST (rtph265pay), outbuf, paybuf,
-        g_quark_from_static_string (GST_META_TAG_VIDEO_STR));
-    outbuf = gst_buffer_append (outbuf, paybuf);
-
-    list = gst_buffer_list_new ();
-
-    /* add the buffer to the buffer list */
-    gst_buffer_list_add (list, outbuf);
-
-    gst_rtp_buffer_unmap (&rtp);
-
-    /* push the list to the next element in the pipe */
-    ret = gst_rtp_base_payload_push_list (basepayload, list);
-  } else {
-    /* fragmentation Units */
-    guint limitedSize;
-    int ii = 0, start = 1, end = 0, pos = 0;
-
-    GST_DEBUG_OBJECT (basepayload,
-        "NAL Unit DOES NOT fit in one packet datasize=%d mtu=%d", size, mtu);
-
-    pos += 2;
-    size -= 2;
-
-    GST_DEBUG_OBJECT (basepayload, "Using FU fragmentation for data size=%d",
-        size);
-
-    /* We keep 3 bytes for PayloadHdr and FU Header */
-    payload_len = gst_rtp_buffer_calc_payload_len (mtu - 3, 0, 0);
-
-    list = gst_buffer_list_new ();
-
-    while (end == 0) {
-      limitedSize = size < payload_len ? size : payload_len;
-      GST_DEBUG_OBJECT (basepayload,
-          "Inside  FU fragmentation limitedSize=%d iteration=%d", limitedSize,
-          ii);
-
-      /* use buffer lists
-       * create buffer without payload containing only the RTP header
-       * (memory block at index 0), and with space for PayloadHdr and FU header */
-      outbuf = gst_rtp_buffer_new_allocate (3, 0, 0);
-
-      gst_rtp_buffer_map (outbuf, GST_MAP_WRITE, &rtp);
-
-      GST_BUFFER_DTS (outbuf) = dts;
-      GST_BUFFER_PTS (outbuf) = pts;
-      payload = gst_rtp_buffer_get_payload (&rtp);
-
-      if (limitedSize == size) {
-        GST_DEBUG_OBJECT (basepayload, "end size=%d iteration=%d", size, ii);
-        end = 1;
-      }
-
-      /* PayloadHdr (type = 49) */
-      payload[0] = (nalHeader[0] & 0x81) | (49 << 1);
-      payload[1] = nalHeader[1];
-
-      /* FIXME - set RTP marker bit appropriately */
-      /* if (IS_ACCESS_UNIT (nalType)) {
-         gst_rtp_buffer_set_marker (&rtp, end && end_of_au);
-         } */
-
-      /* FU Header */
-      payload[2] = (start << 7) | (end << 6) | (nalType & 0x3f);
-
-      gst_rtp_buffer_unmap (&rtp);
-
-      /* insert payload memory block */
-      gst_rtp_copy_meta (GST_ELEMENT_CAST (rtph265pay), outbuf, paybuf,
-          g_quark_from_static_string (GST_META_TAG_VIDEO_STR));
-      gst_buffer_copy_into (outbuf, paybuf, GST_BUFFER_COPY_MEMORY, pos,
-          limitedSize);
-      /* add the buffer to the buffer list */
-      gst_buffer_list_add (list, outbuf);
-
-      size -= limitedSize;
-      pos += limitedSize;
-      ii++;
-      start = 0;
-    }
-
-    ret = gst_rtp_base_payload_push_list (basepayload, list);
-    gst_buffer_unref (paybuf);
-  }
-  return ret;
-}
-
-static GstFlowReturn
-gst_rtp_h265_pay_handle_buffer (GstRTPBasePayload * basepayload,
-    GstBuffer * buffer)
-{
-  GstRtpH265Pay *rtph265pay;
-  GstFlowReturn ret;
-  gsize size;
-  guint nal_len, i;
-  GstMapInfo map;
-  const guint8 *data;
-  GstClockTime dts, pts;
-  GArray *nal_queue;
-  gboolean hevc;
-  GstBuffer *paybuf = NULL;
-  gsize skip;
-
-  rtph265pay = GST_RTP_H265_PAY (basepayload);
-
-  /* the input buffer contains one or more NAL units */
-
-  hevc = (rtph265pay->stream_format == GST_H265_STREAM_FORMAT_HEV1)
-      || (rtph265pay->stream_format == GST_H265_STREAM_FORMAT_HVC1);
-
-  if (hevc) {
-    /* In hevc mode, there is no adapter, so nothing to flush */
-    if (buffer == NULL)
-      return GST_FLOW_OK;
-    gst_buffer_map (buffer, &map, GST_MAP_READ);
-    data = map.data;
-    size = map.size;
-    pts = GST_BUFFER_PTS (buffer);
-    dts = GST_BUFFER_DTS (buffer);
-    GST_DEBUG_OBJECT (basepayload, "got %" G_GSIZE_FORMAT " bytes", size);
-  } else {
-    dts = gst_adapter_prev_dts (rtph265pay->adapter, NULL);
-    pts = gst_adapter_prev_pts (rtph265pay->adapter, NULL);
-    if (buffer) {
-      if (!GST_CLOCK_TIME_IS_VALID (dts))
-        dts = GST_BUFFER_DTS (buffer);
-      if (!GST_CLOCK_TIME_IS_VALID (pts))
-        pts = GST_BUFFER_PTS (buffer);
-
-      gst_adapter_push (rtph265pay->adapter, buffer);
-    }
-    size = gst_adapter_available (rtph265pay->adapter);
-    /* Nothing to do here if the adapter is empty, e.g. on EOS */
-    if (size == 0)
-      return GST_FLOW_OK;
-    data = gst_adapter_map (rtph265pay->adapter, size);
-    GST_DEBUG_OBJECT (basepayload,
-        "got %" G_GSIZE_FORMAT " bytes (%" G_GSIZE_FORMAT ")", size,
-        buffer ? gst_buffer_get_size (buffer) : 0);
-  }
-
-  ret = GST_FLOW_OK;
-
-  /* now loop over all NAL units and put them in a packet
-   * FIXME, we should really try to pack multiple NAL units into one RTP packet
-   * if we can, especially for the config packets that wont't cause decoder
-   * latency. */
-  if (hevc) {
-    guint nal_length_size;
-    gsize offset = 0;
-
-    nal_length_size = rtph265pay->nal_length_size;
-
-    while (size > nal_length_size) {
-      gint i;
-      gboolean end_of_au = FALSE;
-
-      nal_len = 0;
-      for (i = 0; i < nal_length_size; i++) {
-        nal_len = ((nal_len << 8) + data[i]);
-      }
-
-      /* skip the length bytes, make sure we don't run past the buffer size */
-      data += nal_length_size;
-      offset += nal_length_size;
-      size -= nal_length_size;
-
-      if (size >= nal_len) {
-        GST_DEBUG_OBJECT (basepayload, "got NAL of size %u", nal_len);
-      } else {
-        nal_len = size;
-        GST_DEBUG_OBJECT (basepayload, "got incomplete NAL of size %u",
-            nal_len);
-      }
-
-      /* If we're at the end of the buffer, then we're at the end of the
-       * access unit
-       */
-      if (rtph265pay->alignment == GST_H265_ALIGNMENT_AU
-          && size - nal_len <= nal_length_size) {
-        end_of_au = TRUE;
-      }
-
-      paybuf = gst_buffer_copy_region (buffer, GST_BUFFER_COPY_ALL, offset,
-          nal_len);
-
-      ret =
-          gst_rtp_h265_pay_payload_nal (basepayload, paybuf, dts, pts,
-          end_of_au);
-      if (ret != GST_FLOW_OK)
-        break;
-
-      data += nal_len;
-      offset += nal_len;
-      size -= nal_len;
-    }
-  } else {
-    guint next;
-    gboolean update = FALSE;
-
-    /* get offset of first start code */
-    next = next_start_code (data, size);
-
-    /* skip to start code, if no start code is found, next will be size and we
-     * will not collect data. */
-    data += next;
-    size -= next;
-    nal_queue = rtph265pay->queue;
-    skip = next;
-
-    /* array must be empty when we get here */
-    g_assert (nal_queue->len == 0);
-
-    GST_DEBUG_OBJECT (basepayload,
-        "found first start at %u, bytes left %" G_GSIZE_FORMAT, next, size);
-
-    /* first pass to locate NALs and parse SPS/PPS */
-    while (size > 4) {
-      /* skip start code */
-      data += 3;
-      size -= 3;
-
-      /* use next_start_code() to scan buffer.
-       * next_start_code() returns the offset in data,
-       * starting from zero to the first byte of 0.0.0.1
-       * If no start code is found, it returns the value of the
-       * 'size' parameter.
-       * data is unchanged by the call to next_start_code()
-       */
-      next = next_start_code (data, size);
-
-      if (next == size && buffer != NULL) {
-        /* Didn't find the start of next NAL and it's not EOS,
-         * handle it next time */
-        break;
-      }
-
-      /* nal length is distance to next start code */
-      nal_len = next;
-
-      GST_DEBUG_OBJECT (basepayload, "found next start at %u of size %u", next,
-          nal_len);
-
-      if (rtph265pay->sprop_parameter_sets != NULL) {
-        /* explicitly set profile and sprop, use those */
-        if (rtph265pay->update_caps) {
-          if (!gst_rtp_base_payload_set_outcaps (basepayload,
-                  "sprop-parameter-sets", G_TYPE_STRING,
-                  rtph265pay->sprop_parameter_sets, NULL))
-            goto caps_rejected;
-
-          /* parse SPS and PPS from provided parameter set (for insertion) */
-          gst_rtp_h265_pay_parse_sprop_parameter_sets (rtph265pay);
-
-          rtph265pay->update_caps = FALSE;
-
-          GST_DEBUG ("outcaps update: sprop-parameter-sets=%s",
-              rtph265pay->sprop_parameter_sets);
-        }
-      } else {
-        /* We know our stream is a valid H265 NAL packet,
-         * go parse it for SPS/PPS to enrich the caps */
-        /* order: make sure to check nal */
-        update =
-            gst_rtp_h265_pay_decode_nal (rtph265pay, data, nal_len, dts, pts)
-            || update;
-      }
-      /* move to next NAL packet */
-      data += nal_len;
-      size -= nal_len;
-
-      g_array_append_val (nal_queue, nal_len);
-    }
-
-    /* if has new VPS, SPS & PPS, update the output caps */
-    if (G_UNLIKELY (update))
-      if (!gst_rtp_h265_pay_set_vps_sps_pps (basepayload))
-        goto caps_rejected;
-
-    /* second pass to payload and push */
-
-    if (nal_queue->len != 0)
-      gst_adapter_flush (rtph265pay->adapter, skip);
-
-    for (i = 0; i < nal_queue->len; i++) {
-      guint size;
-      gboolean end_of_au = FALSE;
-
-      nal_len = g_array_index (nal_queue, guint, i);
-      /* skip start code */
-      gst_adapter_flush (rtph265pay->adapter, 3);
-
-      /* Trim the end unless we're the last NAL in the stream.
-       * In case we're not at the end of the buffer we know the next block
-       * starts with 0x000001 so all the 0x00 bytes at the end of this one are
-       * trailing 0x0 that can be discarded */
-      size = nal_len;
-      data = gst_adapter_map (rtph265pay->adapter, size);
-      if (i + 1 != nal_queue->len || buffer != NULL)
-        for (; size > 1 && data[size - 1] == 0x0; size--)
-          /* skip */ ;
-
-
-      /* If it's the last nal unit we have in non-bytestream mode, we can
-       * assume it's the end of an access-unit
-       *
-       * FIXME: We need to wait until the next packet or EOS to
-       * actually payload the NAL so we can know if the current NAL is
-       * the last one of an access unit or not if we are in bytestream mode
-       */
-      if ((rtph265pay->alignment == GST_H265_ALIGNMENT_AU || buffer == NULL) &&
-          i == nal_queue->len - 1)
-        end_of_au = TRUE;
-      paybuf = gst_adapter_take_buffer (rtph265pay->adapter, size);
-      g_assert (paybuf);
-
-      /* put the data in one or more RTP packets */
-      ret =
-          gst_rtp_h265_pay_payload_nal (basepayload, paybuf, dts, pts,
-          end_of_au);
-      if (ret != GST_FLOW_OK) {
-        break;
-      }
-
-      /* move to next NAL packet */
-      /* Skips the trailing zeros */
-      gst_adapter_flush (rtph265pay->adapter, nal_len - size);
-    }
-    g_array_set_size (nal_queue, 0);
-  }
-
-done:
-  if (hevc) {
-    gst_buffer_unmap (buffer, &map);
-    gst_buffer_unref (buffer);
-  } else {
-    gst_adapter_unmap (rtph265pay->adapter);
-  }
-
-  return ret;
-
-caps_rejected:
-  {
-    GST_WARNING_OBJECT (basepayload, "Could not set outcaps");
-    g_array_set_size (nal_queue, 0);
-    ret = GST_FLOW_NOT_NEGOTIATED;
-    goto done;
-  }
-}
-
-static gboolean
-gst_rtp_h265_pay_sink_event (GstRTPBasePayload * payload, GstEvent * event)
-{
-  gboolean res;
-  const GstStructure *s;
-  GstRtpH265Pay *rtph265pay = GST_RTP_H265_PAY (payload);
-
-  switch (GST_EVENT_TYPE (event)) {
-    case GST_EVENT_FLUSH_STOP:
-      gst_adapter_clear (rtph265pay->adapter);
-      break;
-    case GST_EVENT_CUSTOM_DOWNSTREAM:
-      s = gst_event_get_structure (event);
-      if (gst_structure_has_name (s, "GstForceKeyUnit")) {
-        gboolean resend_codec_data;
-
-        if (gst_structure_get_boolean (s, "all-headers",
-                &resend_codec_data) && resend_codec_data)
-          rtph265pay->send_vps_sps_pps = TRUE;
-      }
-      break;
-    case GST_EVENT_EOS:
-    {
-      /* call handle_buffer with NULL to flush last NAL from adapter
-       * in byte-stream mode
-       */
-      gst_rtp_h265_pay_handle_buffer (payload, NULL);
-      break;
-    }
-    case GST_EVENT_STREAM_START:
-      GST_DEBUG_OBJECT (rtph265pay,
-          "New stream detected => Clear VPS, SPS and PPS");
-      gst_rtp_h265_pay_clear_vps_sps_pps (rtph265pay);
-      break;
-    default:
-      break;
-  }
-
-  res = GST_RTP_BASE_PAYLOAD_CLASS (parent_class)->sink_event (payload, event);
-
-  return res;
-}
-
-static GstStateChangeReturn
-gst_rtp_h265_pay_change_state (GstElement * element, GstStateChange transition)
-{
-  GstStateChangeReturn ret;
-  GstRtpH265Pay *rtph265pay = GST_RTP_H265_PAY (element);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_READY_TO_PAUSED:
-      rtph265pay->send_vps_sps_pps = FALSE;
-      gst_adapter_clear (rtph265pay->adapter);
-      break;
-    default:
-      break;
-  }
-
-  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
-  switch (transition) {
-    case GST_STATE_CHANGE_PAUSED_TO_READY:
-      rtph265pay->last_vps_sps_pps = -1;
-      gst_rtp_h265_pay_clear_vps_sps_pps (rtph265pay);
-      break;
-    default:
-      break;
-  }
-
-  return ret;
-}
-
-static void
-gst_rtp_h265_pay_set_property (GObject * object, guint prop_id,
-    const GValue * value, GParamSpec * pspec)
-{
-  GstRtpH265Pay *rtph265pay;
-
-  rtph265pay = GST_RTP_H265_PAY (object);
-
-  switch (prop_id) {
-    case PROP_SPROP_PARAMETER_SETS:
-      g_free (rtph265pay->sprop_parameter_sets);
-      rtph265pay->sprop_parameter_sets = g_value_dup_string (value);
-      rtph265pay->update_caps = TRUE;
-      break;
-    case PROP_CONFIG_INTERVAL:
-      rtph265pay->vps_sps_pps_interval = g_value_get_uint (value);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
-}
-
-static void
-gst_rtp_h265_pay_get_property (GObject * object, guint prop_id,
-    GValue * value, GParamSpec * pspec)
-{
-  GstRtpH265Pay *rtph265pay;
-
-  rtph265pay = GST_RTP_H265_PAY (object);
-
-  switch (prop_id) {
-    case PROP_SPROP_PARAMETER_SETS:
-      g_value_set_string (value, rtph265pay->sprop_parameter_sets);
-      break;
-    case PROP_CONFIG_INTERVAL:
-      g_value_set_uint (value, rtph265pay->vps_sps_pps_interval);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-  }
-}
-
-gboolean
-gst_rtp_h265_pay_plugin_init (GstPlugin * plugin)
-{
-  return gst_element_register (plugin, "rtph265pay",
-      GST_RANK_SECONDARY, GST_TYPE_RTP_H265_PAY);
-}
diff --git a/gst/rtp/gstrtph265pay.h b/gst/rtp/gstrtph265pay.h
deleted file mode 100644
index 8382c5e..0000000
--- a/gst/rtp/gstrtph265pay.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/* GStreamer
- * Copyright (C) <2006> Wim Taymans <wim.taymans@gmail.com>
- * Copyright (C) <2014> Jurgen Slowack <jurgenslowack@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef __GST_RTP_H265_PAY_H__
-#define __GST_RTP_H265_PAY_H__
-
-#include <gst/gst.h>
-#include <gst/base/gstadapter.h>
-#include <gst/rtp/gstrtpbasepayload.h>
-#include <gst/codecparsers/gsth265parser.h>
-
-G_BEGIN_DECLS
-#define GST_TYPE_RTP_H265_PAY \
-  (gst_rtp_h265_pay_get_type())
-#define GST_RTP_H265_PAY(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_H265_PAY,GstRtpH265Pay))
-#define GST_RTP_H265_PAY_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_H265_PAY,GstRtpH265PayClass))
-#define GST_IS_RTP_H265_PAY(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_H265_PAY))
-#define GST_IS_RTP_H265_PAY_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_H265_PAY))
-typedef struct _GstRtpH265Pay GstRtpH265Pay;
-typedef struct _GstRtpH265PayClass GstRtpH265PayClass;
-
-typedef enum
-{
-  GST_H265_ALIGNMENT_UNKNOWN,
-  GST_H265_ALIGNMENT_NAL,
-  GST_H265_ALIGNMENT_AU
-} GstH265Alignment;
-
-struct _GstRtpH265Pay
-{
-  GstRTPBasePayload payload;
-
-  guint profile;
-  GPtrArray *sps, *pps, *vps;
-
-  GstH265StreamFormat stream_format;
-  GstH265Alignment alignment;
-  guint nal_length_size;
-  GArray *queue;
-
-  gchar *sprop_parameter_sets;
-  gboolean update_caps;
-
-  GstAdapter *adapter;
-
-  guint vps_sps_pps_interval;
-  gboolean send_vps_sps_pps;
-  GstClockTime last_vps_sps_pps;
-};
-
-struct _GstRtpH265PayClass
-{
-  GstRTPBasePayloadClass parent_class;
-};
-
-GType gst_rtp_h265_pay_get_type (void);
-
-gboolean gst_rtp_h265_pay_plugin_init (GstPlugin * plugin);
-
-G_END_DECLS
-#endif /* __GST_RTP_H265_PAY_H__ */
diff --git a/gst/sdi/Makefile.in b/gst/sdi/Makefile.in
index 193debf..6d74196 100644
--- a/gst/sdi/Makefile.in
+++ b/gst/sdi/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/sdp/Makefile.in b/gst/sdp/Makefile.in
index 6fb3443..35b6ad2 100644
--- a/gst/sdp/Makefile.in
+++ b/gst/sdp/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/sdp/gstsdpdemux.c b/gst/sdp/gstsdpdemux.c
index a2ab691..f687d6a 100644
--- a/gst/sdp/gstsdpdemux.c
+++ b/gst/sdp/gstsdpdemux.c
@@ -94,9 +94,6 @@
 static void gst_sdp_demux_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
 
-static GstCaps *gst_sdp_demux_media_to_caps (gint pt,
-    const GstSDPMedia * media);
-
 static GstStateChangeReturn gst_sdp_demux_change_state (GstElement * element,
     GstStateChange transition);
 static void gst_sdp_demux_handle_message (GstBin * bin, GstMessage * message);
@@ -398,7 +395,7 @@
   if ((payload = gst_sdp_media_get_format (media, 0))) {
     stream->pt = atoi (payload);
     /* convert caps */
-    stream->caps = gst_sdp_demux_media_to_caps (stream->pt, media);
+    stream->caps = gst_sdp_media_get_caps_from_media (media, stream->pt);
 
     if (stream->pt >= 96) {
       /* If we have a dynamic payload type, see if we have a stream with the
@@ -482,250 +479,6 @@
   demux->numstreams = 0;
 }
 
-#define PARSE_INT(p, del, res)          \
-G_STMT_START {                          \
-  gchar *t = p;                         \
-  p = strstr (p, del);                  \
-  if (p == NULL)                        \
-    res = -1;                           \
-  else {                                \
-    *p = '\0';                          \
-    p++;                                \
-    res = atoi (t);                     \
-  }                                     \
-} G_STMT_END
-
-#define PARSE_STRING(p, del, res)       \
-G_STMT_START {                          \
-  gchar *t = p;                         \
-  p = strstr (p, del);                  \
-  if (p == NULL) {                      \
-    res = NULL;                         \
-    p = t;                              \
-  }                                     \
-  else {                                \
-    *p = '\0';                          \
-    p++;                                \
-    res = t;                            \
-  }                                     \
-} G_STMT_END
-
-#define SKIP_SPACES(p)                  \
-  while (*p && g_ascii_isspace (*p))    \
-    p++;
-
-/* rtpmap contains:
- *
- *  <payload> <encoding_name>/<clock_rate>[/<encoding_params>]
- */
-static gboolean
-gst_sdp_demux_parse_rtpmap (const gchar * rtpmap, gint * payload, gchar ** name,
-    gint * rate, gchar ** params)
-{
-  gchar *p, *t;
-
-  p = (gchar *) rtpmap;
-
-  PARSE_INT (p, " ", *payload);
-  if (*payload == -1)
-    return FALSE;
-
-  SKIP_SPACES (p);
-  if (*p == '\0')
-    return FALSE;
-
-  PARSE_STRING (p, "/", *name);
-  if (*name == NULL) {
-    GST_DEBUG ("no rate, name %s", p);
-    /* no rate, assume -1 then */
-    *name = p;
-    *rate = -1;
-    return TRUE;
-  }
-
-  t = p;
-  p = strstr (p, "/");
-  if (p == NULL) {
-    *rate = atoi (t);
-    return TRUE;
-  }
-  *p = '\0';
-  p++;
-  *rate = atoi (t);
-
-  t = p;
-  if (*p == '\0')
-    return TRUE;
-  *params = t;
-
-  return TRUE;
-}
-
-/*
- *  Mapping of caps to and from SDP fields:
- *
- *   m=<media> <UDP port> RTP/AVP <payload> 
- *   a=rtpmap:<payload> <encoding_name>/<clock_rate>[/<encoding_params>]
- *   a=fmtp:<payload> <param>[=<value>];...
- */
-static GstCaps *
-gst_sdp_demux_media_to_caps (gint pt, const GstSDPMedia * media)
-{
-  GstCaps *caps;
-  const gchar *rtpmap;
-  const gchar *fmtp;
-  gchar *name = NULL;
-  gint rate = -1;
-  gchar *params = NULL;
-  gchar *tmp;
-  GstStructure *s;
-  gint payload = 0;
-  gboolean ret;
-
-  /* get and parse rtpmap */
-  if ((rtpmap = gst_sdp_media_get_attribute_val (media, "rtpmap"))) {
-    ret = gst_sdp_demux_parse_rtpmap (rtpmap, &payload, &name, &rate, &params);
-    if (ret) {
-      if (payload != pt) {
-        /* we ignore the rtpmap if the payload type is different. */
-        g_warning ("rtpmap of wrong payload type, ignoring");
-        name = NULL;
-        rate = -1;
-        params = NULL;
-      }
-    } else {
-      /* if we failed to parse the rtpmap for a dynamic payload type, we have an
-       * error */
-      if (pt >= 96)
-        goto no_rtpmap;
-      /* else we can ignore */
-      g_warning ("error parsing rtpmap, ignoring");
-    }
-  } else {
-    /* dynamic payloads need rtpmap or we fail */
-    if (pt >= 96)
-      goto no_rtpmap;
-  }
-  /* check if we have a rate, if not, we need to look up the rate from the
-   * default rates based on the payload types. */
-  if (rate == -1) {
-    const GstRTPPayloadInfo *info;
-
-    if (GST_RTP_PAYLOAD_IS_DYNAMIC (pt)) {
-      /* dynamic types, use media and encoding_name */
-      tmp = g_ascii_strdown (media->media, -1);
-      info = gst_rtp_payload_info_for_name (tmp, name);
-      g_free (tmp);
-    } else {
-      /* static types, use payload type */
-      info = gst_rtp_payload_info_for_pt (pt);
-    }
-
-    if (info) {
-      if ((rate = info->clock_rate) == 0)
-        rate = -1;
-    }
-    /* we fail if we cannot find one */
-    if (rate == -1)
-      goto no_rate;
-  }
-
-  tmp = g_ascii_strdown (media->media, -1);
-  caps = gst_caps_new_simple ("application/x-rtp",
-      "media", G_TYPE_STRING, tmp, "payload", G_TYPE_INT, pt, NULL);
-  g_free (tmp);
-  s = gst_caps_get_structure (caps, 0);
-
-  gst_structure_set (s, "clock-rate", G_TYPE_INT, rate, NULL);
-
-  /* encoding name must be upper case */
-  if (name != NULL) {
-    tmp = g_ascii_strup (name, -1);
-    gst_structure_set (s, "encoding-name", G_TYPE_STRING, tmp, NULL);
-    g_free (tmp);
-  }
-
-  /* params must be lower case */
-  if (params != NULL) {
-    tmp = g_ascii_strdown (params, -1);
-    gst_structure_set (s, "encoding-params", G_TYPE_STRING, tmp, NULL);
-    g_free (tmp);
-  }
-
-  /* parse optional fmtp: field */
-  if ((fmtp = gst_sdp_media_get_attribute_val (media, "fmtp"))) {
-    gchar *p;
-    gint payload = 0;
-
-    p = (gchar *) fmtp;
-
-    /* p is now of the format <payload> <param>[=<value>];... */
-    PARSE_INT (p, " ", payload);
-    if (payload != -1 && payload == pt) {
-      gchar **pairs;
-      gint i;
-
-      /* <param>[=<value>] are separated with ';' */
-      pairs = g_strsplit (p, ";", 0);
-      for (i = 0; pairs[i]; i++) {
-        gchar *valpos;
-        const gchar *key, *val;
-        gint j;
-        const gchar *reserved_keys[] =
-            { "media", "payload", "clock-rate", "encoding-name",
-          "encoding-params"
-        };
-
-        /* the key may not have a '=', the value can have other '='s */
-        valpos = strstr (pairs[i], "=");
-        if (valpos) {
-          /* we have a '=' and thus a value, remove the '=' with \0 */
-          *valpos = '\0';
-          /* value is everything between '=' and ';'. FIXME, strip? */
-          val = g_strstrip (valpos + 1);
-        } else {
-          /* simple <param>;.. is translated into <param>=1;... */
-          val = "1";
-        }
-        /* strip the key of spaces, convert key to lowercase but not the value. */
-        key = g_strstrip (pairs[i]);
-
-        /* skip keys from the fmtp, which we already use ourselves for the
-         * caps. Some software is adding random things like clock-rate into
-         * the fmtp, and we would otherwise here set a string-typed clock-rate
-         * in the caps... and thus fail to create valid RTP caps
-         */
-        for (j = 0; j < G_N_ELEMENTS (reserved_keys); j++) {
-          if (g_ascii_strcasecmp (reserved_keys[j], key) == 0) {
-            key = "";
-            break;
-          }
-        }
-
-        if (strlen (key) > 1) {
-          tmp = g_ascii_strdown (key, -1);
-          gst_structure_set (s, tmp, G_TYPE_STRING, val, NULL);
-          g_free (tmp);
-        }
-      }
-      g_strfreev (pairs);
-    }
-  }
-  return caps;
-
-  /* ERRORS */
-no_rtpmap:
-  {
-    g_warning ("rtpmap type not given for dynamic payload %d", pt);
-    return NULL;
-  }
-no_rate:
-  {
-    g_warning ("rate unknown for payload type %d", pt);
-    return NULL;
-  }
-}
-
 /* this callback is called when the session manager generated a new src pad with
  * payloaded RTP packets. We simply ghost the pad here. */
 static void
diff --git a/gst/segmentclip/Makefile.in b/gst/segmentclip/Makefile.in
index 52dc3a5..7724a3e 100644
--- a/gst/segmentclip/Makefile.in
+++ b/gst/segmentclip/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -327,7 +326,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -349,7 +347,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -371,9 +368,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -535,6 +529,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -548,8 +543,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -636,8 +629,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -689,6 +680,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -709,6 +701,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -746,7 +740,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/segmentclip/gstvideosegmentclip.c b/gst/segmentclip/gstvideosegmentclip.c
index 7430a65..0b168e4 100644
--- a/gst/segmentclip/gstvideosegmentclip.c
+++ b/gst/segmentclip/gstvideosegmentclip.c
@@ -167,8 +167,8 @@
 
   s = gst_caps_get_structure (caps, 0);
 
-  ret = gst_structure_get_fraction (s, "framerate", &fps_n, &fps_d);
-  ret = (fps_d != 0);
+  ret = gst_structure_get_fraction (s, "framerate", &fps_n, &fps_d)
+      && (fps_d != 0);
 
   if (ret) {
     GST_DEBUG_OBJECT (self, "Configured framerate %d/%d", fps_n, fps_d);
diff --git a/gst/siren/Makefile.in b/gst/siren/Makefile.in
index d62cb76..9895ff0 100644
--- a/gst/siren/Makefile.in
+++ b/gst/siren/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/smooth/Makefile.in b/gst/smooth/Makefile.in
index e2942b3..ae5b44b 100644
--- a/gst/smooth/Makefile.in
+++ b/gst/smooth/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/speed/Makefile.in b/gst/speed/Makefile.in
index 81e8a5f..d34ee56 100644
--- a/gst/speed/Makefile.in
+++ b/gst/speed/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/stereo/Makefile.in b/gst/stereo/Makefile.in
index 0b803d2..5b43886 100644
--- a/gst/stereo/Makefile.in
+++ b/gst/stereo/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/subenc/Makefile.in b/gst/subenc/Makefile.in
index a49deb6..551805d 100644
--- a/gst/subenc/Makefile.in
+++ b/gst/subenc/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/tta/Makefile.in b/gst/tta/Makefile.in
index 84567cc..682905d 100644
--- a/gst/tta/Makefile.in
+++ b/gst/tta/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/videofilters/Makefile.in b/gst/videofilters/Makefile.in
index 7bed430..714ad12 100644
--- a/gst/videofilters/Makefile.in
+++ b/gst/videofilters/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -329,7 +328,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -351,7 +349,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -373,9 +370,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -537,6 +531,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -550,8 +545,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -638,8 +631,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -691,6 +682,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -711,6 +703,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -748,7 +742,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/videoframe_audiolevel/Makefile.in b/gst/videoframe_audiolevel/Makefile.in
index e0b9775..404fc7a 100644
--- a/gst/videoframe_audiolevel/Makefile.in
+++ b/gst/videoframe_audiolevel/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -326,7 +325,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -348,7 +346,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -370,9 +367,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -534,6 +528,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -547,8 +542,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -635,8 +628,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -688,6 +679,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -708,6 +700,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -745,7 +739,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/videomeasure/Makefile.in b/gst/videomeasure/Makefile.in
index 84a4ca4..8ac2928 100644
--- a/gst/videomeasure/Makefile.in
+++ b/gst/videomeasure/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -327,7 +326,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -349,7 +347,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -371,9 +368,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -535,6 +529,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -548,8 +543,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -636,8 +629,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -689,6 +680,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -709,6 +701,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -746,7 +740,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/videoparsers/Makefile.in b/gst/videoparsers/Makefile.in
index 2db81aa..1a0c57b 100644
--- a/gst/videoparsers/Makefile.in
+++ b/gst/videoparsers/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -336,7 +335,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -358,7 +356,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -380,9 +377,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -544,6 +538,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -557,8 +552,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -645,8 +638,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -698,6 +689,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -718,6 +710,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -755,7 +749,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c
index 21df95e..6721657 100644
--- a/gst/videoparsers/gsth264parse.c
+++ b/gst/videoparsers/gsth264parse.c
@@ -1499,11 +1499,20 @@
 static void
 ensure_caps_profile (GstH264Parse * h264parse, GstCaps * caps, GstH264SPS * sps)
 {
-  GstCaps *filter_caps, *peer_caps, *compat_caps;
+  GstCaps *peer_caps, *compat_caps;
 
-  filter_caps = gst_caps_new_empty_simple ("video/x-h264");
-  peer_caps =
-      gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (h264parse), filter_caps);
+  peer_caps = gst_pad_get_current_caps (GST_BASE_PARSE_SRC_PAD (h264parse));
+  if (!peer_caps || !gst_caps_can_intersect (caps, peer_caps)) {
+    GstCaps *filter_caps = gst_caps_new_empty_simple ("video/x-h264");
+
+    if (peer_caps)
+      gst_caps_unref (peer_caps);
+    peer_caps =
+        gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (h264parse),
+        filter_caps);
+
+    gst_caps_unref (filter_caps);
+  }
 
   if (peer_caps && !gst_caps_can_intersect (caps, peer_caps)) {
     GstStructure *structure;
@@ -1534,7 +1543,6 @@
   }
   if (peer_caps)
     gst_caps_unref (peer_caps);
-  gst_caps_unref (filter_caps);
 }
 
 static const gchar *
@@ -1792,8 +1800,6 @@
       /* Pass through or set output stereo/multiview config */
       if (s && gst_structure_has_field (s, "multiview-mode")) {
         caps_mview_mode = gst_structure_get_string (s, "multiview-mode");
-        mview_mode =
-            gst_video_multiview_mode_from_caps_string (caps_mview_mode);
         gst_structure_get_flagset (s, "multiview-flags", &mview_flags, NULL);
       } else if (mview_mode != GST_VIDEO_MULTIVIEW_MODE_NONE) {
         if (gst_video_multiview_guess_half_aspect (mview_mode,
@@ -1855,14 +1861,20 @@
 
     src_caps = gst_pad_get_current_caps (GST_BASE_PARSE_SRC_PAD (h264parse));
 
-    if (src_caps
-        && gst_structure_has_field (gst_caps_get_structure (src_caps, 0),
-            "codec_data")) {
+    if (src_caps) {
       /* use codec data from old caps for comparison; we don't want to resend caps
          if everything is same except codec data; */
-      gst_caps_set_value (caps, "codec_data",
-          gst_structure_get_value (gst_caps_get_structure (src_caps, 0),
-              "codec_data"));
+      if (gst_structure_has_field (gst_caps_get_structure (src_caps, 0),
+              "codec_data")) {
+        gst_caps_set_value (caps, "codec_data",
+            gst_structure_get_value (gst_caps_get_structure (src_caps, 0),
+                "codec_data"));
+      } else if (!buf) {
+        GstStructure *s;
+        /* remove any left-over codec-data hanging around */
+        s = gst_caps_get_structure (caps, 0);
+        gst_structure_remove_field (s, "codec_data");
+      }
     }
 
     if (!(src_caps && gst_caps_is_strictly_equal (src_caps, caps))) {
diff --git a/gst/videoparsers/gsth265parse.c b/gst/videoparsers/gsth265parse.c
index 67a16c6..9625122 100644
--- a/gst/videoparsers/gsth265parse.c
+++ b/gst/videoparsers/gsth265parse.c
@@ -1073,6 +1073,10 @@
   if (!found)
     return NULL;
 
+  sps = h265parse->nalparser->last_sps;
+  if (!sps)
+    return NULL;
+
   buf =
       gst_buffer_new_allocate (NULL,
       23 + num_arrays + (3 * num_arrays) + vps_size + sps_size + pps_size,
@@ -1082,9 +1086,6 @@
   memset (data, 0, map.size);
   nl = h265parse->nal_length_size;
 
-  sps = h265parse->nalparser->last_sps;
-  if (!sps)
-    return NULL;
   pft = &sps->profile_tier_level;
   if (sps->vui_parameters_present_flag)
     min_spatial_segmentation_idc = sps->vui_params.min_spatial_segmentation_idc;
@@ -1340,11 +1341,20 @@
 static void
 ensure_caps_profile (GstH265Parse * h265parse, GstCaps * caps, GstH265SPS * sps)
 {
-  GstCaps *filter_caps, *peer_caps, *compat_caps;
+  GstCaps *peer_caps, *compat_caps;
 
-  filter_caps = gst_caps_new_empty_simple ("video/x-h265");
-  peer_caps =
-      gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (h265parse), filter_caps);
+  peer_caps = gst_pad_get_current_caps (GST_BASE_PARSE_SRC_PAD (h265parse));
+  if (!peer_caps || !gst_caps_can_intersect (caps, peer_caps)) {
+    GstCaps *filter_caps = gst_caps_new_empty_simple ("video/x-h265");
+
+    if (peer_caps)
+      gst_caps_unref (peer_caps);
+    peer_caps =
+        gst_pad_peer_query_caps (GST_BASE_PARSE_SRC_PAD (h265parse),
+        filter_caps);
+
+    gst_caps_unref (filter_caps);
+  }
 
   if (peer_caps && !gst_caps_can_intersect (caps, peer_caps)) {
     GstStructure *structure;
@@ -1375,7 +1385,6 @@
   }
   if (peer_caps)
     gst_caps_unref (peer_caps);
-  gst_caps_unref (filter_caps);
 }
 
 static void
@@ -1557,15 +1566,22 @@
 
     src_caps = gst_pad_get_current_caps (GST_BASE_PARSE_SRC_PAD (h265parse));
 
-    if (src_caps
-        && gst_structure_has_field (gst_caps_get_structure (src_caps, 0),
-            "codec_data")) {
+    if (src_caps) {
       /* use codec data from old caps for comparison; we don't want to resend caps
          if everything is same except codec data; */
-      gst_caps_set_value (caps, "codec_data",
-          gst_structure_get_value (gst_caps_get_structure (src_caps, 0),
-              "codec_data"));
+      if (gst_structure_has_field (gst_caps_get_structure (src_caps, 0),
+              "codec_data")) {
+        gst_caps_set_value (caps, "codec_data",
+            gst_structure_get_value (gst_caps_get_structure (src_caps, 0),
+                "codec_data"));
+      } else if (!buf) {
+        GstStructure *s;
+        /* remove any left-over codec-data hanging around */
+        s = gst_caps_get_structure (caps, 0);
+        gst_structure_remove_field (s, "codec_data");
+      }
     }
+
     if (!(src_caps && gst_caps_is_strictly_equal (src_caps, caps))) {
       /* update codec data to new value */
       if (buf) {
@@ -2032,7 +2048,7 @@
         off = nalu.offset + nalu.size;
       }
     }
-
+    gst_buffer_unmap (codec_data, &map);
   } else {
     GST_DEBUG_OBJECT (h265parse, "have bytestream h265");
     /* nothing to pre-process */
diff --git a/gst/videosignal/Makefile.in b/gst/videosignal/Makefile.in
index ce5367b..93ae9ff 100644
--- a/gst/videosignal/Makefile.in
+++ b/gst/videosignal/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/vmnc/Makefile.in b/gst/vmnc/Makefile.in
index ed80898..3ad941a 100644
--- a/gst/vmnc/Makefile.in
+++ b/gst/vmnc/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/y4m/Makefile.in b/gst/y4m/Makefile.in
index dd313f5..a23b956 100644
--- a/gst/y4m/Makefile.in
+++ b/gst/y4m/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/gst/yadif/Makefile.in b/gst/yadif/Makefile.in
index 749d8d9..24883f6 100644
--- a/gst/yadif/Makefile.in
+++ b/gst/yadif/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -321,7 +320,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -343,7 +341,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -365,9 +362,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -529,6 +523,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -542,8 +537,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -630,8 +623,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -683,6 +674,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -703,6 +695,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -740,7 +734,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/ltmain.sh b/ltmain.sh
index bffda54..147d758 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,9 +1,12 @@
+#! /bin/sh
+## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
+##               by inline-source v2014-01-03.01
 
-# libtool (GNU libtool) 2.4.2
+# libtool (GNU libtool) 2.4.6
+# Provide generalized library-building support services.
 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1996-2015 Free Software Foundation, Inc.
 # This is free software; see the source for copying conditions.  There is NO
 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
@@ -23,166 +26,670 @@
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html,
-# or obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Usage: $progname [OPTION]... [MODE-ARG]...
-#
-# Provide generalized library-building support services.
-#
-#       --config             show all configuration variables
-#       --debug              enable verbose shell tracing
-#   -n, --dry-run            display commands without modifying any files
-#       --features           display basic configuration information and exit
-#       --mode=MODE          use operation mode MODE
-#       --preserve-dup-deps  don't remove duplicate dependency libraries
-#       --quiet, --silent    don't print informational messages
-#       --no-quiet, --no-silent
-#                            print informational messages (default)
-#       --no-warn            don't display warning messages
-#       --tag=TAG            use configuration variables from tag TAG
-#   -v, --verbose            print more informational messages than default
-#       --no-verbose         don't print the extra informational messages
-#       --version            print version information
-#   -h, --help, --help-all   print short, long, or detailed help message
-#
-# MODE must be one of the following:
-#
-#         clean              remove files from the build directory
-#         compile            compile a source file into a libtool object
-#         execute            automatically set library path, then run a program
-#         finish             complete the installation of libtool libraries
-#         install            install libraries or executables
-#         link               create a library or an executable
-#         uninstall          remove libraries from an installed directory
-#
-# MODE-ARGS vary depending on the MODE.  When passed as first option,
-# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
-# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
-#
-# When reporting a bug, please describe a test case to reproduce it and
-# include the following information:
-#
-#         host-triplet:	$host
-#         shell:		$SHELL
-#         compiler:		$LTCC
-#         compiler flags:		$LTCFLAGS
-#         linker:		$LD (gnu? $with_gnu_ld)
-#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1.11
-#         automake:	$automake_version
-#         autoconf:	$autoconf_version
-#
-# Report bugs to <bug-libtool@gnu.org>.
-# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
-# General help using GNU software: <http://www.gnu.org/gethelp/>.
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1.11"
-TIMESTAMP=""
-package_revision=1.3337
+VERSION="2.4.6 Debian-2.4.6-0.1"
+package_revision=2.4.6
 
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Run './libtool --help' for help with using this script from the
+# command line.
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# After configure completes, it has a better idea of some of the
+# shell tools we need than the defaults used by the functions shared
+# with bootstrap, so set those here where they can still be over-
+# ridden by the user, but otherwise take precedence.
+
+: ${AUTOCONF="autoconf"}
+: ${AUTOMAKE="automake"}
+
+
+## -------------------------- ##
+## Source external libraries. ##
+## -------------------------- ##
+
+# Much of our low-level functionality needs to be sourced from external
+# libraries, which are installed to $pkgauxdir.
+
+# Set a version string for this script.
+scriptversion=2015-01-20.17; # UTC
+
+# General shell script boiler plate, and helper functions.
+# Written by Gary V. Vaughan, 2004
+
+# Copyright (C) 2004-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# As a special exception to the GNU General Public License, if you distribute
+# this file as part of a program or library that is built using GNU Libtool,
+# you may include this file under the same distribution terms that you use
+# for the rest of that program.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary@gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# Evaluate this file near the top of your script to gain access to
+# the functions and variables defined here:
+#
+#   . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh
+#
+# If you need to override any of the default environment variable
+# settings, do that before evaluating this file.
+
+
+## -------------------- ##
+## Shell normalisation. ##
+## -------------------- ##
+
+# Some shells need a little help to be as Bourne compatible as possible.
+# Before doing anything else, make sure all that help has been provided!
+
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac
 fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
 
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-}
-
-# NLS nuisances: We save the old values to restore during execute mode.
-lt_user_locale=
-lt_safe_locale=
-for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+# NLS nuisances: We save the old values in case they are required later.
+_G_user_locale=
+_G_safe_locale=
+for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
 do
-  eval "if test \"\${$lt_var+set}\" = set; then
-          save_$lt_var=\$$lt_var
-          $lt_var=C
-	  export $lt_var
-	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
-	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+  eval "if test set = \"\${$_G_var+set}\"; then
+          save_$_G_var=\$$_G_var
+          $_G_var=C
+	  export $_G_var
+	  _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
+	  _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
 	fi"
 done
-LC_ALL=C
-LANGUAGE=C
-export LANGUAGE LC_ALL
 
-$lt_unset CDPATH
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
+# Make sure IFS has a sensible default
+sp=' '
+nl='
+'
+IFS="$sp	$nl"
+
+# There are apparently some retarded systems that use ';' as a PATH separator!
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+
+## ------------------------- ##
+## Locate command utilities. ##
+## ------------------------- ##
+
+
+# func_executable_p FILE
+# ----------------------
+# Check that FILE is an executable regular file.
+func_executable_p ()
+{
+    test -f "$1" && test -x "$1"
+}
+
+
+# func_path_progs PROGS_LIST CHECK_FUNC [PATH]
+# --------------------------------------------
+# Search for either a program that responds to --version with output
+# containing "GNU", or else returned by CHECK_FUNC otherwise, by
+# trying all the directories in PATH with each of the elements of
+# PROGS_LIST.
+#
+# CHECK_FUNC should accept the path to a candidate program, and
+# set $func_check_prog_result if it truncates its output less than
+# $_G_path_prog_max characters.
+func_path_progs ()
+{
+    _G_progs_list=$1
+    _G_check_func=$2
+    _G_PATH=${3-"$PATH"}
+
+    _G_path_prog_max=0
+    _G_path_prog_found=false
+    _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
+    for _G_dir in $_G_PATH; do
+      IFS=$_G_save_IFS
+      test -z "$_G_dir" && _G_dir=.
+      for _G_prog_name in $_G_progs_list; do
+        for _exeext in '' .EXE; do
+          _G_path_prog=$_G_dir/$_G_prog_name$_exeext
+          func_executable_p "$_G_path_prog" || continue
+          case `"$_G_path_prog" --version 2>&1` in
+            *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
+            *)     $_G_check_func $_G_path_prog
+		   func_path_progs_result=$func_check_prog_result
+		   ;;
+          esac
+          $_G_path_prog_found && break 3
+        done
+      done
+    done
+    IFS=$_G_save_IFS
+    test -z "$func_path_progs_result" && {
+      echo "no acceptable sed could be found in \$PATH" >&2
+      exit 1
+    }
+}
+
+
+# We want to be able to use the functions in this file before configure
+# has figured out where the best binaries are kept, which means we have
+# to search for them ourselves - except when the results are already set
+# where we skip the searches.
+
+# Unless the user overrides by setting SED, search the path for either GNU
+# sed, or the sed that truncates its output the least.
+test -z "$SED" && {
+  _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+  for _G_i in 1 2 3 4 5 6 7; do
+    _G_sed_script=$_G_sed_script$nl$_G_sed_script
+  done
+  echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
+  _G_sed_script=
+
+  func_check_prog_sed ()
+  {
+    _G_path_prog=$1
+
+    _G_count=0
+    printf 0123456789 >conftest.in
+    while :
+    do
+      cat conftest.in conftest.in >conftest.tmp
+      mv conftest.tmp conftest.in
+      cp conftest.in conftest.nl
+      echo '' >> conftest.nl
+      "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
+      diff conftest.out conftest.nl >/dev/null 2>&1 || break
+      _G_count=`expr $_G_count + 1`
+      if test "$_G_count" -gt "$_G_path_prog_max"; then
+        # Best one so far, save it but keep looking for a better one
+        func_check_prog_result=$_G_path_prog
+        _G_path_prog_max=$_G_count
+      fi
+      # 10*(2^10) chars as input seems more than enough
+      test 10 -lt "$_G_count" && break
+    done
+    rm -f conftest.in conftest.tmp conftest.nl conftest.out
+  }
+
+  func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
+  rm -f conftest.sed
+  SED=$func_path_progs_result
+}
+
+
+# Unless the user overrides by setting GREP, search the path for either GNU
+# grep, or the grep that truncates its output the least.
+test -z "$GREP" && {
+  func_check_prog_grep ()
+  {
+    _G_path_prog=$1
+
+    _G_count=0
+    _G_path_prog_max=0
+    printf 0123456789 >conftest.in
+    while :
+    do
+      cat conftest.in conftest.in >conftest.tmp
+      mv conftest.tmp conftest.in
+      cp conftest.in conftest.nl
+      echo 'GREP' >> conftest.nl
+      "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
+      diff conftest.out conftest.nl >/dev/null 2>&1 || break
+      _G_count=`expr $_G_count + 1`
+      if test "$_G_count" -gt "$_G_path_prog_max"; then
+        # Best one so far, save it but keep looking for a better one
+        func_check_prog_result=$_G_path_prog
+        _G_path_prog_max=$_G_count
+      fi
+      # 10*(2^10) chars as input seems more than enough
+      test 10 -lt "$_G_count" && break
+    done
+    rm -f conftest.in conftest.tmp conftest.nl conftest.out
+  }
+
+  func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
+  GREP=$func_path_progs_result
+}
+
+
+## ------------------------------- ##
+## User overridable command paths. ##
+## ------------------------------- ##
+
+# All uppercase variable names are used for environment variables.  These
+# variables can be overridden by the user before calling a script that
+# uses them if a suitable command of that name is not already available
+# in the command search PATH.
+
+: ${CP="cp -f"}
+: ${ECHO="printf %s\n"}
+: ${EGREP="$GREP -E"}
+: ${FGREP="$GREP -F"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+
+
+## -------------------- ##
+## Useful sed snippets. ##
+## -------------------- ##
+
+sed_dirname='s|/[^/]*$||'
+sed_basename='s|^.*/||'
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
+
+# Same as above, but do not quote variable references.
+sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
+
+# Sed substitution that converts a w32 file name or path
+# that contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-'\' parameter expansions in output of sed_double_quote_subst that
+# were '\'-ed in input to the same.  If an odd number of '\' preceded a
+# '$' in input to sed_double_quote_subst, that '$' was protected from
+# expansion.  Since each input '\' is now two '\'s, look for any number
+# of runs of four '\'s followed by two '\'s and then a '$'.  '\' that '$'.
+_G_bs='\\'
+_G_bs2='\\\\'
+_G_bs4='\\\\\\\\'
+_G_dollar='\$'
+sed_double_backslash="\
+  s/$_G_bs4/&\\
+/g
+  s/^$_G_bs2$_G_dollar/$_G_bs&/
+  s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
+  s/\n//g"
+
+
+## ----------------- ##
+## Global variables. ##
+## ----------------- ##
+
+# Except for the global variables explicitly listed below, the following
+# functions in the '^func_' namespace, and the '^require_' namespace
+# variables initialised in the 'Resource management' section, sourcing
+# this file will not pollute your global namespace with anything
+# else. There's no portable way to scope variables in Bourne shell
+# though, so actually running these functions will sometimes place
+# results into a variable named after the function, and often use
+# temporary variables in the '^_G_' namespace. If you are careful to
+# avoid using those namespaces casually in your sourcing script, things
+# should continue to work as you expect. And, of course, you can freely
+# overwrite any of the functions or variables defined here before
+# calling anything to customize them.
+
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
+
+# Allow overriding, eg assuming that you follow the convention of
+# putting '$debug_cmd' at the start of all your functions, you can get
+# bash to show function call trace with:
+#
+#    debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
+debug_cmd=${debug_cmd-":"}
+exit_cmd=:
+
+# By convention, finish your script with:
+#
+#    exit $exit_status
+#
+# so that you can set exit_status to non-zero if you want to indicate
+# something went wrong during execution without actually bailing out at
+# the point of failure.
+exit_status=$EXIT_SUCCESS
 
 # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
 # is ksh but when the shell is invoked as "sh" and the current value of
 # the _XPG environment variable is not equal to 1 (one), the special
 # positional parameter $0, within a function call, is the name of the
 # function.
-progpath="$0"
+progpath=$0
+
+# The name of this program.
+progname=`$ECHO "$progpath" |$SED "$sed_basename"`
+
+# Make sure we have an absolute progpath for reexecution:
+case $progpath in
+  [\\/]*|[A-Za-z]:\\*) ;;
+  *[\\/]*)
+     progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`
+     progdir=`cd "$progdir" && pwd`
+     progpath=$progdir/$progname
+     ;;
+  *)
+     _G_IFS=$IFS
+     IFS=${PATH_SEPARATOR-:}
+     for progdir in $PATH; do
+       IFS=$_G_IFS
+       test -x "$progdir/$progname" && break
+     done
+     IFS=$_G_IFS
+     test -n "$progdir" || progdir=`pwd`
+     progpath=$progdir/$progname
+     ;;
+esac
 
 
+## ----------------- ##
+## Standard options. ##
+## ----------------- ##
 
-: ${CP="cp -f"}
-test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${MAKE="make"}
-: ${MKDIR="mkdir"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
-: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
-: ${Xsed="$SED -e 1s/^X//"}
+# The following options affect the operation of the functions defined
+# below, and should be set appropriately depending on run-time para-
+# meters passed on the command line.
 
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
-EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
+opt_dry_run=false
+opt_quiet=false
+opt_verbose=false
 
-exit_status=$EXIT_SUCCESS
+# Categories 'all' and 'none' are always available.  Append any others
+# you will pass as the first argument to func_warning from your own
+# code.
+warning_categories=
 
-# Make sure IFS has a sensible default
-lt_nl='
-'
-IFS=" 	$lt_nl"
+# By default, display warnings according to 'opt_warning_types'.  Set
+# 'warning_func'  to ':' to elide all warnings, or func_fatal_error to
+# treat the next displayed warning as a fatal error.
+warning_func=func_warn_and_continue
 
-dirname="s,/[^/]*$,,"
-basename="s,^.*/,,"
+# Set to 'all' to display all warnings, 'none' to suppress all
+# warnings, or a space delimited list of some subset of
+# 'warning_categories' to display only the listed warnings.
+opt_warning_types=all
 
-# func_dirname file append nondir_replacement
+
+## -------------------- ##
+## Resource management. ##
+## -------------------- ##
+
+# This section contains definitions for functions that each ensure a
+# particular resource (a file, or a non-empty configuration variable for
+# example) is available, and if appropriate to extract default values
+# from pertinent package files. Call them using their associated
+# 'require_*' variable to ensure that they are executed, at most, once.
+#
+# It's entirely deliberate that calling these functions can set
+# variables that don't obey the namespace limitations obeyed by the rest
+# of this file, in order that that they be as useful as possible to
+# callers.
+
+
+# require_term_colors
+# -------------------
+# Allow display of bold text on terminals that support it.
+require_term_colors=func_require_term_colors
+func_require_term_colors ()
+{
+    $debug_cmd
+
+    test -t 1 && {
+      # COLORTERM and USE_ANSI_COLORS environment variables take
+      # precedence, because most terminfo databases neglect to describe
+      # whether color sequences are supported.
+      test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
+
+      if test 1 = "$USE_ANSI_COLORS"; then
+        # Standard ANSI escape sequences
+        tc_reset=''
+        tc_bold='';   tc_standout=''
+        tc_red='';   tc_green=''
+        tc_blue='';  tc_cyan=''
+      else
+        # Otherwise trust the terminfo database after all.
+        test -n "`tput sgr0 2>/dev/null`" && {
+          tc_reset=`tput sgr0`
+          test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
+          tc_standout=$tc_bold
+          test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
+          test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
+          test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
+          test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
+          test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
+        }
+      fi
+    }
+
+    require_term_colors=:
+}
+
+
+## ----------------- ##
+## Function library. ##
+## ----------------- ##
+
+# This section contains a variety of useful functions to call in your
+# scripts. Take note of the portable wrappers for features provided by
+# some modern shells, which will fall back to slower equivalents on
+# less featureful shells.
+
+
+# func_append VAR VALUE
+# ---------------------
+# Append VALUE onto the existing contents of VAR.
+
+  # We should try to minimise forks, especially on Windows where they are
+  # unreasonably slow, so skip the feature probes when bash or zsh are
+  # being used:
+  if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
+    : ${_G_HAVE_ARITH_OP="yes"}
+    : ${_G_HAVE_XSI_OPS="yes"}
+    # The += operator was introduced in bash 3.1
+    case $BASH_VERSION in
+      [12].* | 3.0 | 3.0*) ;;
+      *)
+        : ${_G_HAVE_PLUSEQ_OP="yes"}
+        ;;
+    esac
+  fi
+
+  # _G_HAVE_PLUSEQ_OP
+  # Can be empty, in which case the shell is probed, "yes" if += is
+  # useable or anything else if it does not work.
+  test -z "$_G_HAVE_PLUSEQ_OP" \
+    && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
+    && _G_HAVE_PLUSEQ_OP=yes
+
+if test yes = "$_G_HAVE_PLUSEQ_OP"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_append ()
+  {
+    $debug_cmd
+
+    eval "$1+=\$2"
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_append ()
+  {
+    $debug_cmd
+
+    eval "$1=\$$1\$2"
+  }
+fi
+
+
+# func_append_quoted VAR VALUE
+# ----------------------------
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+if test yes = "$_G_HAVE_PLUSEQ_OP"; then
+  eval 'func_append_quoted ()
+  {
+    $debug_cmd
+
+    func_quote_for_eval "$2"
+    eval "$1+=\\ \$func_quote_for_eval_result"
+  }'
+else
+  func_append_quoted ()
+  {
+    $debug_cmd
+
+    func_quote_for_eval "$2"
+    eval "$1=\$$1\\ \$func_quote_for_eval_result"
+  }
+fi
+
+
+# func_append_uniq VAR VALUE
+# --------------------------
+# Append unique VALUE onto the existing contents of VAR, assuming
+# entries are delimited by the first character of VALUE.  For example:
+#
+#   func_append_uniq options " --another-option option-argument"
+#
+# will only append to $options if " --another-option option-argument "
+# is not already present somewhere in $options already (note spaces at
+# each end implied by leading space in second argument).
+func_append_uniq ()
+{
+    $debug_cmd
+
+    eval _G_current_value='`$ECHO $'$1'`'
+    _G_delim=`expr "$2" : '\(.\)'`
+
+    case $_G_delim$_G_current_value$_G_delim in
+      *"$2$_G_delim"*) ;;
+      *) func_append "$@" ;;
+    esac
+}
+
+
+# func_arith TERM...
+# ------------------
+# Set func_arith_result to the result of evaluating TERMs.
+  test -z "$_G_HAVE_ARITH_OP" \
+    && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
+    && _G_HAVE_ARITH_OP=yes
+
+if test yes = "$_G_HAVE_ARITH_OP"; then
+  eval 'func_arith ()
+  {
+    $debug_cmd
+
+    func_arith_result=$(( $* ))
+  }'
+else
+  func_arith ()
+  {
+    $debug_cmd
+
+    func_arith_result=`expr "$@"`
+  }
+fi
+
+
+# func_basename FILE
+# ------------------
+# Set func_basename_result to FILE with everything up to and including
+# the last / stripped.
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  # If this shell supports suffix pattern removal, then use it to avoid
+  # forking. Hide the definitions single quotes in case the shell chokes
+  # on unsupported syntax...
+  _b='func_basename_result=${1##*/}'
+  _d='case $1 in
+        */*) func_dirname_result=${1%/*}$2 ;;
+        *  ) func_dirname_result=$3        ;;
+      esac'
+
+else
+  # ...otherwise fall back to using sed.
+  _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
+  _d='func_dirname_result=`$ECHO "$1"  |$SED "$sed_dirname"`
+      if test "X$func_dirname_result" = "X$1"; then
+        func_dirname_result=$3
+      else
+        func_append func_dirname_result "$2"
+      fi'
+fi
+
+eval 'func_basename ()
+{
+    $debug_cmd
+
+    '"$_b"'
+}'
+
+
+# func_dirname FILE APPEND NONDIR_REPLACEMENT
+# -------------------------------------------
 # Compute the dirname of FILE.  If nonempty, add APPEND to the result,
 # otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
+eval 'func_dirname ()
 {
-    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
-    if test "X$func_dirname_result" = "X${1}"; then
-      func_dirname_result="${3}"
-    else
-      func_dirname_result="$func_dirname_result${2}"
-    fi
-} # func_dirname may be replaced by extended shell implementation
+    $debug_cmd
+
+    '"$_d"'
+}'
 
 
-# func_basename file
-func_basename ()
-{
-    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
-} # func_basename may be replaced by extended shell implementation
-
-
-# func_dirname_and_basename file append nondir_replacement
-# perform func_basename and func_dirname in a single function
+# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
+# --------------------------------------------------------
+# Perform func_basename and func_dirname in a single function
 # call:
 #   dirname:  Compute the dirname of FILE.  If nonempty,
 #             add APPEND to the result, otherwise set result
@@ -190,263 +697,327 @@
 #             value returned in "$func_dirname_result"
 #   basename: Compute filename of FILE.
 #             value retuned in "$func_basename_result"
-# Implementation must be kept synchronized with func_dirname
-# and func_basename. For efficiency, we do not delegate to
-# those functions but instead duplicate the functionality here.
-func_dirname_and_basename ()
+# For efficiency, we do not delegate to the functions above but instead
+# duplicate the functionality here.
+eval 'func_dirname_and_basename ()
 {
-    # Extract subdirectory from the argument.
-    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
-    if test "X$func_dirname_result" = "X${1}"; then
-      func_dirname_result="${3}"
-    else
-      func_dirname_result="$func_dirname_result${2}"
+    $debug_cmd
+
+    '"$_b"'
+    '"$_d"'
+}'
+
+
+# func_echo ARG...
+# ----------------
+# Echo program name prefixed message.
+func_echo ()
+{
+    $debug_cmd
+
+    _G_message=$*
+
+    func_echo_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_IFS
+      $ECHO "$progname: $_G_line"
+    done
+    IFS=$func_echo_IFS
+}
+
+
+# func_echo_all ARG...
+# --------------------
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
+
+# func_echo_infix_1 INFIX ARG...
+# ------------------------------
+# Echo program name, followed by INFIX on the first line, with any
+# additional lines not showing INFIX.
+func_echo_infix_1 ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    _G_infix=$1; shift
+    _G_indent=$_G_infix
+    _G_prefix="$progname: $_G_infix: "
+    _G_message=$*
+
+    # Strip color escape sequences before counting printable length
+    for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
+    do
+      test -n "$_G_tc" && {
+        _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
+        _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
+      }
+    done
+    _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`"  " ## exclude from sc_prohibit_nested_quotes
+
+    func_echo_infix_1_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_infix_1_IFS
+      $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
+      _G_prefix=$_G_indent
+    done
+    IFS=$func_echo_infix_1_IFS
+}
+
+
+# func_error ARG...
+# -----------------
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $debug_cmd
+
+    $require_term_colors
+
+    func_echo_infix_1 "  $tc_standout${tc_red}error$tc_reset" "$*" >&2
+}
+
+
+# func_fatal_error ARG...
+# -----------------------
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    $debug_cmd
+
+    func_error "$*"
+    exit $EXIT_FAILURE
+}
+
+
+# func_grep EXPRESSION FILENAME
+# -----------------------------
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $debug_cmd
+
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_len STRING
+# ---------------
+# Set func_len_result to the length of STRING. STRING may not
+# start with a hyphen.
+  test -z "$_G_HAVE_XSI_OPS" \
+    && (eval 'x=a/b/c;
+      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+    && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_len ()
+  {
+    $debug_cmd
+
+    func_len_result=${#1}
+  }'
+else
+  func_len ()
+  {
+    $debug_cmd
+
+    func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+  }
+fi
+
+
+# func_mkdir_p DIRECTORY-PATH
+# ---------------------------
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    $debug_cmd
+
+    _G_directory_path=$1
+    _G_dir_list=
+
+    if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then
+
+      # Protect directory names starting with '-'
+      case $_G_directory_path in
+        -*) _G_directory_path=./$_G_directory_path ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$_G_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+	# list incase some portion of path contains whitespace.
+        _G_dir_list=$_G_directory_path:$_G_dir_list
+
+        # If the last portion added has no slash in it, the list is done
+        case $_G_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`
+      done
+      _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`
+
+      func_mkdir_p_IFS=$IFS; IFS=:
+      for _G_dir in $_G_dir_list; do
+	IFS=$func_mkdir_p_IFS
+        # mkdir can fail with a 'File exist' error if two processes
+        # try to create one of the directories concurrently.  Don't
+        # stop in that case!
+        $MKDIR "$_G_dir" 2>/dev/null || :
+      done
+      IFS=$func_mkdir_p_IFS
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$_G_directory_path" || \
+        func_fatal_error "Failed to create '$1'"
     fi
-    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
-} # func_dirname_and_basename may be replaced by extended shell implementation
+}
 
 
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
+# func_mktempdir [BASENAME]
+# -------------------------
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, BASENAME is the basename for that directory.
+func_mktempdir ()
 {
-    case ${2} in
-      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
-    esac
-} # func_stripname may be replaced by extended shell implementation
+    $debug_cmd
 
+    _G_template=${TMPDIR-/tmp}/${1-$progname}
 
-# These SED scripts presuppose an absolute path with a trailing slash.
-pathcar='s,^/\([^/]*\).*$,\1,'
-pathcdr='s,^/[^/]*,,'
-removedotparts=':dotsl
-		s@/\./@/@g
-		t dotsl
-		s,/\.$,/,'
-collapseslashes='s@/\{1,\}@/@g'
-finalslash='s,/*$,/,'
+    if test : = "$opt_dry_run"; then
+      # Return a directory name, but don't create it in dry-run mode
+      _G_tmpdir=$_G_template-$$
+    else
+
+      # If mktemp works, use that first and foremost
+      _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$_G_tmpdir"; then
+        # Failing that, at least try and use $RANDOM to avoid a race
+        _G_tmpdir=$_G_template-${RANDOM-0}$$
+
+        func_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$_G_tmpdir"
+        umask $func_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$_G_tmpdir" || \
+        func_fatal_error "cannot create temporary directory '$_G_tmpdir'"
+    fi
+
+    $ECHO "$_G_tmpdir"
+}
+
 
 # func_normal_abspath PATH
+# ------------------------
 # Remove doubled-up and trailing slashes, "." path components,
 # and cancel out any ".." path components in PATH after making
 # it an absolute path.
-#             value returned in "$func_normal_abspath_result"
 func_normal_abspath ()
 {
-  # Start from root dir and reassemble the path.
-  func_normal_abspath_result=
-  func_normal_abspath_tpath=$1
-  func_normal_abspath_altnamespace=
-  case $func_normal_abspath_tpath in
-    "")
-      # Empty path, that just means $cwd.
-      func_stripname '' '/' "`pwd`"
-      func_normal_abspath_result=$func_stripname_result
-      return
-    ;;
-    # The next three entries are used to spot a run of precisely
-    # two leading slashes without using negated character classes;
-    # we take advantage of case's first-match behaviour.
-    ///*)
-      # Unusual form of absolute path, do nothing.
-    ;;
-    //*)
-      # Not necessarily an ordinary path; POSIX reserves leading '//'
-      # and for example Cygwin uses it to access remote file shares
-      # over CIFS/SMB, so we conserve a leading double slash if found.
-      func_normal_abspath_altnamespace=/
-    ;;
-    /*)
-      # Absolute path, do nothing.
-    ;;
-    *)
-      # Relative path, prepend $cwd.
-      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
-    ;;
-  esac
-  # Cancel out all the simple stuff to save iterations.  We also want
-  # the path to end with a slash for ease of parsing, so make sure
-  # there is one (and only one) here.
-  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
-  while :; do
-    # Processed it all yet?
-    if test "$func_normal_abspath_tpath" = / ; then
-      # If we ascended to the root using ".." the result may be empty now.
-      if test -z "$func_normal_abspath_result" ; then
-        func_normal_abspath_result=/
-      fi
-      break
-    fi
-    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$pathcar"`
-    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
-        -e "$pathcdr"`
-    # Figure out what to do with it
-    case $func_normal_abspath_tcomponent in
+    $debug_cmd
+
+    # These SED scripts presuppose an absolute path with a trailing slash.
+    _G_pathcar='s|^/\([^/]*\).*$|\1|'
+    _G_pathcdr='s|^/[^/]*||'
+    _G_removedotparts=':dotsl
+		s|/\./|/|g
+		t dotsl
+		s|/\.$|/|'
+    _G_collapseslashes='s|/\{1,\}|/|g'
+    _G_finalslash='s|/*$|/|'
+
+    # Start from root dir and reassemble the path.
+    func_normal_abspath_result=
+    func_normal_abspath_tpath=$1
+    func_normal_abspath_altnamespace=
+    case $func_normal_abspath_tpath in
       "")
-        # Trailing empty path component, ignore it.
-      ;;
-      ..)
-        # Parent dir; strip last assembled component from result.
-        func_dirname "$func_normal_abspath_result"
-        func_normal_abspath_result=$func_dirname_result
-      ;;
-      *)
-        # Actual path component, append it.
-        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
-      ;;
-    esac
-  done
-  # Restore leading double-slash if one was found on entry.
-  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
-}
-
-# func_relative_path SRCDIR DSTDIR
-# generates a relative path from SRCDIR to DSTDIR, with a trailing
-# slash if non-empty, suitable for immediately appending a filename
-# without needing to append a separator.
-#             value returned in "$func_relative_path_result"
-func_relative_path ()
-{
-  func_relative_path_result=
-  func_normal_abspath "$1"
-  func_relative_path_tlibdir=$func_normal_abspath_result
-  func_normal_abspath "$2"
-  func_relative_path_tbindir=$func_normal_abspath_result
-
-  # Ascend the tree starting from libdir
-  while :; do
-    # check if we have found a prefix of bindir
-    case $func_relative_path_tbindir in
-      $func_relative_path_tlibdir)
-        # found an exact match
-        func_relative_path_tcancelled=
-        break
+        # Empty path, that just means $cwd.
+        func_stripname '' '/' "`pwd`"
+        func_normal_abspath_result=$func_stripname_result
+        return
         ;;
-      $func_relative_path_tlibdir*)
-        # found a matching prefix
-        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
-        func_relative_path_tcancelled=$func_stripname_result
-        if test -z "$func_relative_path_result"; then
-          func_relative_path_result=.
-        fi
-        break
+      # The next three entries are used to spot a run of precisely
+      # two leading slashes without using negated character classes;
+      # we take advantage of case's first-match behaviour.
+      ///*)
+        # Unusual form of absolute path, do nothing.
+        ;;
+      //*)
+        # Not necessarily an ordinary path; POSIX reserves leading '//'
+        # and for example Cygwin uses it to access remote file shares
+        # over CIFS/SMB, so we conserve a leading double slash if found.
+        func_normal_abspath_altnamespace=/
+        ;;
+      /*)
+        # Absolute path, do nothing.
         ;;
       *)
-        func_dirname $func_relative_path_tlibdir
-        func_relative_path_tlibdir=${func_dirname_result}
-        if test "x$func_relative_path_tlibdir" = x ; then
-          # Have to descend all the way to the root!
-          func_relative_path_result=../$func_relative_path_result
-          func_relative_path_tcancelled=$func_relative_path_tbindir
-          break
-        fi
-        func_relative_path_result=../$func_relative_path_result
+        # Relative path, prepend $cwd.
+        func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
         ;;
     esac
-  done
 
-  # Now calculate path; take care to avoid doubling-up slashes.
-  func_stripname '' '/' "$func_relative_path_result"
-  func_relative_path_result=$func_stripname_result
-  func_stripname '/' '/' "$func_relative_path_tcancelled"
-  if test "x$func_stripname_result" != x ; then
-    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
-  fi
-
-  # Normalisation. If bindir is libdir, return empty string,
-  # else relative path ending with a slash; either way, target
-  # file name can be directly appended.
-  if test ! -z "$func_relative_path_result"; then
-    func_stripname './' '' "$func_relative_path_result/"
-    func_relative_path_result=$func_stripname_result
-  fi
+    # Cancel out all the simple stuff to save iterations.  We also want
+    # the path to end with a slash for ease of parsing, so make sure
+    # there is one (and only one) here.
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
+    while :; do
+      # Processed it all yet?
+      if test / = "$func_normal_abspath_tpath"; then
+        # If we ascended to the root using ".." the result may be empty now.
+        if test -z "$func_normal_abspath_result"; then
+          func_normal_abspath_result=/
+        fi
+        break
+      fi
+      func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_pathcar"`
+      func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+          -e "$_G_pathcdr"`
+      # Figure out what to do with it
+      case $func_normal_abspath_tcomponent in
+        "")
+          # Trailing empty path component, ignore it.
+          ;;
+        ..)
+          # Parent dir; strip last assembled component from result.
+          func_dirname "$func_normal_abspath_result"
+          func_normal_abspath_result=$func_dirname_result
+          ;;
+        *)
+          # Actual path component, append it.
+          func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
+          ;;
+      esac
+    done
+    # Restore leading double-slash if one was found on entry.
+    func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
 }
 
-# The name of this program:
-func_dirname_and_basename "$progpath"
-progname=$func_basename_result
 
-# Make sure we have an absolute path for reexecution:
-case $progpath in
-  [\\/]*|[A-Za-z]:\\*) ;;
-  *[\\/]*)
-     progdir=$func_dirname_result
-     progdir=`cd "$progdir" && pwd`
-     progpath="$progdir/$progname"
-     ;;
-  *)
-     save_IFS="$IFS"
-     IFS=${PATH_SEPARATOR-:}
-     for progdir in $PATH; do
-       IFS="$save_IFS"
-       test -x "$progdir/$progname" && break
-     done
-     IFS="$save_IFS"
-     test -n "$progdir" || progdir=`pwd`
-     progpath="$progdir/$progname"
-     ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution that turns a string into a regex matching for the
-# string literally.
-sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
-
-# Sed substitution that converts a w32 file name or path
-# which contains forward slashes, into one that contains
-# (escaped) backslashes.  A very naive implementation.
-lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
-
-# Re-`\' parameter expansions in output of double_quote_subst that were
-# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
-# in input to double_quote_subst, that '$' was protected from expansion.
-# Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
-bs='\\'
-bs2='\\\\'
-bs4='\\\\\\\\'
-dollar='\$'
-sed_double_backslash="\
-  s/$bs4/&\\
-/g
-  s/^$bs2$dollar/$bs&/
-  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
-  s/\n//g"
-
-# Standard options:
-opt_dry_run=false
-opt_help=false
-opt_quiet=false
-opt_verbose=false
-opt_warning=:
-
-# func_echo arg...
-# Echo program name prefixed message, along with the current mode
-# name if it has been set yet.
-func_echo ()
+# func_notquiet ARG...
+# --------------------
+# Echo program name prefixed message only when not in quiet mode.
+func_notquiet ()
 {
-    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
-}
+    $debug_cmd
 
-# func_verbose arg...
-# Echo program name prefixed message in verbose mode only.
-func_verbose ()
-{
-    $opt_verbose && func_echo ${1+"$@"}
+    $opt_quiet || func_echo ${1+"$@"}
 
     # A bug in bash halts the script if the last line of a function
     # fails when set -e is in force, so we need another command to
@@ -454,450 +1025,1113 @@
     :
 }
 
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
-{
-    $ECHO "$*"
-}
 
-# func_error arg...
-# Echo program name prefixed message to standard error.
-func_error ()
+# func_relative_path SRCDIR DSTDIR
+# --------------------------------
+# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
+func_relative_path ()
 {
-    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
-}
+    $debug_cmd
 
-# func_warning arg...
-# Echo program name prefixed warning message to standard error.
-func_warning ()
-{
-    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+    func_relative_path_result=
+    func_normal_abspath "$1"
+    func_relative_path_tlibdir=$func_normal_abspath_result
+    func_normal_abspath "$2"
+    func_relative_path_tbindir=$func_normal_abspath_result
 
-    # bash bug again:
+    # Ascend the tree starting from libdir
+    while :; do
+      # check if we have found a prefix of bindir
+      case $func_relative_path_tbindir in
+        $func_relative_path_tlibdir)
+          # found an exact match
+          func_relative_path_tcancelled=
+          break
+          ;;
+        $func_relative_path_tlibdir*)
+          # found a matching prefix
+          func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+          func_relative_path_tcancelled=$func_stripname_result
+          if test -z "$func_relative_path_result"; then
+            func_relative_path_result=.
+          fi
+          break
+          ;;
+        *)
+          func_dirname $func_relative_path_tlibdir
+          func_relative_path_tlibdir=$func_dirname_result
+          if test -z "$func_relative_path_tlibdir"; then
+            # Have to descend all the way to the root!
+            func_relative_path_result=../$func_relative_path_result
+            func_relative_path_tcancelled=$func_relative_path_tbindir
+            break
+          fi
+          func_relative_path_result=../$func_relative_path_result
+          ;;
+      esac
+    done
+
+    # Now calculate path; take care to avoid doubling-up slashes.
+    func_stripname '' '/' "$func_relative_path_result"
+    func_relative_path_result=$func_stripname_result
+    func_stripname '/' '/' "$func_relative_path_tcancelled"
+    if test -n "$func_stripname_result"; then
+      func_append func_relative_path_result "/$func_stripname_result"
+    fi
+
+    # Normalisation. If bindir is libdir, return '.' else relative path.
+    if test -n "$func_relative_path_result"; then
+      func_stripname './' '' "$func_relative_path_result"
+      func_relative_path_result=$func_stripname_result
+    fi
+
+    test -n "$func_relative_path_result" || func_relative_path_result=.
+
     :
 }
 
-# func_fatal_error arg...
-# Echo program name prefixed message to standard error, and exit.
-func_fatal_error ()
-{
-    func_error ${1+"$@"}
-    exit $EXIT_FAILURE
-}
 
-# func_fatal_help arg...
-# Echo program name prefixed message to standard error, followed by
-# a help hint, and exit.
-func_fatal_help ()
-{
-    func_error ${1+"$@"}
-    func_fatal_error "$help"
-}
-help="Try \`$progname --help' for more information."  ## default
-
-
-# func_grep expression filename
-# Check whether EXPRESSION matches any line of FILENAME, without output.
-func_grep ()
-{
-    $GREP "$1" "$2" >/dev/null 2>&1
-}
-
-
-# func_mkdir_p directory-path
-# Make sure the entire path to DIRECTORY-PATH is available.
-func_mkdir_p ()
-{
-    my_directory_path="$1"
-    my_dir_list=
-
-    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
-
-      # Protect directory names starting with `-'
-      case $my_directory_path in
-        -*) my_directory_path="./$my_directory_path" ;;
-      esac
-
-      # While some portion of DIR does not yet exist...
-      while test ! -d "$my_directory_path"; do
-        # ...make a list in topmost first order.  Use a colon delimited
-	# list incase some portion of path contains whitespace.
-        my_dir_list="$my_directory_path:$my_dir_list"
-
-        # If the last portion added has no slash in it, the list is done
-        case $my_directory_path in */*) ;; *) break ;; esac
-
-        # ...otherwise throw away the child directory and loop
-        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
-      done
-      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
-
-      save_mkdir_p_IFS="$IFS"; IFS=':'
-      for my_dir in $my_dir_list; do
-	IFS="$save_mkdir_p_IFS"
-        # mkdir can fail with a `File exist' error if two processes
-        # try to create one of the directories concurrently.  Don't
-        # stop in that case!
-        $MKDIR "$my_dir" 2>/dev/null || :
-      done
-      IFS="$save_mkdir_p_IFS"
-
-      # Bail out if we (or some other process) failed to create a directory.
-      test -d "$my_directory_path" || \
-        func_fatal_error "Failed to create \`$1'"
-    fi
-}
-
-
-# func_mktempdir [string]
-# Make a temporary directory that won't clash with other running
-# libtool processes, and avoids race conditions if possible.  If
-# given, STRING is the basename for that directory.
-func_mktempdir ()
-{
-    my_template="${TMPDIR-/tmp}/${1-$progname}"
-
-    if test "$opt_dry_run" = ":"; then
-      # Return a directory name, but don't create it in dry-run mode
-      my_tmpdir="${my_template}-$$"
-    else
-
-      # If mktemp works, use that first and foremost
-      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
-
-      if test ! -d "$my_tmpdir"; then
-        # Failing that, at least try and use $RANDOM to avoid a race
-        my_tmpdir="${my_template}-${RANDOM-0}$$"
-
-        save_mktempdir_umask=`umask`
-        umask 0077
-        $MKDIR "$my_tmpdir"
-        umask $save_mktempdir_umask
-      fi
-
-      # If we're not in dry-run mode, bomb out on failure
-      test -d "$my_tmpdir" || \
-        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
-    fi
-
-    $ECHO "$my_tmpdir"
-}
-
-
-# func_quote_for_eval arg
-# Aesthetically quote ARG to be evaled later.
-# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
-# is double-quoted, suitable for a subsequent eval, whereas
-# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
-# which are still active within double quotes backslashified.
+# func_quote_for_eval ARG...
+# --------------------------
+# Aesthetically quote ARGs to be evaled later.
+# This function returns two values:
+#   i) func_quote_for_eval_result
+#      double-quoted, suitable for a subsequent eval
+#  ii) func_quote_for_eval_unquoted_result
+#      has all characters that are still active within double
+#      quotes backslashified.
 func_quote_for_eval ()
 {
-    case $1 in
-      *[\\\`\"\$]*)
-	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
-      *)
-        func_quote_for_eval_unquoted_result="$1" ;;
-    esac
+    $debug_cmd
 
-    case $func_quote_for_eval_unquoted_result in
-      # Double-quote args containing shell metacharacters to delay
-      # word splitting, command substitution and and variable
-      # expansion for a subsequent eval.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, so we specify it separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
-        ;;
-      *)
-        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
-    esac
+    func_quote_for_eval_unquoted_result=
+    func_quote_for_eval_result=
+    while test 0 -lt $#; do
+      case $1 in
+        *[\\\`\"\$]*)
+	  _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
+        *)
+          _G_unquoted_arg=$1 ;;
+      esac
+      if test -n "$func_quote_for_eval_unquoted_result"; then
+	func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
+      else
+        func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
+      fi
+
+      case $_G_unquoted_arg in
+        # Double-quote args containing shell metacharacters to delay
+        # word splitting, command substitution and variable expansion
+        # for a subsequent eval.
+        # Many Bourne shells cannot handle close brackets correctly
+        # in scan sets, so we specify it separately.
+        *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+          _G_quoted_arg=\"$_G_unquoted_arg\"
+          ;;
+        *)
+          _G_quoted_arg=$_G_unquoted_arg
+	  ;;
+      esac
+
+      if test -n "$func_quote_for_eval_result"; then
+	func_append func_quote_for_eval_result " $_G_quoted_arg"
+      else
+        func_append func_quote_for_eval_result "$_G_quoted_arg"
+      fi
+      shift
+    done
 }
 
 
-# func_quote_for_expand arg
+# func_quote_for_expand ARG
+# -------------------------
 # Aesthetically quote ARG to be evaled later; same as above,
 # but do not quote variable references.
 func_quote_for_expand ()
 {
+    $debug_cmd
+
     case $1 in
       *[\\\`\"]*)
-	my_arg=`$ECHO "$1" | $SED \
-	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+	_G_arg=`$ECHO "$1" | $SED \
+	    -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
       *)
-        my_arg="$1" ;;
+        _G_arg=$1 ;;
     esac
 
-    case $my_arg in
+    case $_G_arg in
       # Double-quote args containing shell metacharacters to delay
       # word splitting and command substitution for a subsequent eval.
       # Many Bourne shells cannot handle close brackets correctly
       # in scan sets, so we specify it separately.
       *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-        my_arg="\"$my_arg\""
+        _G_arg=\"$_G_arg\"
         ;;
     esac
 
-    func_quote_for_expand_result="$my_arg"
+    func_quote_for_expand_result=$_G_arg
 }
 
 
-# func_show_eval cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# func_stripname PREFIX SUFFIX NAME
+# ---------------------------------
+# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_stripname ()
+  {
+    $debug_cmd
+
+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+    # positional parameters, so assign one to ordinary variable first.
+    func_stripname_result=$3
+    func_stripname_result=${func_stripname_result#"$1"}
+    func_stripname_result=${func_stripname_result%"$2"}
+  }'
+else
+  func_stripname ()
+  {
+    $debug_cmd
+
+    case $2 in
+      .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
+      *)  func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
+    esac
+  }
+fi
+
+
+# func_show_eval CMD [FAIL_EXP]
+# -----------------------------
+# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
 # not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
 # is given, then evaluate it.
 func_show_eval ()
 {
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
+    $debug_cmd
 
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
-      eval "func_echo $func_quote_for_expand_result"
-    }
+    _G_cmd=$1
+    _G_fail_exp=${2-':'}
 
-    if ${opt_dry_run-false}; then :; else
-      eval "$my_cmd"
-      my_status=$?
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
+    func_quote_for_expand "$_G_cmd"
+    eval "func_notquiet $func_quote_for_expand_result"
+
+    $opt_dry_run || {
+      eval "$_G_cmd"
+      _G_status=$?
+      if test 0 -ne "$_G_status"; then
+	eval "(exit $_G_status); $_G_fail_exp"
       fi
-    fi
+    }
 }
 
 
-# func_show_eval_locale cmd [fail_exp]
-# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# func_show_eval_locale CMD [FAIL_EXP]
+# ------------------------------------
+# Unless opt_quiet is true, then output CMD.  Then, if opt_dryrun is
 # not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
 # is given, then evaluate it.  Use the saved locale for evaluation.
 func_show_eval_locale ()
 {
-    my_cmd="$1"
-    my_fail_exp="${2-:}"
+    $debug_cmd
 
-    ${opt_silent-false} || {
-      func_quote_for_expand "$my_cmd"
+    _G_cmd=$1
+    _G_fail_exp=${2-':'}
+
+    $opt_quiet || {
+      func_quote_for_expand "$_G_cmd"
       eval "func_echo $func_quote_for_expand_result"
     }
 
-    if ${opt_dry_run-false}; then :; else
-      eval "$lt_user_locale
-	    $my_cmd"
-      my_status=$?
-      eval "$lt_safe_locale"
-      if test "$my_status" -eq 0; then :; else
-	eval "(exit $my_status); $my_fail_exp"
+    $opt_dry_run || {
+      eval "$_G_user_locale
+	    $_G_cmd"
+      _G_status=$?
+      eval "$_G_safe_locale"
+      if test 0 -ne "$_G_status"; then
+	eval "(exit $_G_status); $_G_fail_exp"
       fi
-    fi
+    }
 }
 
+
 # func_tr_sh
+# ----------
 # Turn $1 into a string suitable for a shell variable name.
 # Result is stored in $func_tr_sh_result.  All characters
 # not in the set a-zA-Z0-9_ are replaced with '_'. Further,
 # if $1 begins with a digit, a '_' is prepended as well.
 func_tr_sh ()
 {
-  case $1 in
-  [0-9]* | *[!a-zA-Z0-9_]*)
-    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
-    ;;
-  * )
-    func_tr_sh_result=$1
-    ;;
-  esac
+    $debug_cmd
+
+    case $1 in
+    [0-9]* | *[!a-zA-Z0-9_]*)
+      func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`
+      ;;
+    * )
+      func_tr_sh_result=$1
+      ;;
+    esac
 }
 
 
-# func_version
-# Echo version message to standard output and exit.
-func_version ()
+# func_verbose ARG...
+# -------------------
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
 {
-    $opt_debug
+    $debug_cmd
 
-    $SED -n '/(C)/!b go
-	:more
-	/\./!{
-	  N
-	  s/\n# / /
-	  b more
-	}
-	:go
-	/^# '$PROGRAM' (GNU /,/# warranty; / {
-        s/^# //
-	s/^# *$//
-        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
-        p
-     }' < "$progpath"
-     exit $?
+    $opt_verbose && func_echo "$*"
+
+    :
 }
 
-# func_usage
-# Echo short help message to standard output and exit.
-func_usage ()
+
+# func_warn_and_continue ARG...
+# -----------------------------
+# Echo program name prefixed warning message to standard error.
+func_warn_and_continue ()
 {
-    $opt_debug
+    $debug_cmd
 
-    $SED -n '/^# Usage:/,/^#  *.*--help/ {
-        s/^# //
-	s/^# *$//
-	s/\$progname/'$progname'/
-	p
-    }' < "$progpath"
-    echo
-    $ECHO "run \`$progname --help | more' for full usage"
-    exit $?
+    $require_term_colors
+
+    func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
 }
 
-# func_help [NOEXIT]
-# Echo long help message to standard output and exit,
-# unless 'noexit' is passed as argument.
+
+# func_warning CATEGORY ARG...
+# ----------------------------
+# Echo program name prefixed warning message to standard error. Warning
+# messages can be filtered according to CATEGORY, where this function
+# elides messages where CATEGORY is not listed in the global variable
+# 'opt_warning_types'.
+func_warning ()
+{
+    $debug_cmd
+
+    # CATEGORY must be in the warning_categories list!
+    case " $warning_categories " in
+      *" $1 "*) ;;
+      *) func_internal_error "invalid warning category '$1'" ;;
+    esac
+
+    _G_category=$1
+    shift
+
+    case " $opt_warning_types " in
+      *" $_G_category "*) $warning_func ${1+"$@"} ;;
+    esac
+}
+
+
+# func_sort_ver VER1 VER2
+# -----------------------
+# 'sort -V' is not generally available.
+# Note this deviates from the version comparison in automake
+# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
+# but this should suffice as we won't be specifying old
+# version formats or redundant trailing .0 in bootstrap.conf.
+# If we did want full compatibility then we should probably
+# use m4_version_compare from autoconf.
+func_sort_ver ()
+{
+    $debug_cmd
+
+    printf '%s\n%s\n' "$1" "$2" \
+      | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
+}
+
+# func_lt_ver PREV CURR
+# ---------------------
+# Return true if PREV and CURR are in the correct order according to
+# func_sort_ver, otherwise false.  Use it like this:
+#
+#  func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
+func_lt_ver ()
+{
+    $debug_cmd
+
+    test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+#! /bin/sh
+
+# Set a version string for this script.
+scriptversion=2014-01-07.03; # UTC
+
+# A portable, pluggable option parser for Bourne shell.
+# Written by Gary V. Vaughan, 2010
+
+# Copyright (C) 2010-2015 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program 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 General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Please report bugs or propose patches to gary@gnu.org.
+
+
+## ------ ##
+## Usage. ##
+## ------ ##
+
+# This file is a library for parsing options in your shell scripts along
+# with assorted other useful supporting features that you can make use
+# of too.
+#
+# For the simplest scripts you might need only:
+#
+#   #!/bin/sh
+#   . relative/path/to/funclib.sh
+#   . relative/path/to/options-parser
+#   scriptversion=1.0
+#   func_options ${1+"$@"}
+#   eval set dummy "$func_options_result"; shift
+#   ...rest of your script...
+#
+# In order for the '--version' option to work, you will need to have a
+# suitably formatted comment like the one at the top of this file
+# starting with '# Written by ' and ending with '# warranty; '.
+#
+# For '-h' and '--help' to work, you will also need a one line
+# description of your script's purpose in a comment directly above the
+# '# Written by ' line, like the one at the top of this file.
+#
+# The default options also support '--debug', which will turn on shell
+# execution tracing (see the comment above debug_cmd below for another
+# use), and '--verbose' and the func_verbose function to allow your script
+# to display verbose messages only when your user has specified
+# '--verbose'.
+#
+# After sourcing this file, you can plug processing for additional
+# options by amending the variables from the 'Configuration' section
+# below, and following the instructions in the 'Option parsing'
+# section further down.
+
+## -------------- ##
+## Configuration. ##
+## -------------- ##
+
+# You should override these variables in your script after sourcing this
+# file so that they reflect the customisations you have added to the
+# option parser.
+
+# The usage line for option parsing errors and the start of '-h' and
+# '--help' output messages. You can embed shell variables for delayed
+# expansion at the time the message is displayed, but you will need to
+# quote other shell meta-characters carefully to prevent them being
+# expanded when the contents are evaled.
+usage='$progpath [OPTION]...'
+
+# Short help message in response to '-h' and '--help'.  Add to this or
+# override it after sourcing this library to reflect the full set of
+# options your script accepts.
+usage_message="\
+       --debug        enable verbose shell tracing
+   -W, --warnings=CATEGORY
+                      report the warnings falling in CATEGORY [all]
+   -v, --verbose      verbosely report processing
+       --version      print version information and exit
+   -h, --help         print short or long help message and exit
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+long_help_message="
+Warning categories include:
+       'all'          show all warnings
+       'none'         turn off all the warnings
+       'error'        warnings are treated as fatal errors"
+
+# Help message printed before fatal option parsing errors.
+fatal_help="Try '\$progname --help' for more information."
+
+
+
+## ------------------------- ##
+## Hook function management. ##
+## ------------------------- ##
+
+# This section contains functions for adding, removing, and running hooks
+# to the main code.  A hook is just a named list of of function, that can
+# be run in order later on.
+
+# func_hookable FUNC_NAME
+# -----------------------
+# Declare that FUNC_NAME will run hooks added with
+# 'func_add_hook FUNC_NAME ...'.
+func_hookable ()
+{
+    $debug_cmd
+
+    func_append hookable_fns " $1"
+}
+
+
+# func_add_hook FUNC_NAME HOOK_FUNC
+# ---------------------------------
+# Request that FUNC_NAME call HOOK_FUNC before it returns.  FUNC_NAME must
+# first have been declared "hookable" by a call to 'func_hookable'.
+func_add_hook ()
+{
+    $debug_cmd
+
+    case " $hookable_fns " in
+      *" $1 "*) ;;
+      *) func_fatal_error "'$1' does not accept hook functions." ;;
+    esac
+
+    eval func_append ${1}_hooks '" $2"'
+}
+
+
+# func_remove_hook FUNC_NAME HOOK_FUNC
+# ------------------------------------
+# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
+func_remove_hook ()
+{
+    $debug_cmd
+
+    eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
+}
+
+
+# func_run_hooks FUNC_NAME [ARG]...
+# ---------------------------------
+# Run all hook functions registered to FUNC_NAME.
+# It is assumed that the list of hook functions contains nothing more
+# than a whitespace-delimited list of legal shell function names, and
+# no effort is wasted trying to catch shell meta-characters or preserve
+# whitespace.
+func_run_hooks ()
+{
+    $debug_cmd
+
+    case " $hookable_fns " in
+      *" $1 "*) ;;
+      *) func_fatal_error "'$1' does not support hook funcions.n" ;;
+    esac
+
+    eval _G_hook_fns=\$$1_hooks; shift
+
+    for _G_hook in $_G_hook_fns; do
+      eval $_G_hook '"$@"'
+
+      # store returned options list back into positional
+      # parameters for next 'cmd' execution.
+      eval _G_hook_result=\$${_G_hook}_result
+      eval set dummy "$_G_hook_result"; shift
+    done
+
+    func_quote_for_eval ${1+"$@"}
+    func_run_hooks_result=$func_quote_for_eval_result
+}
+
+
+
+## --------------- ##
+## Option parsing. ##
+## --------------- ##
+
+# In order to add your own option parsing hooks, you must accept the
+# full positional parameter list in your hook function, remove any
+# options that you action, and then pass back the remaining unprocessed
+# options in '<hooked_function_name>_result', escaped suitably for
+# 'eval'.  Like this:
+#
+#    my_options_prep ()
+#    {
+#        $debug_cmd
+#
+#        # Extend the existing usage message.
+#        usage_message=$usage_message'
+#      -s, --silent       don'\''t print informational messages
+#    '
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_options_prep_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_options_prep my_options_prep
+#
+#
+#    my_silent_option ()
+#    {
+#        $debug_cmd
+#
+#        # Note that for efficiency, we parse as many options as we can
+#        # recognise in a loop before passing the remainder back to the
+#        # caller on the first unrecognised argument we encounter.
+#        while test $# -gt 0; do
+#          opt=$1; shift
+#          case $opt in
+#            --silent|-s) opt_silent=: ;;
+#            # Separate non-argument short options:
+#            -s*)         func_split_short_opt "$_G_opt"
+#                         set dummy "$func_split_short_opt_name" \
+#                             "-$func_split_short_opt_arg" ${1+"$@"}
+#                         shift
+#                         ;;
+#            *)            set dummy "$_G_opt" "$*"; shift; break ;;
+#          esac
+#        done
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_silent_option_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_parse_options my_silent_option
+#
+#
+#    my_option_validation ()
+#    {
+#        $debug_cmd
+#
+#        $opt_silent && $opt_verbose && func_fatal_help "\
+#    '--silent' and '--verbose' options are mutually exclusive."
+#
+#        func_quote_for_eval ${1+"$@"}
+#        my_option_validation_result=$func_quote_for_eval_result
+#    }
+#    func_add_hook func_validate_options my_option_validation
+#
+# You'll alse need to manually amend $usage_message to reflect the extra
+# options you parse.  It's preferable to append if you can, so that
+# multiple option parsing hooks can be added safely.
+
+
+# func_options [ARG]...
+# ---------------------
+# All the functions called inside func_options are hookable. See the
+# individual implementations for details.
+func_hookable func_options
+func_options ()
+{
+    $debug_cmd
+
+    func_options_prep ${1+"$@"}
+    eval func_parse_options \
+        ${func_options_prep_result+"$func_options_prep_result"}
+    eval func_validate_options \
+        ${func_parse_options_result+"$func_parse_options_result"}
+
+    eval func_run_hooks func_options \
+        ${func_validate_options_result+"$func_validate_options_result"}
+
+    # save modified positional parameters for caller
+    func_options_result=$func_run_hooks_result
+}
+
+
+# func_options_prep [ARG]...
+# --------------------------
+# All initialisations required before starting the option parse loop.
+# Note that when calling hook functions, we pass through the list of
+# positional parameters.  If a hook function modifies that list, and
+# needs to propogate that back to rest of this script, then the complete
+# modified list must be put in 'func_run_hooks_result' before
+# returning.
+func_hookable func_options_prep
+func_options_prep ()
+{
+    $debug_cmd
+
+    # Option defaults:
+    opt_verbose=false
+    opt_warning_types=
+
+    func_run_hooks func_options_prep ${1+"$@"}
+
+    # save modified positional parameters for caller
+    func_options_prep_result=$func_run_hooks_result
+}
+
+
+# func_parse_options [ARG]...
+# ---------------------------
+# The main option parsing loop.
+func_hookable func_parse_options
+func_parse_options ()
+{
+    $debug_cmd
+
+    func_parse_options_result=
+
+    # this just eases exit handling
+    while test $# -gt 0; do
+      # Defer to hook functions for initial option parsing, so they
+      # get priority in the event of reusing an option name.
+      func_run_hooks func_parse_options ${1+"$@"}
+
+      # Adjust func_parse_options positional parameters to match
+      eval set dummy "$func_run_hooks_result"; shift
+
+      # Break out of the loop if we already parsed every option.
+      test $# -gt 0 || break
+
+      _G_opt=$1
+      shift
+      case $_G_opt in
+        --debug|-x)   debug_cmd='set -x'
+                      func_echo "enabling shell trace mode"
+                      $debug_cmd
+                      ;;
+
+        --no-warnings|--no-warning|--no-warn)
+                      set dummy --warnings none ${1+"$@"}
+                      shift
+		      ;;
+
+        --warnings|--warning|-W)
+                      test $# = 0 && func_missing_arg $_G_opt && break
+                      case " $warning_categories $1" in
+                        *" $1 "*)
+                          # trailing space prevents matching last $1 above
+                          func_append_uniq opt_warning_types " $1"
+                          ;;
+                        *all)
+                          opt_warning_types=$warning_categories
+                          ;;
+                        *none)
+                          opt_warning_types=none
+                          warning_func=:
+                          ;;
+                        *error)
+                          opt_warning_types=$warning_categories
+                          warning_func=func_fatal_error
+                          ;;
+                        *)
+                          func_fatal_error \
+                             "unsupported warning category: '$1'"
+                          ;;
+                      esac
+                      shift
+                      ;;
+
+        --verbose|-v) opt_verbose=: ;;
+        --version)    func_version ;;
+        -\?|-h)       func_usage ;;
+        --help)       func_help ;;
+
+	# Separate optargs to long options (plugins may need this):
+	--*=*)        func_split_equals "$_G_opt"
+	              set dummy "$func_split_equals_lhs" \
+                          "$func_split_equals_rhs" ${1+"$@"}
+                      shift
+                      ;;
+
+       # Separate optargs to short options:
+        -W*)
+                      func_split_short_opt "$_G_opt"
+                      set dummy "$func_split_short_opt_name" \
+                          "$func_split_short_opt_arg" ${1+"$@"}
+                      shift
+                      ;;
+
+        # Separate non-argument short options:
+        -\?*|-h*|-v*|-x*)
+                      func_split_short_opt "$_G_opt"
+                      set dummy "$func_split_short_opt_name" \
+                          "-$func_split_short_opt_arg" ${1+"$@"}
+                      shift
+                      ;;
+
+        --)           break ;;
+        -*)           func_fatal_help "unrecognised option: '$_G_opt'" ;;
+        *)            set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
+      esac
+    done
+
+    # save modified positional parameters for caller
+    func_quote_for_eval ${1+"$@"}
+    func_parse_options_result=$func_quote_for_eval_result
+}
+
+
+# func_validate_options [ARG]...
+# ------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+func_hookable func_validate_options
+func_validate_options ()
+{
+    $debug_cmd
+
+    # Display all warnings if -W was not given.
+    test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"
+
+    func_run_hooks func_validate_options ${1+"$@"}
+
+    # Bail if the options were screwed!
+    $exit_cmd $EXIT_FAILURE
+
+    # save modified positional parameters for caller
+    func_validate_options_result=$func_run_hooks_result
+}
+
+
+
+## ----------------- ##
+## Helper functions. ##
+## ----------------- ##
+
+# This section contains the helper functions used by the rest of the
+# hookable option parser framework in ascii-betical order.
+
+
+# func_fatal_help ARG...
+# ----------------------
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    $debug_cmd
+
+    eval \$ECHO \""Usage: $usage"\"
+    eval \$ECHO \""$fatal_help"\"
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
+
+
+# func_help
+# ---------
+# Echo long help message to standard output and exit.
 func_help ()
 {
-    $opt_debug
+    $debug_cmd
 
-    $SED -n '/^# Usage:/,/# Report bugs to/ {
-	:print
-        s/^# //
-	s/^# *$//
-	s*\$progname*'$progname'*
-	s*\$host*'"$host"'*
-	s*\$SHELL*'"$SHELL"'*
-	s*\$LTCC*'"$LTCC"'*
-	s*\$LTCFLAGS*'"$LTCFLAGS"'*
-	s*\$LD*'"$LD"'*
-	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
-	p
-	d
-     }
-     /^# .* home page:/b print
-     /^# General help using/b print
-     ' < "$progpath"
-    ret=$?
-    if test -z "$1"; then
-      exit $ret
-    fi
+    func_usage_message
+    $ECHO "$long_help_message"
+    exit 0
 }
 
-# func_missing_arg argname
+
+# func_missing_arg ARGNAME
+# ------------------------
 # Echo program name prefixed message to standard error and set global
 # exit_cmd.
 func_missing_arg ()
 {
-    $opt_debug
+    $debug_cmd
 
-    func_error "missing argument for $1."
+    func_error "Missing argument for '$1'."
     exit_cmd=exit
 }
 
 
-# func_split_short_opt shortopt
+# func_split_equals STRING
+# ------------------------
+# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
+# splitting STRING at the '=' sign.
+test -z "$_G_HAVE_XSI_OPS" \
+    && (eval 'x=a/b/c;
+      test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
+    && _G_HAVE_XSI_OPS=yes
+
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_split_equals ()
+  {
+      $debug_cmd
+
+      func_split_equals_lhs=${1%%=*}
+      func_split_equals_rhs=${1#*=}
+      test "x$func_split_equals_lhs" = "x$1" \
+        && func_split_equals_rhs=
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_split_equals ()
+  {
+      $debug_cmd
+
+      func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
+      func_split_equals_rhs=
+      test "x$func_split_equals_lhs" = "x$1" \
+        || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
+  }
+fi #func_split_equals
+
+
+# func_split_short_opt SHORTOPT
+# -----------------------------
 # Set func_split_short_opt_name and func_split_short_opt_arg shell
 # variables after splitting SHORTOPT after the 2nd character.
-func_split_short_opt ()
+if test yes = "$_G_HAVE_XSI_OPS"
+then
+  # This is an XSI compatible shell, allowing a faster implementation...
+  eval 'func_split_short_opt ()
+  {
+      $debug_cmd
+
+      func_split_short_opt_arg=${1#??}
+      func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
+  }'
+else
+  # ...otherwise fall back to using expr, which is often a shell builtin.
+  func_split_short_opt ()
+  {
+      $debug_cmd
+
+      func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
+      func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
+  }
+fi #func_split_short_opt
+
+
+# func_usage
+# ----------
+# Echo short help message to standard output and exit.
+func_usage ()
 {
-    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
-    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+    $debug_cmd
 
-    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
-    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
-} # func_split_short_opt may be replaced by extended shell implementation
+    func_usage_message
+    $ECHO "Run '$progname --help |${PAGER-more}' for full usage"
+    exit 0
+}
 
 
-# func_split_long_opt longopt
-# Set func_split_long_opt_name and func_split_long_opt_arg shell
-# variables after splitting LONGOPT at the `=' sign.
-func_split_long_opt ()
+# func_usage_message
+# ------------------
+# Echo short help message to standard output.
+func_usage_message ()
 {
-    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
-    my_sed_long_arg='1s/^--[^=]*=//'
+    $debug_cmd
 
-    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
-    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
-} # func_split_long_opt may be replaced by extended shell implementation
-
-exit_cmd=:
+    eval \$ECHO \""Usage: $usage"\"
+    echo
+    $SED -n 's|^# ||
+        /^Written by/{
+          x;p;x
+        }
+	h
+	/^Written by/q' < "$progpath"
+    echo
+    eval \$ECHO \""$usage_message"\"
+}
 
 
-
-
-
-magic="%%%MAGIC variable%%%"
-magic_exe="%%%MAGIC EXE variable%%%"
-
-# Global variables.
-nonopt=
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
-
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
+# func_version
+# ------------
+# Echo version message to standard output and exit.
+func_version ()
 {
-    eval "${1}=\$${1}\${2}"
-} # func_append may be replaced by extended shell implementation
+    $debug_cmd
 
-# func_append_quoted var value
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-func_append_quoted ()
+    printf '%s\n' "$progname $scriptversion"
+    $SED -n '
+        /(C)/!b go
+        :more
+        /\./!{
+          N
+          s|\n# | |
+          b more
+        }
+        :go
+        /^# Written by /,/# warranty; / {
+          s|^# ||
+          s|^# *$||
+          s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
+          p
+        }
+        /^# Written by / {
+          s|^# ||
+          p
+        }
+        /^warranty; /q' < "$progpath"
+
+    exit $?
+}
+
+
+# Local variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'before-save-hook 'time-stamp)
+# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
+# time-stamp-time-zone: "UTC"
+# End:
+
+# Set a version string.
+scriptversion='(GNU libtool) 2.4.6'
+
+
+# func_echo ARG...
+# ----------------
+# Libtool also displays the current mode in messages, so override
+# funclib.sh func_echo with this custom definition.
+func_echo ()
 {
-    func_quote_for_eval "${2}"
-    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
-} # func_append_quoted may be replaced by extended shell implementation
+    $debug_cmd
+
+    _G_message=$*
+
+    func_echo_IFS=$IFS
+    IFS=$nl
+    for _G_line in $_G_message; do
+      IFS=$func_echo_IFS
+      $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
+    done
+    IFS=$func_echo_IFS
+}
 
 
-# func_arith arithmetic-term...
-func_arith ()
+# func_warning ARG...
+# -------------------
+# Libtool warnings are not categorized, so override funclib.sh
+# func_warning with this simpler definition.
+func_warning ()
 {
-    func_arith_result=`expr "${@}"`
-} # func_arith may be replaced by extended shell implementation
+    $debug_cmd
+
+    $warning_func ${1+"$@"}
+}
 
 
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
+## ---------------- ##
+## Options parsing. ##
+## ---------------- ##
+
+# Hook in the functions to make sure our own options are parsed during
+# the option parsing loop.
+
+usage='$progpath [OPTION]... [MODE-ARG]...'
+
+# Short help message in response to '-h'.
+usage_message="Options:
+       --config             show all configuration variables
+       --debug              enable verbose shell tracing
+   -n, --dry-run            display commands without modifying any files
+       --features           display basic configuration information and exit
+       --mode=MODE          use operation mode MODE
+       --no-warnings        equivalent to '-Wnone'
+       --preserve-dup-deps  don't remove duplicate dependency libraries
+       --quiet, --silent    don't print informational messages
+       --tag=TAG            use configuration variables from tag TAG
+   -v, --verbose            print more informational messages than default
+       --version            print version information
+   -W, --warnings=CATEGORY  report the warnings falling in CATEGORY [all]
+   -h, --help, --help-all   print short, long, or detailed help message
+"
+
+# Additional text appended to 'usage_message' in response to '--help'.
+func_help ()
 {
-    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
-} # func_len may be replaced by extended shell implementation
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "$long_help_message
+
+MODE must be one of the following:
+
+       clean           remove files from the build directory
+       compile         compile a source file into a libtool object
+       execute         automatically set library path, then run a program
+       finish          complete the installation of libtool libraries
+       install         install libraries or executables
+       link            create a library or an executable
+       uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  When passed as first option,
+'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
+Try '$progname --help --mode=MODE' for a more detailed description of MODE.
+
+When reporting a bug, please describe a test case to reproduce it and
+include the following information:
+
+       host-triplet:   $host
+       shell:          $SHELL
+       compiler:       $LTCC
+       compiler flags: $LTCFLAGS
+       linker:         $LD (gnu? $with_gnu_ld)
+       version:        $progname (GNU libtool) 2.4.6
+       automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
+       autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
+
+Report bugs to <bug-libtool@gnu.org>.
+GNU libtool home page: <http://www.gnu.org/s/libtool/>.
+General help using GNU software: <http://www.gnu.org/gethelp/>."
+    exit 0
+}
 
 
-# func_lo2o object
-func_lo2o ()
-{
-    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
-} # func_lo2o may be replaced by extended shell implementation
+# func_lo2o OBJECT-NAME
+# ---------------------
+# Transform OBJECT-NAME from a '.lo' suffix to the platform specific
+# object suffix.
+
+lo2o=s/\\.lo\$/.$objext/
+o2lo=s/\\.$objext\$/.lo/
+
+if test yes = "$_G_HAVE_XSI_OPS"; then
+  eval 'func_lo2o ()
+  {
+    case $1 in
+      *.lo) func_lo2o_result=${1%.lo}.$objext ;;
+      *   ) func_lo2o_result=$1               ;;
+    esac
+  }'
+
+  # func_xform LIBOBJ-OR-SOURCE
+  # ---------------------------
+  # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
+  # suffix to a '.lo' libtool-object suffix.
+  eval 'func_xform ()
+  {
+    func_xform_result=${1%.*}.lo
+  }'
+else
+  # ...otherwise fall back to using sed.
+  func_lo2o ()
+  {
+    func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
+  }
+
+  func_xform ()
+  {
+    func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`
+  }
+fi
 
 
-# func_xform libobj-or-source
-func_xform ()
-{
-    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
-} # func_xform may be replaced by extended shell implementation
-
-
-# func_fatal_configuration arg...
+# func_fatal_configuration ARG...
+# -------------------------------
 # Echo program name prefixed message to standard error, followed by
 # a configuration failure hint, and exit.
 func_fatal_configuration ()
 {
-    func_error ${1+"$@"}
-    func_error "See the $PACKAGE documentation for more information."
-    func_fatal_error "Fatal configuration error."
+    func__fatal_error ${1+"$@"} \
+      "See the $PACKAGE documentation for more information." \
+      "Fatal configuration error."
 }
 
 
 # func_config
+# -----------
 # Display the configuration for all the tags in this script.
 func_config ()
 {
@@ -915,17 +2149,19 @@
     exit $?
 }
 
+
 # func_features
+# -------------
 # Display the features supported by this script.
 func_features ()
 {
     echo "host: $host"
-    if test "$build_libtool_libs" = yes; then
+    if test yes = "$build_libtool_libs"; then
       echo "enable shared libraries"
     else
       echo "disable shared libraries"
     fi
-    if test "$build_old_libs" = yes; then
+    if test yes = "$build_old_libs"; then
       echo "enable static libraries"
     else
       echo "disable static libraries"
@@ -934,314 +2170,350 @@
     exit $?
 }
 
-# func_enable_tag tagname
+
+# func_enable_tag TAGNAME
+# -----------------------
 # Verify that TAGNAME is valid, and either flag an error and exit, or
 # enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
 # variable here.
 func_enable_tag ()
 {
-  # Global variable:
-  tagname="$1"
+    # Global variable:
+    tagname=$1
 
-  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
-  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
-  sed_extractcf="/$re_begincf/,/$re_endcf/p"
+    re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+    re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+    sed_extractcf=/$re_begincf/,/$re_endcf/p
 
-  # Validate tagname.
-  case $tagname in
-    *[!-_A-Za-z0-9,/]*)
-      func_fatal_error "invalid tag name: $tagname"
-      ;;
-  esac
+    # Validate tagname.
+    case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+        func_fatal_error "invalid tag name: $tagname"
+        ;;
+    esac
 
-  # Don't test for the "default" C tag, as we know it's
-  # there but not specially marked.
-  case $tagname in
-    CC) ;;
+    # Don't test for the "default" C tag, as we know it's
+    # there but not specially marked.
+    case $tagname in
+        CC) ;;
     *)
-      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
-	taglist="$taglist $tagname"
+        if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+	  taglist="$taglist $tagname"
 
-	# Evaluate the configuration.  Be careful to quote the path
-	# and the sed script, to avoid splitting on whitespace, but
-	# also don't use non-portable quotes within backquotes within
-	# quotes we have to do it in 2 steps:
-	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
-	eval "$extractedcf"
-      else
-	func_error "ignoring unknown tag $tagname"
-      fi
-      ;;
-  esac
+	  # Evaluate the configuration.  Be careful to quote the path
+	  # and the sed script, to avoid splitting on whitespace, but
+	  # also don't use non-portable quotes within backquotes within
+	  # quotes we have to do it in 2 steps:
+	  extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+	  eval "$extractedcf"
+        else
+	  func_error "ignoring unknown tag $tagname"
+        fi
+        ;;
+    esac
 }
 
+
 # func_check_version_match
+# ------------------------
 # Ensure that we are using m4 macros, and libtool script from the same
 # release of libtool.
 func_check_version_match ()
 {
-  if test "$package_revision" != "$macro_revision"; then
-    if test "$VERSION" != "$macro_version"; then
-      if test -z "$macro_version"; then
-        cat >&2 <<_LT_EOF
+    if test "$package_revision" != "$macro_revision"; then
+      if test "$VERSION" != "$macro_version"; then
+        if test -z "$macro_version"; then
+          cat >&2 <<_LT_EOF
 $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
 $progname: definition of this LT_INIT comes from an older release.
 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
 $progname: and run autoconf again.
 _LT_EOF
-      else
-        cat >&2 <<_LT_EOF
+        else
+          cat >&2 <<_LT_EOF
 $progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
 $progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
 $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
 $progname: and run autoconf again.
 _LT_EOF
-      fi
-    else
-      cat >&2 <<_LT_EOF
+        fi
+      else
+        cat >&2 <<_LT_EOF
 $progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
 $progname: but the definition of this LT_INIT comes from revision $macro_revision.
 $progname: You should recreate aclocal.m4 with macros from revision $package_revision
 $progname: of $PACKAGE $VERSION and run autoconf again.
 _LT_EOF
-    fi
+      fi
 
-    exit $EXIT_MISMATCH
-  fi
+      exit $EXIT_MISMATCH
+    fi
 }
 
 
-# Shorthand for --mode=foo, only valid as the first argument
-case $1 in
-clean|clea|cle|cl)
-  shift; set dummy --mode clean ${1+"$@"}; shift
-  ;;
-compile|compil|compi|comp|com|co|c)
-  shift; set dummy --mode compile ${1+"$@"}; shift
-  ;;
-execute|execut|execu|exec|exe|ex|e)
-  shift; set dummy --mode execute ${1+"$@"}; shift
-  ;;
-finish|finis|fini|fin|fi|f)
-  shift; set dummy --mode finish ${1+"$@"}; shift
-  ;;
-install|instal|insta|inst|ins|in|i)
-  shift; set dummy --mode install ${1+"$@"}; shift
-  ;;
-link|lin|li|l)
-  shift; set dummy --mode link ${1+"$@"}; shift
-  ;;
-uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-  shift; set dummy --mode uninstall ${1+"$@"}; shift
-  ;;
-esac
-
-
-
-# Option defaults:
-opt_debug=:
-opt_dry_run=false
-opt_config=false
-opt_preserve_dup_deps=false
-opt_features=false
-opt_finish=false
-opt_help=false
-opt_help_all=false
-opt_silent=:
-opt_warning=:
-opt_verbose=:
-opt_silent=false
-opt_verbose=false
-
-
-# Parse options once, thoroughly.  This comes as soon as possible in the
-# script to make things like `--version' happen as quickly as we can.
+# libtool_options_prep [ARG]...
+# -----------------------------
+# Preparation for options parsed by libtool.
+libtool_options_prep ()
 {
-  # this just eases exit handling
-  while test $# -gt 0; do
-    opt="$1"
-    shift
-    case $opt in
-      --debug|-x)	opt_debug='set -x'
-			func_echo "enabling shell trace mode"
-			$opt_debug
-			;;
-      --dry-run|--dryrun|-n)
-			opt_dry_run=:
-			;;
-      --config)
-			opt_config=:
-func_config
-			;;
-      --dlopen|-dlopen)
-			optarg="$1"
-			opt_dlopen="${opt_dlopen+$opt_dlopen
-}$optarg"
-			shift
-			;;
-      --preserve-dup-deps)
-			opt_preserve_dup_deps=:
-			;;
-      --features)
-			opt_features=:
-func_features
-			;;
-      --finish)
-			opt_finish=:
-set dummy --mode finish ${1+"$@"}; shift
-			;;
-      --help)
-			opt_help=:
-			;;
-      --help-all)
-			opt_help_all=:
-opt_help=': help-all'
-			;;
-      --mode)
-			test $# = 0 && func_missing_arg $opt && break
-			optarg="$1"
-			opt_mode="$optarg"
-case $optarg in
-  # Valid mode arguments:
-  clean|compile|execute|finish|install|link|relink|uninstall) ;;
+    $debug_mode
 
-  # Catch anything else as an error
-  *) func_error "invalid argument for $opt"
-     exit_cmd=exit
-     break
-     ;;
-esac
-			shift
-			;;
-      --no-silent|--no-quiet)
-			opt_silent=false
-func_append preserve_args " $opt"
-			;;
-      --no-warning|--no-warn)
-			opt_warning=false
-func_append preserve_args " $opt"
-			;;
-      --no-verbose)
-			opt_verbose=false
-func_append preserve_args " $opt"
-			;;
-      --silent|--quiet)
-			opt_silent=:
-func_append preserve_args " $opt"
-        opt_verbose=false
-			;;
-      --verbose|-v)
-			opt_verbose=:
-func_append preserve_args " $opt"
-opt_silent=false
-			;;
-      --tag)
-			test $# = 0 && func_missing_arg $opt && break
-			optarg="$1"
-			opt_tag="$optarg"
-func_append preserve_args " $opt $optarg"
-func_enable_tag "$optarg"
-			shift
-			;;
+    # Option defaults:
+    opt_config=false
+    opt_dlopen=
+    opt_dry_run=false
+    opt_help=false
+    opt_mode=
+    opt_preserve_dup_deps=false
+    opt_quiet=false
 
-      -\?|-h)		func_usage				;;
-      --help)		func_help				;;
-      --version)	func_version				;;
+    nonopt=
+    preserve_args=
 
-      # Separate optargs to long options:
-      --*=*)
-			func_split_long_opt "$opt"
-			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
-			shift
-			;;
-
-      # Separate non-argument short options:
-      -\?*|-h*|-n*|-v*)
-			func_split_short_opt "$opt"
-			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
-			shift
-			;;
-
-      --)		break					;;
-      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
-      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
+    # Shorthand for --mode=foo, only valid as the first argument
+    case $1 in
+    clean|clea|cle|cl)
+      shift; set dummy --mode clean ${1+"$@"}; shift
+      ;;
+    compile|compil|compi|comp|com|co|c)
+      shift; set dummy --mode compile ${1+"$@"}; shift
+      ;;
+    execute|execut|execu|exec|exe|ex|e)
+      shift; set dummy --mode execute ${1+"$@"}; shift
+      ;;
+    finish|finis|fini|fin|fi|f)
+      shift; set dummy --mode finish ${1+"$@"}; shift
+      ;;
+    install|instal|insta|inst|ins|in|i)
+      shift; set dummy --mode install ${1+"$@"}; shift
+      ;;
+    link|lin|li|l)
+      shift; set dummy --mode link ${1+"$@"}; shift
+      ;;
+    uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+      shift; set dummy --mode uninstall ${1+"$@"}; shift
+      ;;
     esac
-  done
 
-  # Validate options:
-
-  # save first non-option argument
-  if test "$#" -gt 0; then
-    nonopt="$opt"
-    shift
-  fi
-
-  # preserve --debug
-  test "$opt_debug" = : || func_append preserve_args " --debug"
-
-  case $host in
-    *cygwin* | *mingw* | *pw32* | *cegcc*)
-      # don't eliminate duplications in $postdeps and $predeps
-      opt_duplicate_compiler_generated_deps=:
-      ;;
-    *)
-      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
-      ;;
-  esac
-
-  $opt_help || {
-    # Sanity checks first:
-    func_check_version_match
-
-    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-      func_fatal_configuration "not configured to build any kind of library"
-    fi
-
-    # Darwin sucks
-    eval std_shrext=\"$shrext_cmds\"
-
-    # Only execute mode is allowed to have -dlopen flags.
-    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
-      func_error "unrecognized option \`-dlopen'"
-      $ECHO "$help" 1>&2
-      exit $EXIT_FAILURE
-    fi
-
-    # Change the help message to a mode-specific one.
-    generic_help="$help"
-    help="Try \`$progname --help --mode=$opt_mode' for more information."
-  }
-
-
-  # Bail if the options were screwed
-  $exit_cmd $EXIT_FAILURE
+    # Pass back the list of options.
+    func_quote_for_eval ${1+"$@"}
+    libtool_options_prep_result=$func_quote_for_eval_result
 }
+func_add_hook func_options_prep libtool_options_prep
 
 
+# libtool_parse_options [ARG]...
+# ---------------------------------
+# Provide handling for libtool specific options.
+libtool_parse_options ()
+{
+    $debug_cmd
+
+    # Perform our own loop to consume as many options as possible in
+    # each iteration.
+    while test $# -gt 0; do
+      _G_opt=$1
+      shift
+      case $_G_opt in
+        --dry-run|--dryrun|-n)
+                        opt_dry_run=:
+                        ;;
+
+        --config)       func_config ;;
+
+        --dlopen|-dlopen)
+                        opt_dlopen="${opt_dlopen+$opt_dlopen
+}$1"
+                        shift
+                        ;;
+
+        --preserve-dup-deps)
+                        opt_preserve_dup_deps=: ;;
+
+        --features)     func_features ;;
+
+        --finish)       set dummy --mode finish ${1+"$@"}; shift ;;
+
+        --help)         opt_help=: ;;
+
+        --help-all)     opt_help=': help-all' ;;
+
+        --mode)         test $# = 0 && func_missing_arg $_G_opt && break
+                        opt_mode=$1
+                        case $1 in
+                          # Valid mode arguments:
+                          clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+                          # Catch anything else as an error
+                          *) func_error "invalid argument for $_G_opt"
+                             exit_cmd=exit
+                             break
+                             ;;
+                        esac
+                        shift
+                        ;;
+
+        --no-silent|--no-quiet)
+                        opt_quiet=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --no-warnings|--no-warning|--no-warn)
+                        opt_warning=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --no-verbose)
+                        opt_verbose=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --silent|--quiet)
+                        opt_quiet=:
+                        opt_verbose=false
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+        --tag)          test $# = 0 && func_missing_arg $_G_opt && break
+                        opt_tag=$1
+                        func_append preserve_args " $_G_opt $1"
+                        func_enable_tag "$1"
+                        shift
+                        ;;
+
+        --verbose|-v)   opt_quiet=false
+                        opt_verbose=:
+                        func_append preserve_args " $_G_opt"
+                        ;;
+
+	# An option not handled by this hook function:
+        *)		set dummy "$_G_opt" ${1+"$@"};	shift; break  ;;
+      esac
+    done
+
+
+    # save modified positional parameters for caller
+    func_quote_for_eval ${1+"$@"}
+    libtool_parse_options_result=$func_quote_for_eval_result
+}
+func_add_hook func_parse_options libtool_parse_options
+
+
+
+# libtool_validate_options [ARG]...
+# ---------------------------------
+# Perform any sanity checks on option settings and/or unconsumed
+# arguments.
+libtool_validate_options ()
+{
+    # save first non-option argument
+    if test 0 -lt $#; then
+      nonopt=$1
+      shift
+    fi
+
+    # preserve --debug
+    test : = "$debug_cmd" || func_append preserve_args " --debug"
+
+    case $host in
+      # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452
+      # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788
+      *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*)
+        # don't eliminate duplications in $postdeps and $predeps
+        opt_duplicate_compiler_generated_deps=:
+        ;;
+      *)
+        opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+        ;;
+    esac
+
+    $opt_help || {
+      # Sanity checks first:
+      func_check_version_match
+
+      test yes != "$build_libtool_libs" \
+        && test yes != "$build_old_libs" \
+        && func_fatal_configuration "not configured to build any kind of library"
+
+      # Darwin sucks
+      eval std_shrext=\"$shrext_cmds\"
+
+      # Only execute mode is allowed to have -dlopen flags.
+      if test -n "$opt_dlopen" && test execute != "$opt_mode"; then
+        func_error "unrecognized option '-dlopen'"
+        $ECHO "$help" 1>&2
+        exit $EXIT_FAILURE
+      fi
+
+      # Change the help message to a mode-specific one.
+      generic_help=$help
+      help="Try '$progname --help --mode=$opt_mode' for more information."
+    }
+
+    # Pass back the unparsed argument list
+    func_quote_for_eval ${1+"$@"}
+    libtool_validate_options_result=$func_quote_for_eval_result
+}
+func_add_hook func_validate_options libtool_validate_options
+
+
+# Process options as early as possible so that --help and --version
+# can return quickly.
+func_options ${1+"$@"}
+eval set dummy "$func_options_result"; shift
+
 
 
 ## ----------- ##
 ##    Main.    ##
 ## ----------- ##
 
+magic='%%%MAGIC variable%%%'
+magic_exe='%%%MAGIC EXE variable%%%'
+
+# Global variables.
+extracted_archives=
+extracted_serial=0
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
+
+# func_generated_by_libtool
+# True iff stdin has been generated by Libtool. This function is only
+# a basic sanity check; it will hardly flush out determined imposters.
+func_generated_by_libtool_p ()
+{
+  $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
 # func_lalib_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
+# True iff FILE is a libtool '.la' library or '.lo' object file.
 # This function is only a basic sanity check; it will hardly flush out
 # determined imposters.
 func_lalib_p ()
 {
     test -f "$1" &&
-      $SED -e 4q "$1" 2>/dev/null \
-        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+      $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p
 }
 
 # func_lalib_unsafe_p file
-# True iff FILE is a libtool `.la' library or `.lo' object file.
+# True iff FILE is a libtool '.la' library or '.lo' object file.
 # This function implements the same check as func_lalib_p without
 # resorting to external programs.  To this end, it redirects stdin and
 # closes it afterwards, without saving the original file descriptor.
 # As a safety measure, use it only where a negative result would be
-# fatal anyway.  Works if `file' does not exist.
+# fatal anyway.  Works if 'file' does not exist.
 func_lalib_unsafe_p ()
 {
     lalib_p=no
@@ -1249,13 +2521,13 @@
 	for lalib_p_l in 1 2 3 4
 	do
 	    read lalib_p_line
-	    case "$lalib_p_line" in
+	    case $lalib_p_line in
 		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
 	    esac
 	done
 	exec 0<&5 5<&-
     fi
-    test "$lalib_p" = yes
+    test yes = "$lalib_p"
 }
 
 # func_ltwrapper_script_p file
@@ -1264,7 +2536,8 @@
 # determined imposters.
 func_ltwrapper_script_p ()
 {
-    func_lalib_p "$1"
+    test -f "$1" &&
+      $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p
 }
 
 # func_ltwrapper_executable_p file
@@ -1289,7 +2562,7 @@
 {
     func_dirname_and_basename "$1" "" "."
     func_stripname '' '.exe' "$func_basename_result"
-    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+    func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper
 }
 
 # func_ltwrapper_p file
@@ -1308,11 +2581,13 @@
 # FAIL_CMD may read-access the current command in variable CMD!
 func_execute_cmds ()
 {
-    $opt_debug
+    $debug_cmd
+
     save_ifs=$IFS; IFS='~'
     for cmd in $1; do
-      IFS=$save_ifs
+      IFS=$sp$nl
       eval cmd=\"$cmd\"
+      IFS=$save_ifs
       func_show_eval "$cmd" "${2-:}"
     done
     IFS=$save_ifs
@@ -1324,10 +2599,11 @@
 # Note that it is not necessary on cygwin/mingw to append a dot to
 # FILE even if both FILE and FILE.exe exist: automatic-append-.exe
 # behavior happens only for exec(3), not for open(2)!  Also, sourcing
-# `FILE.' does not work on cygwin managed mounts.
+# 'FILE.' does not work on cygwin managed mounts.
 func_source ()
 {
-    $opt_debug
+    $debug_cmd
+
     case $1 in
     */* | *\\*)	. "$1" ;;
     *)		. "./$1" ;;
@@ -1354,10 +2630,10 @@
 # store the result into func_replace_sysroot_result.
 func_replace_sysroot ()
 {
-  case "$lt_sysroot:$1" in
+  case $lt_sysroot:$1 in
   ?*:"$lt_sysroot"*)
     func_stripname "$lt_sysroot" '' "$1"
-    func_replace_sysroot_result="=$func_stripname_result"
+    func_replace_sysroot_result='='$func_stripname_result
     ;;
   *)
     # Including no sysroot.
@@ -1374,7 +2650,8 @@
 # arg is usually of the form 'gcc ...'
 func_infer_tag ()
 {
-    $opt_debug
+    $debug_cmd
+
     if test -n "$available_tags" && test -z "$tagname"; then
       CC_quoted=
       for arg in $CC; do
@@ -1393,7 +2670,7 @@
 	for z in $available_tags; do
 	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
 	    # Evaluate the configuration.
-	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
 	    CC_quoted=
 	    for arg in $CC; do
 	      # Double-quote args containing other shell metacharacters.
@@ -1418,7 +2695,7 @@
 	# line option must be used.
 	if test -z "$tagname"; then
 	  func_echo "unable to infer tagged configuration"
-	  func_fatal_error "specify a tag with \`--tag'"
+	  func_fatal_error "specify a tag with '--tag'"
 #	else
 #	  func_verbose "using $tagname tagged configuration"
 	fi
@@ -1434,15 +2711,15 @@
 # but don't create it if we're doing a dry run.
 func_write_libtool_object ()
 {
-    write_libobj=${1}
-    if test "$build_libtool_libs" = yes; then
-      write_lobj=\'${2}\'
+    write_libobj=$1
+    if test yes = "$build_libtool_libs"; then
+      write_lobj=\'$2\'
     else
       write_lobj=none
     fi
 
-    if test "$build_old_libs" = yes; then
-      write_oldobj=\'${3}\'
+    if test yes = "$build_old_libs"; then
+      write_oldobj=\'$3\'
     else
       write_oldobj=none
     fi
@@ -1450,7 +2727,7 @@
     $opt_dry_run || {
       cat >${write_libobj}T <<EOF
 # $write_libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
 #
 # Please DO NOT delete this file!
 # It is necessary for linking the library.
@@ -1462,7 +2739,7 @@
 non_pic_object=$write_oldobj
 
 EOF
-      $MV "${write_libobj}T" "${write_libobj}"
+      $MV "${write_libobj}T" "$write_libobj"
     }
 }
 
@@ -1482,8 +2759,9 @@
 # be empty on error (or when ARG is empty)
 func_convert_core_file_wine_to_w32 ()
 {
-  $opt_debug
-  func_convert_core_file_wine_to_w32_result="$1"
+  $debug_cmd
+
+  func_convert_core_file_wine_to_w32_result=$1
   if test -n "$1"; then
     # Unfortunately, winepath does not exit with a non-zero error code, so we
     # are forced to check the contents of stdout. On the other hand, if the
@@ -1491,9 +2769,9 @@
     # *an error message* to stdout. So we must check for both error code of
     # zero AND non-empty stdout, which explains the odd construction:
     func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
-    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
+    if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then
       func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
-        $SED -e "$lt_sed_naive_backslashify"`
+        $SED -e "$sed_naive_backslashify"`
     else
       func_convert_core_file_wine_to_w32_result=
     fi
@@ -1514,18 +2792,19 @@
 # are convertible, then the result may be empty.
 func_convert_core_path_wine_to_w32 ()
 {
-  $opt_debug
+  $debug_cmd
+
   # unfortunately, winepath doesn't convert paths, only file names
-  func_convert_core_path_wine_to_w32_result=""
+  func_convert_core_path_wine_to_w32_result=
   if test -n "$1"; then
     oldIFS=$IFS
     IFS=:
     for func_convert_core_path_wine_to_w32_f in $1; do
       IFS=$oldIFS
       func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
-      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
+      if test -n "$func_convert_core_file_wine_to_w32_result"; then
         if test -z "$func_convert_core_path_wine_to_w32_result"; then
-          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
+          func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result
         else
           func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
         fi
@@ -1554,7 +2833,8 @@
 # environment variable; do not put it in $PATH.
 func_cygpath ()
 {
-  $opt_debug
+  $debug_cmd
+
   if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
     func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
     if test "$?" -ne 0; then
@@ -1563,7 +2843,7 @@
     fi
   else
     func_cygpath_result=
-    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+    func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'"
   fi
 }
 #end: func_cygpath
@@ -1574,10 +2854,11 @@
 # result in func_convert_core_msys_to_w32_result.
 func_convert_core_msys_to_w32 ()
 {
-  $opt_debug
+  $debug_cmd
+
   # awkward: cmd appends spaces to result
   func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
-    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+    $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"`
 }
 #end: func_convert_core_msys_to_w32
 
@@ -1588,13 +2869,14 @@
 # func_to_host_file_result to ARG1).
 func_convert_file_check ()
 {
-  $opt_debug
-  if test -z "$2" && test -n "$1" ; then
+  $debug_cmd
+
+  if test -z "$2" && test -n "$1"; then
     func_error "Could not determine host file name corresponding to"
-    func_error "  \`$1'"
+    func_error "  '$1'"
     func_error "Continuing, but uninstalled executables may not work."
     # Fallback:
-    func_to_host_file_result="$1"
+    func_to_host_file_result=$1
   fi
 }
 # end func_convert_file_check
@@ -1606,10 +2888,11 @@
 # func_to_host_file_result to a simplistic fallback value (see below).
 func_convert_path_check ()
 {
-  $opt_debug
+  $debug_cmd
+
   if test -z "$4" && test -n "$3"; then
     func_error "Could not determine the host path corresponding to"
-    func_error "  \`$3'"
+    func_error "  '$3'"
     func_error "Continuing, but uninstalled executables may not work."
     # Fallback.  This is a deliberately simplistic "conversion" and
     # should not be "improved".  See libtool.info.
@@ -1618,7 +2901,7 @@
       func_to_host_path_result=`echo "$3" |
         $SED -e "$lt_replace_pathsep_chars"`
     else
-      func_to_host_path_result="$3"
+      func_to_host_path_result=$3
     fi
   fi
 }
@@ -1630,9 +2913,10 @@
 # and appending REPL if ORIG matches BACKPAT.
 func_convert_path_front_back_pathsep ()
 {
-  $opt_debug
+  $debug_cmd
+
   case $4 in
-  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
+  $1 ) func_to_host_path_result=$3$func_to_host_path_result
     ;;
   esac
   case $4 in
@@ -1646,7 +2930,7 @@
 ##################################################
 # $build to $host FILE NAME CONVERSION FUNCTIONS #
 ##################################################
-# invoked via `$to_host_file_cmd ARG'
+# invoked via '$to_host_file_cmd ARG'
 #
 # In each case, ARG is the path to be converted from $build to $host format.
 # Result will be available in $func_to_host_file_result.
@@ -1657,7 +2941,8 @@
 # in func_to_host_file_result.
 func_to_host_file ()
 {
-  $opt_debug
+  $debug_cmd
+
   $to_host_file_cmd "$1"
 }
 # end func_to_host_file
@@ -1669,7 +2954,8 @@
 # in (the comma separated) LAZY, no conversion takes place.
 func_to_tool_file ()
 {
-  $opt_debug
+  $debug_cmd
+
   case ,$2, in
     *,"$to_tool_file_cmd",*)
       func_to_tool_file_result=$1
@@ -1687,7 +2973,7 @@
 # Copy ARG to func_to_host_file_result.
 func_convert_file_noop ()
 {
-  func_to_host_file_result="$1"
+  func_to_host_file_result=$1
 }
 # end func_convert_file_noop
 
@@ -1698,11 +2984,12 @@
 # func_to_host_file_result.
 func_convert_file_msys_to_w32 ()
 {
-  $opt_debug
-  func_to_host_file_result="$1"
+  $debug_cmd
+
+  func_to_host_file_result=$1
   if test -n "$1"; then
     func_convert_core_msys_to_w32 "$1"
-    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
+    func_to_host_file_result=$func_convert_core_msys_to_w32_result
   fi
   func_convert_file_check "$1" "$func_to_host_file_result"
 }
@@ -1714,8 +3001,9 @@
 # func_to_host_file_result.
 func_convert_file_cygwin_to_w32 ()
 {
-  $opt_debug
-  func_to_host_file_result="$1"
+  $debug_cmd
+
+  func_to_host_file_result=$1
   if test -n "$1"; then
     # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
     # LT_CYGPATH in this case.
@@ -1731,11 +3019,12 @@
 # and a working winepath. Returns result in func_to_host_file_result.
 func_convert_file_nix_to_w32 ()
 {
-  $opt_debug
-  func_to_host_file_result="$1"
+  $debug_cmd
+
+  func_to_host_file_result=$1
   if test -n "$1"; then
     func_convert_core_file_wine_to_w32 "$1"
-    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
+    func_to_host_file_result=$func_convert_core_file_wine_to_w32_result
   fi
   func_convert_file_check "$1" "$func_to_host_file_result"
 }
@@ -1747,12 +3036,13 @@
 # Returns result in func_to_host_file_result.
 func_convert_file_msys_to_cygwin ()
 {
-  $opt_debug
-  func_to_host_file_result="$1"
+  $debug_cmd
+
+  func_to_host_file_result=$1
   if test -n "$1"; then
     func_convert_core_msys_to_w32 "$1"
     func_cygpath -u "$func_convert_core_msys_to_w32_result"
-    func_to_host_file_result="$func_cygpath_result"
+    func_to_host_file_result=$func_cygpath_result
   fi
   func_convert_file_check "$1" "$func_to_host_file_result"
 }
@@ -1765,13 +3055,14 @@
 # in func_to_host_file_result.
 func_convert_file_nix_to_cygwin ()
 {
-  $opt_debug
-  func_to_host_file_result="$1"
+  $debug_cmd
+
+  func_to_host_file_result=$1
   if test -n "$1"; then
     # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
     func_convert_core_file_wine_to_w32 "$1"
     func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
-    func_to_host_file_result="$func_cygpath_result"
+    func_to_host_file_result=$func_cygpath_result
   fi
   func_convert_file_check "$1" "$func_to_host_file_result"
 }
@@ -1781,7 +3072,7 @@
 #############################################
 # $build to $host PATH CONVERSION FUNCTIONS #
 #############################################
-# invoked via `$to_host_path_cmd ARG'
+# invoked via '$to_host_path_cmd ARG'
 #
 # In each case, ARG is the path to be converted from $build to $host format.
 # The result will be available in $func_to_host_path_result.
@@ -1805,10 +3096,11 @@
 to_host_path_cmd=
 func_init_to_host_path_cmd ()
 {
-  $opt_debug
+  $debug_cmd
+
   if test -z "$to_host_path_cmd"; then
     func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
-    to_host_path_cmd="func_convert_path_${func_stripname_result}"
+    to_host_path_cmd=func_convert_path_$func_stripname_result
   fi
 }
 
@@ -1818,7 +3110,8 @@
 # in func_to_host_path_result.
 func_to_host_path ()
 {
-  $opt_debug
+  $debug_cmd
+
   func_init_to_host_path_cmd
   $to_host_path_cmd "$1"
 }
@@ -1829,7 +3122,7 @@
 # Copy ARG to func_to_host_path_result.
 func_convert_path_noop ()
 {
-  func_to_host_path_result="$1"
+  func_to_host_path_result=$1
 }
 # end func_convert_path_noop
 
@@ -1840,8 +3133,9 @@
 # func_to_host_path_result.
 func_convert_path_msys_to_w32 ()
 {
-  $opt_debug
-  func_to_host_path_result="$1"
+  $debug_cmd
+
+  func_to_host_path_result=$1
   if test -n "$1"; then
     # Remove leading and trailing path separator characters from ARG.  MSYS
     # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
@@ -1849,7 +3143,7 @@
     func_stripname : : "$1"
     func_to_host_path_tmp1=$func_stripname_result
     func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
+    func_to_host_path_result=$func_convert_core_msys_to_w32_result
     func_convert_path_check : ";" \
       "$func_to_host_path_tmp1" "$func_to_host_path_result"
     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
@@ -1863,8 +3157,9 @@
 # func_to_host_file_result.
 func_convert_path_cygwin_to_w32 ()
 {
-  $opt_debug
-  func_to_host_path_result="$1"
+  $debug_cmd
+
+  func_to_host_path_result=$1
   if test -n "$1"; then
     # See func_convert_path_msys_to_w32:
     func_stripname : : "$1"
@@ -1883,14 +3178,15 @@
 # a working winepath.  Returns result in func_to_host_file_result.
 func_convert_path_nix_to_w32 ()
 {
-  $opt_debug
-  func_to_host_path_result="$1"
+  $debug_cmd
+
+  func_to_host_path_result=$1
   if test -n "$1"; then
     # See func_convert_path_msys_to_w32:
     func_stripname : : "$1"
     func_to_host_path_tmp1=$func_stripname_result
     func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
-    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
+    func_to_host_path_result=$func_convert_core_path_wine_to_w32_result
     func_convert_path_check : ";" \
       "$func_to_host_path_tmp1" "$func_to_host_path_result"
     func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
@@ -1904,15 +3200,16 @@
 # Returns result in func_to_host_file_result.
 func_convert_path_msys_to_cygwin ()
 {
-  $opt_debug
-  func_to_host_path_result="$1"
+  $debug_cmd
+
+  func_to_host_path_result=$1
   if test -n "$1"; then
     # See func_convert_path_msys_to_w32:
     func_stripname : : "$1"
     func_to_host_path_tmp1=$func_stripname_result
     func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
     func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
-    func_to_host_path_result="$func_cygpath_result"
+    func_to_host_path_result=$func_cygpath_result
     func_convert_path_check : : \
       "$func_to_host_path_tmp1" "$func_to_host_path_result"
     func_convert_path_front_back_pathsep ":*" "*:" : "$1"
@@ -1927,8 +3224,9 @@
 # func_to_host_file_result.
 func_convert_path_nix_to_cygwin ()
 {
-  $opt_debug
-  func_to_host_path_result="$1"
+  $debug_cmd
+
+  func_to_host_path_result=$1
   if test -n "$1"; then
     # Remove leading and trailing path separator characters from
     # ARG. msys behavior is inconsistent here, cygpath turns them
@@ -1937,7 +3235,7 @@
     func_to_host_path_tmp1=$func_stripname_result
     func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
     func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
-    func_to_host_path_result="$func_cygpath_result"
+    func_to_host_path_result=$func_cygpath_result
     func_convert_path_check : : \
       "$func_to_host_path_tmp1" "$func_to_host_path_result"
     func_convert_path_front_back_pathsep ":*" "*:" : "$1"
@@ -1946,13 +3244,31 @@
 # end func_convert_path_nix_to_cygwin
 
 
+# func_dll_def_p FILE
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with _LT_DLL_DEF_P in libtool.m4
+func_dll_def_p ()
+{
+  $debug_cmd
+
+  func_dll_def_p_tmp=`$SED -n \
+    -e 's/^[	 ]*//' \
+    -e '/^\(;.*\)*$/d' \
+    -e 's/^\(EXPORTS\|LIBRARY\)\([	 ].*\)*$/DEF/p' \
+    -e q \
+    "$1"`
+  test DEF = "$func_dll_def_p_tmp"
+}
+
+
 # func_mode_compile arg...
 func_mode_compile ()
 {
-    $opt_debug
+    $debug_cmd
+
     # Get the compilation command and the source file.
     base_compile=
-    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    srcfile=$nonopt  #  always keep a non-empty value in "srcfile"
     suppress_opt=yes
     suppress_output=
     arg_mode=normal
@@ -1965,12 +3281,12 @@
       case $arg_mode in
       arg  )
 	# do not "continue".  Instead, add this to base_compile
-	lastarg="$arg"
+	lastarg=$arg
 	arg_mode=normal
 	;;
 
       target )
-	libobj="$arg"
+	libobj=$arg
 	arg_mode=normal
 	continue
 	;;
@@ -1980,7 +3296,7 @@
 	case $arg in
 	-o)
 	  test -n "$libobj" && \
-	    func_fatal_error "you cannot specify \`-o' more than once"
+	    func_fatal_error "you cannot specify '-o' more than once"
 	  arg_mode=target
 	  continue
 	  ;;
@@ -2009,12 +3325,12 @@
 	  func_stripname '-Wc,' '' "$arg"
 	  args=$func_stripname_result
 	  lastarg=
-	  save_ifs="$IFS"; IFS=','
+	  save_ifs=$IFS; IFS=,
 	  for arg in $args; do
-	    IFS="$save_ifs"
+	    IFS=$save_ifs
 	    func_append_quoted lastarg "$arg"
 	  done
-	  IFS="$save_ifs"
+	  IFS=$save_ifs
 	  func_stripname ' ' '' "$lastarg"
 	  lastarg=$func_stripname_result
 
@@ -2027,8 +3343,8 @@
 	  # Accept the current argument as the source file.
 	  # The previous "srcfile" becomes the current argument.
 	  #
-	  lastarg="$srcfile"
-	  srcfile="$arg"
+	  lastarg=$srcfile
+	  srcfile=$arg
 	  ;;
 	esac  #  case $arg
 	;;
@@ -2043,13 +3359,13 @@
       func_fatal_error "you must specify an argument for -Xcompile"
       ;;
     target)
-      func_fatal_error "you must specify a target with \`-o'"
+      func_fatal_error "you must specify a target with '-o'"
       ;;
     *)
       # Get the name of the library object.
       test -z "$libobj" && {
 	func_basename "$srcfile"
-	libobj="$func_basename_result"
+	libobj=$func_basename_result
       }
       ;;
     esac
@@ -2069,7 +3385,7 @@
     case $libobj in
     *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
     *)
-      func_fatal_error "cannot determine name of library object from \`$libobj'"
+      func_fatal_error "cannot determine name of library object from '$libobj'"
       ;;
     esac
 
@@ -2078,8 +3394,8 @@
     for arg in $later; do
       case $arg in
       -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
+	test yes = "$build_libtool_libs" \
+	  || func_fatal_configuration "cannot build a shared library"
 	build_old_libs=no
 	continue
 	;;
@@ -2105,17 +3421,17 @@
     func_quote_for_eval "$libobj"
     test "X$libobj" != "X$func_quote_for_eval_result" \
       && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
-      && func_warning "libobj name \`$libobj' may not contain shell special characters."
+      && func_warning "libobj name '$libobj' may not contain shell special characters."
     func_dirname_and_basename "$obj" "/" ""
-    objname="$func_basename_result"
-    xdir="$func_dirname_result"
-    lobj=${xdir}$objdir/$objname
+    objname=$func_basename_result
+    xdir=$func_dirname_result
+    lobj=$xdir$objdir/$objname
 
     test -z "$base_compile" && \
       func_fatal_help "you must specify a compilation command"
 
     # Delete any leftover library objects.
-    if test "$build_old_libs" = yes; then
+    if test yes = "$build_old_libs"; then
       removelist="$obj $lobj $libobj ${libobj}T"
     else
       removelist="$lobj $libobj ${libobj}T"
@@ -2127,16 +3443,16 @@
       pic_mode=default
       ;;
     esac
-    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+    if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then
       # non-PIC code in shared libraries is not supported
       pic_mode=default
     fi
 
     # Calculate the filename of the output object if compiler does
     # not support -o with -c
-    if test "$compiler_c_o" = no; then
-      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
-      lockfile="$output_obj.lock"
+    if test no = "$compiler_c_o"; then
+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext
+      lockfile=$output_obj.lock
     else
       output_obj=
       need_locks=no
@@ -2145,12 +3461,12 @@
 
     # Lock this critical section if it is needed
     # We use this script file to make the link, it avoids creating a new file
-    if test "$need_locks" = yes; then
+    if test yes = "$need_locks"; then
       until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
 	func_echo "Waiting for $lockfile to be removed"
 	sleep 2
       done
-    elif test "$need_locks" = warn; then
+    elif test warn = "$need_locks"; then
       if test -f "$lockfile"; then
 	$ECHO "\
 *** ERROR, $lockfile exists and contains:
@@ -2158,7 +3474,7 @@
 
 This indicates that another process is trying to use the same
 temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
+your compiler does not support '-c' and '-o' together.  If you
 repeat this compilation, it may succeed, by chance, but you had better
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
@@ -2180,11 +3496,11 @@
     qsrcfile=$func_quote_for_eval_result
 
     # Only build a PIC object if we are building libtool libraries.
-    if test "$build_libtool_libs" = yes; then
+    if test yes = "$build_libtool_libs"; then
       # Without this assignment, base_compile gets emptied.
       fbsd_hideous_sh_bug=$base_compile
 
-      if test "$pic_mode" != no; then
+      if test no != "$pic_mode"; then
 	command="$base_compile $qsrcfile $pic_flag"
       else
 	# Don't build PIC code
@@ -2201,7 +3517,7 @@
       func_show_eval_locale "$command"	\
           'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
 
-      if test "$need_locks" = warn &&
+      if test warn = "$need_locks" &&
 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
 	$ECHO "\
 *** ERROR, $lockfile contains:
@@ -2212,7 +3528,7 @@
 
 This indicates that another process is trying to use the same
 temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
+your compiler does not support '-c' and '-o' together.  If you
 repeat this compilation, it may succeed, by chance, but you had better
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
@@ -2228,20 +3544,20 @@
       fi
 
       # Allow error messages only from the first compilation.
-      if test "$suppress_opt" = yes; then
+      if test yes = "$suppress_opt"; then
 	suppress_output=' >/dev/null 2>&1'
       fi
     fi
 
     # Only build a position-dependent object if we build old libraries.
-    if test "$build_old_libs" = yes; then
-      if test "$pic_mode" != yes; then
+    if test yes = "$build_old_libs"; then
+      if test yes != "$pic_mode"; then
 	# Don't build PIC code
 	command="$base_compile $qsrcfile$pie_flag"
       else
 	command="$base_compile $qsrcfile $pic_flag"
       fi
-      if test "$compiler_c_o" = yes; then
+      if test yes = "$compiler_c_o"; then
 	func_append command " -o $obj"
       fi
 
@@ -2250,7 +3566,7 @@
       func_show_eval_locale "$command" \
         '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
 
-      if test "$need_locks" = warn &&
+      if test warn = "$need_locks" &&
 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
 	$ECHO "\
 *** ERROR, $lockfile contains:
@@ -2261,7 +3577,7 @@
 
 This indicates that another process is trying to use the same
 temporary object file, and libtool could not work around it because
-your compiler does not support \`-c' and \`-o' together.  If you
+your compiler does not support '-c' and '-o' together.  If you
 repeat this compilation, it may succeed, by chance, but you had better
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
@@ -2281,7 +3597,7 @@
       func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
 
       # Unlock the critical section if it was locked
-      if test "$need_locks" != no; then
+      if test no != "$need_locks"; then
 	removelist=$lockfile
         $RM "$lockfile"
       fi
@@ -2291,7 +3607,7 @@
 }
 
 $opt_help || {
-  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+  test compile = "$opt_mode" && func_mode_compile ${1+"$@"}
 }
 
 func_mode_help ()
@@ -2311,7 +3627,7 @@
 Remove files from the build directory.
 
 RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
 to RM.
 
 If FILE is a libtool library, object or program, all the files associated
@@ -2330,16 +3646,16 @@
   -no-suppress      do not suppress compiler output for multiple passes
   -prefer-pic       try to build PIC objects only
   -prefer-non-pic   try to build non-PIC objects only
-  -shared           do not build a \`.o' file suitable for static linking
-  -static           only build a \`.o' file suitable for static linking
+  -shared           do not build a '.o' file suitable for static linking
+  -static           only build a '.o' file suitable for static linking
   -Wc,FLAG          pass FLAG directly to the compiler
 
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+COMPILE-COMMAND is a command to be used in creating a 'standard' object file
 from the given SOURCEFILE.
 
 The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
+SOURCEFILE, then substituting the C source code suffix '.c' with the
+library object suffix, '.lo'."
         ;;
 
       execute)
@@ -2352,7 +3668,7 @@
 
   -dlopen FILE      add the directory containing FILE to the library path
 
-This mode sets the library path environment variable according to \`-dlopen'
+This mode sets the library path environment variable according to '-dlopen'
 flags.
 
 If any of the ARGS are libtool executable wrappers, then they are translated
@@ -2371,7 +3687,7 @@
 Each LIBDIR is a directory that contains libtool libraries.
 
 The commands that this mode executes may require superuser privileges.  Use
-the \`--dry-run' option if you just want to see what would be executed."
+the '--dry-run' option if you just want to see what would be executed."
         ;;
 
       install)
@@ -2381,7 +3697,7 @@
 Install executables or libraries.
 
 INSTALL-COMMAND is the installation command.  The first component should be
-either the \`install' or \`cp' program.
+either the 'install' or 'cp' program.
 
 The following components of INSTALL-COMMAND are treated specially:
 
@@ -2407,7 +3723,7 @@
   -avoid-version    do not add a version suffix if possible
   -bindir BINDIR    specify path to binaries directory (for systems where
                     libraries must be found in the PATH setting at runtime)
-  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlopen FILE      '-dlpreopen' FILE if it cannot be dlopened at runtime
   -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
   -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
   -export-symbols SYMFILE
@@ -2421,7 +3737,8 @@
   -no-install       link a not-installable executable
   -no-undefined     declare that a library does not refer to external symbols
   -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -objectlist FILE  use a list of object files found in FILE to specify objects
+  -os2dllname NAME  force a short DLL name on OS/2 (no effect on other OSes)
   -precious-files-regex REGEX
                     don't remove output files matching REGEX
   -release RELEASE  specify package release information
@@ -2441,20 +3758,20 @@
   -Xlinker FLAG     pass linker-specific FLAG directly to the linker
   -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
 
-All other options (arguments beginning with \`-') are ignored.
+All other options (arguments beginning with '-') are ignored.
 
-Every other argument is treated as a filename.  Files ending in \`.la' are
+Every other argument is treated as a filename.  Files ending in '.la' are
 treated as uninstalled libtool libraries, other files are standard or library
 object files.
 
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
+If the OUTPUT-FILE ends in '.la', then a libtool library is created,
+only library objects ('.lo' files) may be specified, and '-rpath' is
 required, except when creating a convenience library.
 
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
+If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created
+using 'ar' and 'ranlib', or on Windows using 'lib'.
 
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file
 is created, otherwise an executable program is created."
         ;;
 
@@ -2465,7 +3782,7 @@
 Remove libraries from an installation directory.
 
 RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+(typically '/bin/rm').  RM-OPTIONS are options (such as '-f') to be passed
 to RM.
 
 If FILE is a libtool library, all the files associated with it are deleted.
@@ -2473,17 +3790,17 @@
         ;;
 
       *)
-        func_fatal_help "invalid operation mode \`$opt_mode'"
+        func_fatal_help "invalid operation mode '$opt_mode'"
         ;;
     esac
 
     echo
-    $ECHO "Try \`$progname --help' for more information about other modes."
+    $ECHO "Try '$progname --help' for more information about other modes."
 }
 
 # Now that we've collected a possible --mode arg, show help if necessary
 if $opt_help; then
-  if test "$opt_help" = :; then
+  if test : = "$opt_help"; then
     func_mode_help
   else
     {
@@ -2491,7 +3808,7 @@
       for opt_mode in compile link execute install finish uninstall clean; do
 	func_mode_help
       done
-    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
+    } | $SED -n '1p; 2,$s/^Usage:/  or: /p'
     {
       func_help noexit
       for opt_mode in compile link execute install finish uninstall clean; do
@@ -2499,7 +3816,7 @@
 	func_mode_help
       done
     } |
-    sed '1d
+    $SED '1d
       /^When reporting/,/^Report/{
 	H
 	d
@@ -2516,16 +3833,17 @@
 # func_mode_execute arg...
 func_mode_execute ()
 {
-    $opt_debug
+    $debug_cmd
+
     # The first argument is the command name.
-    cmd="$nonopt"
+    cmd=$nonopt
     test -z "$cmd" && \
       func_fatal_help "you must specify a COMMAND"
 
     # Handle -dlopen flags immediately.
     for file in $opt_dlopen; do
       test -f "$file" \
-	|| func_fatal_help "\`$file' is not a file"
+	|| func_fatal_help "'$file' is not a file"
 
       dir=
       case $file in
@@ -2535,7 +3853,7 @@
 
 	# Check to see that this really is a libtool archive.
 	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$lib' is not a valid libtool archive"
+	  || func_fatal_help "'$lib' is not a valid libtool archive"
 
 	# Read the libtool library.
 	dlname=
@@ -2546,18 +3864,18 @@
 	if test -z "$dlname"; then
 	  # Warn if it was a shared library.
 	  test -n "$library_names" && \
-	    func_warning "\`$file' was not linked with \`-export-dynamic'"
+	    func_warning "'$file' was not linked with '-export-dynamic'"
 	  continue
 	fi
 
 	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
+	dir=$func_dirname_result
 
 	if test -f "$dir/$objdir/$dlname"; then
 	  func_append dir "/$objdir"
 	else
 	  if test ! -f "$dir/$dlname"; then
-	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+	    func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'"
 	  fi
 	fi
 	;;
@@ -2565,18 +3883,18 @@
       *.lo)
 	# Just add the directory containing the .lo file.
 	func_dirname "$file" "" "."
-	dir="$func_dirname_result"
+	dir=$func_dirname_result
 	;;
 
       *)
-	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+	func_warning "'-dlopen' is ignored for non-libtool libraries and objects"
 	continue
 	;;
       esac
 
       # Get the absolute pathname.
       absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir="$absdir"
+      test -n "$absdir" && dir=$absdir
 
       # Now add the directory to shlibpath_var.
       if eval "test -z \"\$$shlibpath_var\""; then
@@ -2588,7 +3906,7 @@
 
     # This variable tells wrapper scripts just to set shlibpath_var
     # rather than running their programs.
-    libtool_execute_magic="$magic"
+    libtool_execute_magic=$magic
 
     # Check if any of the arguments is a wrapper script.
     args=
@@ -2601,12 +3919,12 @@
 	if func_ltwrapper_script_p "$file"; then
 	  func_source "$file"
 	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
+	  file=$progdir/$program
 	elif func_ltwrapper_executable_p "$file"; then
 	  func_ltwrapper_scriptname "$file"
 	  func_source "$func_ltwrapper_scriptname_result"
 	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
+	  file=$progdir/$program
 	fi
 	;;
       esac
@@ -2614,7 +3932,15 @@
       func_append_quoted args "$file"
     done
 
-    if test "X$opt_dry_run" = Xfalse; then
+    if $opt_dry_run; then
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+	echo "export $shlibpath_var"
+      fi
+      $ECHO "$cmd$args"
+      exit $EXIT_SUCCESS
+    else
       if test -n "$shlibpath_var"; then
 	# Export the shlibpath_var.
 	eval "export $shlibpath_var"
@@ -2631,25 +3957,18 @@
       done
 
       # Now prepare to actually exec the command.
-      exec_cmd="\$cmd$args"
-    else
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-	echo "export $shlibpath_var"
-      fi
-      $ECHO "$cmd$args"
-      exit $EXIT_SUCCESS
+      exec_cmd=\$cmd$args
     fi
 }
 
-test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+test execute = "$opt_mode" && func_mode_execute ${1+"$@"}
 
 
 # func_mode_finish arg...
 func_mode_finish ()
 {
-    $opt_debug
+    $debug_cmd
+
     libs=
     libdirs=
     admincmds=
@@ -2663,11 +3982,11 @@
 	if func_lalib_unsafe_p "$opt"; then
 	  func_append libs " $opt"
 	else
-	  func_warning "\`$opt' is not a valid libtool archive"
+	  func_warning "'$opt' is not a valid libtool archive"
 	fi
 
       else
-	func_fatal_error "invalid argument \`$opt'"
+	func_fatal_error "invalid argument '$opt'"
       fi
     done
 
@@ -2682,12 +4001,12 @@
       # Remove sysroot references
       if $opt_dry_run; then
         for lib in $libs; do
-          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
+          echo "removing references to $lt_sysroot and '=' prefixes from $lib"
         done
       else
         tmpdir=`func_mktempdir`
         for lib in $libs; do
-	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+	  $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
 	    > $tmpdir/tmp-la
 	  mv -f $tmpdir/tmp-la $lib
 	done
@@ -2712,7 +4031,7 @@
     fi
 
     # Exit here if they wanted silent mode.
-    $opt_silent && exit $EXIT_SUCCESS
+    $opt_quiet && exit $EXIT_SUCCESS
 
     if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
       echo "----------------------------------------------------------------------"
@@ -2723,27 +4042,27 @@
       echo
       echo "If you ever happen to want to link against installed libraries"
       echo "in a given directory, LIBDIR, you must either use libtool, and"
-      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+      echo "specify the full pathname of the library, or use the '-LLIBDIR'"
       echo "flag during linking and do at least one of the following:"
       if test -n "$shlibpath_var"; then
-	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+	echo "   - add LIBDIR to the '$shlibpath_var' environment variable"
 	echo "     during execution"
       fi
       if test -n "$runpath_var"; then
-	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+	echo "   - add LIBDIR to the '$runpath_var' environment variable"
 	echo "     during linking"
       fi
       if test -n "$hardcode_libdir_flag_spec"; then
 	libdir=LIBDIR
 	eval flag=\"$hardcode_libdir_flag_spec\"
 
-	$ECHO "   - use the \`$flag' linker flag"
+	$ECHO "   - use the '$flag' linker flag"
       fi
       if test -n "$admincmds"; then
 	$ECHO "   - have your system administrator run these commands:$admincmds"
       fi
       if test -f /etc/ld.so.conf; then
-	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+	echo "   - have your system administrator add LIBDIR to '/etc/ld.so.conf'"
       fi
       echo
 
@@ -2762,18 +4081,20 @@
     exit $EXIT_SUCCESS
 }
 
-test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+test finish = "$opt_mode" && func_mode_finish ${1+"$@"}
 
 
 # func_mode_install arg...
 func_mode_install ()
 {
-    $opt_debug
+    $debug_cmd
+
     # There may be an optional sh(1) argument at the beginning of
     # install_prog (especially on Windows NT).
-    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+    if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" ||
        # Allow the use of GNU shtool's install command.
-       case $nonopt in *shtool*) :;; *) false;; esac; then
+       case $nonopt in *shtool*) :;; *) false;; esac
+    then
       # Aesthetically quote it.
       func_quote_for_eval "$nonopt"
       install_prog="$func_quote_for_eval_result "
@@ -2800,7 +4121,7 @@
     opts=
     prev=
     install_type=
-    isdir=no
+    isdir=false
     stripme=
     no_mode=:
     for arg
@@ -2813,7 +4134,7 @@
       fi
 
       case $arg in
-      -d) isdir=yes ;;
+      -d) isdir=: ;;
       -f)
 	if $install_cp; then :; else
 	  prev=$arg
@@ -2831,7 +4152,7 @@
       *)
 	# If the previous option needed an argument, then skip it.
 	if test -n "$prev"; then
-	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
+	  if test X-m = "X$prev" && test -n "$install_override_mode"; then
 	    arg2=$install_override_mode
 	    no_mode=false
 	  fi
@@ -2856,7 +4177,7 @@
       func_fatal_help "you must specify an install program"
 
     test -n "$prev" && \
-      func_fatal_help "the \`$prev' option requires an argument"
+      func_fatal_help "the '$prev' option requires an argument"
 
     if test -n "$install_override_mode" && $no_mode; then
       if $install_cp; then :; else
@@ -2878,19 +4199,19 @@
     dest=$func_stripname_result
 
     # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=yes
-    if test "$isdir" = yes; then
-      destdir="$dest"
+    test -d "$dest" && isdir=:
+    if $isdir; then
+      destdir=$dest
       destname=
     else
       func_dirname_and_basename "$dest" "" "."
-      destdir="$func_dirname_result"
-      destname="$func_basename_result"
+      destdir=$func_dirname_result
+      destname=$func_basename_result
 
       # Not a directory, so check to see that there is only one file specified.
       set dummy $files; shift
       test "$#" -gt 1 && \
-	func_fatal_help "\`$dest' is not a directory"
+	func_fatal_help "'$dest' is not a directory"
     fi
     case $destdir in
     [\\/]* | [A-Za-z]:[\\/]*) ;;
@@ -2899,7 +4220,7 @@
 	case $file in
 	*.lo) ;;
 	*)
-	  func_fatal_help "\`$destdir' must be an absolute directory name"
+	  func_fatal_help "'$destdir' must be an absolute directory name"
 	  ;;
 	esac
       done
@@ -2908,7 +4229,7 @@
 
     # This variable tells wrapper scripts just to set variables rather
     # than running their programs.
-    libtool_install_magic="$magic"
+    libtool_install_magic=$magic
 
     staticlibs=
     future_libdirs=
@@ -2928,7 +4249,7 @@
 
 	# Check to see that this really is a libtool archive.
 	func_lalib_unsafe_p "$file" \
-	  || func_fatal_help "\`$file' is not a valid libtool archive"
+	  || func_fatal_help "'$file' is not a valid libtool archive"
 
 	library_names=
 	old_library=
@@ -2950,7 +4271,7 @@
 	fi
 
 	func_dirname "$file" "/" ""
-	dir="$func_dirname_result"
+	dir=$func_dirname_result
 	func_append dir "$objdir"
 
 	if test -n "$relink_command"; then
@@ -2964,7 +4285,7 @@
 	  # are installed into $libdir/../bin (currently, that works fine)
 	  # but it's something to keep an eye on.
 	  test "$inst_prefix_dir" = "$destdir" && \
-	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+	    func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir"
 
 	  if test -n "$inst_prefix_dir"; then
 	    # Stick the inst_prefix_dir data into the link command.
@@ -2973,29 +4294,36 @@
 	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
 	  fi
 
-	  func_warning "relinking \`$file'"
+	  func_warning "relinking '$file'"
 	  func_show_eval "$relink_command" \
-	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+	    'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"'
 	fi
 
 	# See the names of the shared library.
 	set dummy $library_names; shift
 	if test -n "$1"; then
-	  realname="$1"
+	  realname=$1
 	  shift
 
-	  srcname="$realname"
-	  test -n "$relink_command" && srcname="$realname"T
+	  srcname=$realname
+	  test -n "$relink_command" && srcname=${realname}T
 
 	  # Install the shared library and build the symlinks.
 	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
 	      'exit $?'
-	  tstripme="$stripme"
+	  tstripme=$stripme
 	  case $host_os in
 	  cygwin* | mingw* | pw32* | cegcc*)
 	    case $realname in
 	    *.dll.a)
-	      tstripme=""
+	      tstripme=
+	      ;;
+	    esac
+	    ;;
+	  os2*)
+	    case $realname in
+	    *_dll.a)
+	      tstripme=
 	      ;;
 	    esac
 	    ;;
@@ -3006,7 +4334,7 @@
 
 	  if test "$#" -gt 0; then
 	    # Delete the old symlinks, and create new ones.
-	    # Try `ln -sf' first, because the `ln' binary might depend on
+	    # Try 'ln -sf' first, because the 'ln' binary might depend on
 	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
 	    # so we also need to try rm && ln -s.
 	    for linkname
@@ -3017,14 +4345,14 @@
 	  fi
 
 	  # Do each command in the postinstall commands.
-	  lib="$destdir/$realname"
+	  lib=$destdir/$realname
 	  func_execute_cmds "$postinstall_cmds" 'exit $?'
 	fi
 
 	# Install the pseudo-library for information purposes.
 	func_basename "$file"
-	name="$func_basename_result"
-	instname="$dir/$name"i
+	name=$func_basename_result
+	instname=$dir/${name}i
 	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
 
 	# Maybe install the static library, too.
@@ -3036,11 +4364,11 @@
 
 	# Figure out destination file name, if it wasn't already specified.
 	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
+	  destfile=$destdir/$destname
 	else
 	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
+	  destfile=$func_basename_result
+	  destfile=$destdir/$destfile
 	fi
 
 	# Deduce the name of the destination old-style object file.
@@ -3050,11 +4378,11 @@
 	  staticdest=$func_lo2o_result
 	  ;;
 	*.$objext)
-	  staticdest="$destfile"
+	  staticdest=$destfile
 	  destfile=
 	  ;;
 	*)
-	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
+	  func_fatal_help "cannot copy a libtool object to '$destfile'"
 	  ;;
 	esac
 
@@ -3063,7 +4391,7 @@
 	  func_show_eval "$install_prog $file $destfile" 'exit $?'
 
 	# Install the old object if enabled.
-	if test "$build_old_libs" = yes; then
+	if test yes = "$build_old_libs"; then
 	  # Deduce the name of the old-style object file.
 	  func_lo2o "$file"
 	  staticobj=$func_lo2o_result
@@ -3075,23 +4403,23 @@
       *)
 	# Figure out destination file name, if it wasn't already specified.
 	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
+	  destfile=$destdir/$destname
 	else
 	  func_basename "$file"
-	  destfile="$func_basename_result"
-	  destfile="$destdir/$destfile"
+	  destfile=$func_basename_result
+	  destfile=$destdir/$destfile
 	fi
 
 	# If the file is missing, and there is a .exe on the end, strip it
 	# because it is most likely a libtool script we actually want to
 	# install
-	stripped_ext=""
+	stripped_ext=
 	case $file in
 	  *.exe)
 	    if test ! -f "$file"; then
 	      func_stripname '' '.exe' "$file"
 	      file=$func_stripname_result
-	      stripped_ext=".exe"
+	      stripped_ext=.exe
 	    fi
 	    ;;
 	esac
@@ -3119,19 +4447,19 @@
 
 	  # Check the variables that should have been set.
 	  test -z "$generated_by_libtool_version" && \
-	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+	    func_fatal_error "invalid libtool wrapper script '$wrapper'"
 
-	  finalize=yes
+	  finalize=:
 	  for lib in $notinst_deplibs; do
 	    # Check to see that each library is installed.
 	    libdir=
 	    if test -f "$lib"; then
 	      func_source "$lib"
 	    fi
-	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'`
 	    if test -n "$libdir" && test ! -f "$libfile"; then
-	      func_warning "\`$lib' has not been installed in \`$libdir'"
-	      finalize=no
+	      func_warning "'$lib' has not been installed in '$libdir'"
+	      finalize=false
 	    fi
 	  done
 
@@ -3139,29 +4467,29 @@
 	  func_source "$wrapper"
 
 	  outputname=
-	  if test "$fast_install" = no && test -n "$relink_command"; then
+	  if test no = "$fast_install" && test -n "$relink_command"; then
 	    $opt_dry_run || {
-	      if test "$finalize" = yes; then
+	      if $finalize; then
 	        tmpdir=`func_mktempdir`
 		func_basename "$file$stripped_ext"
-		file="$func_basename_result"
-	        outputname="$tmpdir/$file"
+		file=$func_basename_result
+	        outputname=$tmpdir/$file
 	        # Replace the output file specification.
 	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
 
-	        $opt_silent || {
+	        $opt_quiet || {
 	          func_quote_for_expand "$relink_command"
 		  eval "func_echo $func_quote_for_expand_result"
 	        }
 	        if eval "$relink_command"; then :
 	          else
-		  func_error "error: relink \`$file' with the above command before installing it"
+		  func_error "error: relink '$file' with the above command before installing it"
 		  $opt_dry_run || ${RM}r "$tmpdir"
 		  continue
 	        fi
-	        file="$outputname"
+	        file=$outputname
 	      else
-	        func_warning "cannot relink \`$file'"
+	        func_warning "cannot relink '$file'"
 	      fi
 	    }
 	  else
@@ -3198,10 +4526,10 @@
 
     for file in $staticlibs; do
       func_basename "$file"
-      name="$func_basename_result"
+      name=$func_basename_result
 
       # Set up the ranlib parameters.
-      oldlib="$destdir/$name"
+      oldlib=$destdir/$name
       func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
       tool_oldlib=$func_to_tool_file_result
 
@@ -3216,18 +4544,18 @@
     done
 
     test -n "$future_libdirs" && \
-      func_warning "remember to run \`$progname --finish$future_libdirs'"
+      func_warning "remember to run '$progname --finish$future_libdirs'"
 
     if test -n "$current_libdirs"; then
       # Maybe just do a dry run.
       $opt_dry_run && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+      exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs'
     else
       exit $EXIT_SUCCESS
     fi
 }
 
-test "$opt_mode" = install && func_mode_install ${1+"$@"}
+test install = "$opt_mode" && func_mode_install ${1+"$@"}
 
 
 # func_generate_dlsyms outputname originator pic_p
@@ -3235,16 +4563,17 @@
 # a dlpreopen symbol table.
 func_generate_dlsyms ()
 {
-    $opt_debug
-    my_outputname="$1"
-    my_originator="$2"
-    my_pic_p="${3-no}"
-    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+    $debug_cmd
+
+    my_outputname=$1
+    my_originator=$2
+    my_pic_p=${3-false}
+    my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'`
     my_dlsyms=
 
-    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+    if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
       if test -n "$NM" && test -n "$global_symbol_pipe"; then
-	my_dlsyms="${my_outputname}S.c"
+	my_dlsyms=${my_outputname}S.c
       else
 	func_error "not configured to extract global symbols from dlpreopened files"
       fi
@@ -3255,7 +4584,7 @@
       "") ;;
       *.c)
 	# Discover the nlist of each of the dlfiles.
-	nlist="$output_objdir/${my_outputname}.nm"
+	nlist=$output_objdir/$my_outputname.nm
 
 	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
 
@@ -3263,34 +4592,36 @@
 	func_verbose "creating $output_objdir/$my_dlsyms"
 
 	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */
 
 #ifdef __cplusplus
 extern \"C\" {
 #endif
 
-#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
 #pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
 #endif
 
 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
    relocations are performed -- see ld's documentation on pseudo-relocs.  */
 # define LT_DLSYM_CONST
-#elif defined(__osf__)
+#elif defined __osf__
 /* This system does not cope well with relocations in const data.  */
 # define LT_DLSYM_CONST
 #else
 # define LT_DLSYM_CONST const
 #endif
 
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
 /* External symbol declarations for the compiler. */\
 "
 
-	if test "$dlself" = yes; then
-	  func_verbose "generating symbol list for \`$output'"
+	if test yes = "$dlself"; then
+	  func_verbose "generating symbol list for '$output'"
 
 	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
 
@@ -3298,7 +4629,7 @@
 	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
 	  for progfile in $progfiles; do
 	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
-	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
+	    func_verbose "extracting global C symbols from '$func_to_tool_file_result'"
 	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
 	  done
 
@@ -3318,10 +4649,10 @@
 
 	  # Prepare the list of exported symbols
 	  if test -z "$export_symbols"; then
-	    export_symbols="$output_objdir/$outputname.exp"
+	    export_symbols=$output_objdir/$outputname.exp
 	    $opt_dry_run || {
 	      $RM $export_symbols
-	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	      eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
 	      case $host in
 	      *cygwin* | *mingw* | *cegcc* )
                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
@@ -3331,7 +4662,7 @@
 	    }
 	  else
 	    $opt_dry_run || {
-	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
 	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
 	      eval '$MV "$nlist"T "$nlist"'
 	      case $host in
@@ -3345,22 +4676,22 @@
 	fi
 
 	for dlprefile in $dlprefiles; do
-	  func_verbose "extracting global C symbols from \`$dlprefile'"
+	  func_verbose "extracting global C symbols from '$dlprefile'"
 	  func_basename "$dlprefile"
-	  name="$func_basename_result"
+	  name=$func_basename_result
           case $host in
 	    *cygwin* | *mingw* | *cegcc* )
 	      # if an import library, we need to obtain dlname
 	      if func_win32_import_lib_p "$dlprefile"; then
 	        func_tr_sh "$dlprefile"
 	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
-	        dlprefile_dlbasename=""
+	        dlprefile_dlbasename=
 	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
 	          # Use subshell, to avoid clobbering current variable values
 	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
-	          if test -n "$dlprefile_dlname" ; then
+	          if test -n "$dlprefile_dlname"; then
 	            func_basename "$dlprefile_dlname"
-	            dlprefile_dlbasename="$func_basename_result"
+	            dlprefile_dlbasename=$func_basename_result
 	          else
 	            # no lafile. user explicitly requested -dlpreopen <import library>.
 	            $sharedlib_from_linklib_cmd "$dlprefile"
@@ -3368,7 +4699,7 @@
 	          fi
 	        fi
 	        $opt_dry_run || {
-	          if test -n "$dlprefile_dlbasename" ; then
+	          if test -n "$dlprefile_dlbasename"; then
 	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
 	          else
 	            func_warning "Could not compute DLL name from $name"
@@ -3424,6 +4755,11 @@
 	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
 	  fi
 
+	  func_show_eval '$RM "${nlist}I"'
+	  if test -n "$global_symbol_to_import"; then
+	    eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I'
+	  fi
+
 	  echo >> "$output_objdir/$my_dlsyms" "\
 
 /* The mapping between symbol names and symbols.  */
@@ -3432,11 +4768,30 @@
   void *address;
 } lt_dlsymlist;
 extern LT_DLSYM_CONST lt_dlsymlist
-lt_${my_prefix}_LTX_preloaded_symbols[];
+lt_${my_prefix}_LTX_preloaded_symbols[];\
+"
+
+	  if test -s "$nlist"I; then
+	    echo >> "$output_objdir/$my_dlsyms" "\
+static void lt_syminit(void)
+{
+  LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols;
+  for (; symbol->name; ++symbol)
+    {"
+	    $SED 's/.*/      if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms"
+	    echo >> "$output_objdir/$my_dlsyms" "\
+    }
+}"
+	  fi
+	  echo >> "$output_objdir/$my_dlsyms" "\
 LT_DLSYM_CONST lt_dlsymlist
 lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
-  { \"$my_originator\", (void *) 0 },"
+{ {\"$my_originator\", (void *) 0},"
+
+	  if test -s "$nlist"I; then
+	    echo >> "$output_objdir/$my_dlsyms" "\
+  {\"@INIT@\", (void *) &lt_syminit},"
+	  fi
 
 	  case $need_lib_prefix in
 	  no)
@@ -3478,9 +4833,7 @@
 	  *-*-hpux*)
 	    pic_flag_for_symtable=" $pic_flag"  ;;
 	  *)
-	    if test "X$my_pic_p" != Xno; then
-	      pic_flag_for_symtable=" $pic_flag"
-	    fi
+	    $my_pic_p && pic_flag_for_symtable=" $pic_flag"
 	    ;;
 	  esac
 	  ;;
@@ -3497,10 +4850,10 @@
 	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
 
 	# Clean up the generated files.
-	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"'
 
 	# Transform the symbol file into the correct name.
-	symfileobj="$output_objdir/${my_outputname}S.$objext"
+	symfileobj=$output_objdir/${my_outputname}S.$objext
 	case $host in
 	*cygwin* | *mingw* | *cegcc* )
 	  if test -f "$output_objdir/$my_outputname.def"; then
@@ -3518,7 +4871,7 @@
 	esac
 	;;
       *)
-	func_fatal_error "unknown suffix for \`$my_dlsyms'"
+	func_fatal_error "unknown suffix for '$my_dlsyms'"
 	;;
       esac
     else
@@ -3532,6 +4885,32 @@
     fi
 }
 
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+  $debug_cmd
+
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+  test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+  $debug_cmd
+
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+  test -n "$func_cygming_ms_implib_tmp"
+}
+
 # func_win32_libid arg
 # return the library type of file 'arg'
 #
@@ -3541,8 +4920,9 @@
 # Despite the name, also deal with 64 bit binaries.
 func_win32_libid ()
 {
-  $opt_debug
-  win32_libid_type="unknown"
+  $debug_cmd
+
+  win32_libid_type=unknown
   win32_fileres=`file -L $1 2>/dev/null`
   case $win32_fileres in
   *ar\ archive\ import\ library*) # definitely import
@@ -3552,16 +4932,29 @@
     # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
        $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
-      func_to_tool_file "$1" func_convert_file_msys_to_w32
-      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
-	$SED -n -e '
+      case $nm_interface in
+      "MS dumpbin")
+	if func_cygming_ms_implib_p "$1" ||
+	   func_cygming_gnu_implib_p "$1"
+	then
+	  win32_nmres=import
+	else
+	  win32_nmres=
+	fi
+	;;
+      *)
+	func_to_tool_file "$1" func_convert_file_msys_to_w32
+	win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+	  $SED -n -e '
 	    1,100{
 		/ I /{
-		    s,.*,import,
+		    s|.*|import|
 		    p
 		    q
 		}
 	    }'`
+	;;
+      esac
       case $win32_nmres in
       import*)  win32_libid_type="x86 archive import";;
       *)        win32_libid_type="x86 archive static";;
@@ -3593,7 +4986,8 @@
 #    $sharedlib_from_linklib_result
 func_cygming_dll_for_implib ()
 {
-  $opt_debug
+  $debug_cmd
+
   sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
 }
 
@@ -3610,7 +5004,8 @@
 # specified import library.
 func_cygming_dll_for_implib_fallback_core ()
 {
-  $opt_debug
+  $debug_cmd
+
   match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
   $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
     $SED '/^Contents of section '"$match_literal"':/{
@@ -3646,8 +5041,8 @@
       /./p' |
     # we now have a list, one entry per line, of the stringified
     # contents of the appropriate section of all members of the
-    # archive which possess that section. Heuristic: eliminate
-    # all those which have a first or second character that is
+    # archive that possess that section. Heuristic: eliminate
+    # all those that have a first or second character that is
     # a '.' (that is, objdump's representation of an unprintable
     # character.) This should work for all archives with less than
     # 0x302f exports -- but will fail for DLLs whose name actually
@@ -3658,30 +5053,6 @@
     $SED -e '/^\./d;/^.\./d;q'
 }
 
-# func_cygming_gnu_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is a GNU/binutils-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_gnu_implib_p ()
-{
-  $opt_debug
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
-  test -n "$func_cygming_gnu_implib_tmp"
-}
-
-# func_cygming_ms_implib_p ARG
-# This predicate returns with zero status (TRUE) if
-# ARG is an MS-style import library. Returns
-# with nonzero status (FALSE) otherwise.
-func_cygming_ms_implib_p ()
-{
-  $opt_debug
-  func_to_tool_file "$1" func_convert_file_msys_to_w32
-  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
-  test -n "$func_cygming_ms_implib_tmp"
-}
-
 # func_cygming_dll_for_implib_fallback ARG
 # Platform-specific function to extract the
 # name of the DLL associated with the specified
@@ -3695,16 +5066,17 @@
 #    $sharedlib_from_linklib_result
 func_cygming_dll_for_implib_fallback ()
 {
-  $opt_debug
-  if func_cygming_gnu_implib_p "$1" ; then
+  $debug_cmd
+
+  if func_cygming_gnu_implib_p "$1"; then
     # binutils import library
     sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
-  elif func_cygming_ms_implib_p "$1" ; then
+  elif func_cygming_ms_implib_p "$1"; then
     # ms-generated import library
     sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
   else
     # unknown
-    sharedlib_from_linklib_result=""
+    sharedlib_from_linklib_result=
   fi
 }
 
@@ -3712,10 +5084,11 @@
 # func_extract_an_archive dir oldlib
 func_extract_an_archive ()
 {
-    $opt_debug
-    f_ex_an_ar_dir="$1"; shift
-    f_ex_an_ar_oldlib="$1"
-    if test "$lock_old_archive_extraction" = yes; then
+    $debug_cmd
+
+    f_ex_an_ar_dir=$1; shift
+    f_ex_an_ar_oldlib=$1
+    if test yes = "$lock_old_archive_extraction"; then
       lockfile=$f_ex_an_ar_oldlib.lock
       until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
 	func_echo "Waiting for $lockfile to be removed"
@@ -3724,7 +5097,7 @@
     fi
     func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
 		   'stat=$?; rm -f "$lockfile"; exit $stat'
-    if test "$lock_old_archive_extraction" = yes; then
+    if test yes = "$lock_old_archive_extraction"; then
       $opt_dry_run || rm -f "$lockfile"
     fi
     if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
@@ -3738,22 +5111,23 @@
 # func_extract_archives gentop oldlib ...
 func_extract_archives ()
 {
-    $opt_debug
-    my_gentop="$1"; shift
+    $debug_cmd
+
+    my_gentop=$1; shift
     my_oldlibs=${1+"$@"}
-    my_oldobjs=""
-    my_xlib=""
-    my_xabs=""
-    my_xdir=""
+    my_oldobjs=
+    my_xlib=
+    my_xabs=
+    my_xdir=
 
     for my_xlib in $my_oldlibs; do
       # Extract the objects.
       case $my_xlib in
-	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;;
 	*) my_xabs=`pwd`"/$my_xlib" ;;
       esac
       func_basename "$my_xlib"
-      my_xlib="$func_basename_result"
+      my_xlib=$func_basename_result
       my_xlib_u=$my_xlib
       while :; do
         case " $extracted_archives " in
@@ -3765,7 +5139,7 @@
 	esac
       done
       extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir="$my_gentop/$my_xlib_u"
+      my_xdir=$my_gentop/$my_xlib_u
 
       func_mkdir_p "$my_xdir"
 
@@ -3778,22 +5152,23 @@
 	  cd $my_xdir || exit $?
 	  darwin_archive=$my_xabs
 	  darwin_curdir=`pwd`
-	  darwin_base_archive=`basename "$darwin_archive"`
+	  func_basename "$darwin_archive"
+	  darwin_base_archive=$func_basename_result
 	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
 	  if test -n "$darwin_arches"; then
 	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
 	    darwin_arch=
 	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
-	    for darwin_arch in  $darwin_arches ; do
-	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
-	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+	    for darwin_arch in  $darwin_arches; do
+	      func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch"
+	      $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive"
+	      cd "unfat-$$/$darwin_base_archive-$darwin_arch"
+	      func_extract_an_archive "`pwd`" "$darwin_base_archive"
 	      cd "$darwin_curdir"
-	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+	      $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive"
 	    done # $darwin_arches
             ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u`
 	    darwin_file=
 	    darwin_files=
 	    for darwin_file in $darwin_filelist; do
@@ -3815,7 +5190,7 @@
       my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
     done
 
-    func_extract_archives_result="$my_oldobjs"
+    func_extract_archives_result=$my_oldobjs
 }
 
 
@@ -3830,7 +5205,7 @@
 #
 # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
 # variable will take.  If 'yes', then the emitted script
-# will assume that the directory in which it is stored is
+# will assume that the directory where it is stored is
 # the $objdir directory.  This is a cygwin/mingw-specific
 # behavior.
 func_emit_wrapper ()
@@ -3841,7 +5216,7 @@
 #! $SHELL
 
 # $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
 #
 # The $output program cannot be directly executed until all the libtool
 # libraries that it depends on are installed.
@@ -3898,9 +5273,9 @@
 
 # Very basic option parsing. These options are (a) specific to
 # the libtool wrapper, (b) are identical between the wrapper
-# /script/ and the wrapper /executable/ which is used only on
+# /script/ and the wrapper /executable/ that is used only on
 # windows platforms, and (c) all begin with the string "--lt-"
-# (application programs are unlikely to have options which match
+# (application programs are unlikely to have options that match
 # this pattern).
 #
 # There are only two supported options: --lt-debug and
@@ -3933,7 +5308,7 @@
 
   # Print the debug banner immediately:
   if test -n \"\$lt_option_debug\"; then
-    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
+    echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2
   fi
 }
 
@@ -3944,7 +5319,7 @@
   lt_dump_args_N=1;
   for lt_arg
   do
-    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
+    \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\"
     lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
   done
 }
@@ -3958,7 +5333,7 @@
   *-*-mingw | *-*-os2* | *-cegcc*)
     $ECHO "\
       if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
+        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2
         func_lt_dump_args \${1+\"\$@\"} 1>&2
       fi
       exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
@@ -3968,7 +5343,7 @@
   *)
     $ECHO "\
       if test -n \"\$lt_option_debug\"; then
-        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
+        \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2
         func_lt_dump_args \${1+\"\$@\"} 1>&2
       fi
       exec \"\$progdir/\$program\" \${1+\"\$@\"}
@@ -4043,13 +5418,13 @@
   test -n \"\$absdir\" && thisdir=\"\$absdir\"
 "
 
-	if test "$fast_install" = yes; then
+	if test yes = "$fast_install"; then
 	  $ECHO "\
   program=lt-'$outputname'$exeext
   progdir=\"\$thisdir/$objdir\"
 
   if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\
        test \"X\$file\" != \"X\$progdir/\$program\"; }; then
 
     file=\"\$\$-\$program\"
@@ -4066,7 +5441,7 @@
     if test -n \"\$relink_command\"; then
       if relink_command_output=\`eval \$relink_command 2>&1\`; then :
       else
-	$ECHO \"\$relink_command_output\" >&2
+	\$ECHO \"\$relink_command_output\" >&2
 	$RM \"\$progdir/\$file\"
 	exit 1
       fi
@@ -4101,7 +5476,7 @@
 	fi
 
 	# Export our shlibpath_var if we have one.
-	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
 	  $ECHO "\
     # Add our own library path to $shlibpath_var
     $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
@@ -4121,7 +5496,7 @@
     fi
   else
     # The program doesn't exist.
-    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2
     \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
     \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
     exit 1
@@ -4140,7 +5515,7 @@
 	cat <<EOF
 
 /* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+   Generated by $PROGRAM (GNU $PACKAGE) $VERSION
 
    The $output program cannot be directly executed until all the libtool
    libraries that it depends on are installed.
@@ -4175,47 +5550,45 @@
 #include <fcntl.h>
 #include <sys/stat.h>
 
+#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0)
+
 /* declarations of non-ANSI functions */
-#if defined(__MINGW32__)
+#if defined __MINGW32__
 # ifdef __STRICT_ANSI__
 int _putenv (const char *);
 # endif
-#elif defined(__CYGWIN__)
+#elif defined __CYGWIN__
 # ifdef __STRICT_ANSI__
 char *realpath (const char *, char *);
 int putenv (char *);
 int setenv (const char *, const char *, int);
 # endif
-/* #elif defined (other platforms) ... */
+/* #elif defined other_platform || defined ... */
 #endif
 
 /* portability defines, excluding path handling macros */
-#if defined(_MSC_VER)
+#if defined _MSC_VER
 # define setmode _setmode
 # define stat    _stat
 # define chmod   _chmod
 # define getcwd  _getcwd
 # define putenv  _putenv
 # define S_IXUSR _S_IEXEC
-# ifndef _INTPTR_T_DEFINED
-#  define _INTPTR_T_DEFINED
-#  define intptr_t int
-# endif
-#elif defined(__MINGW32__)
+#elif defined __MINGW32__
 # define setmode _setmode
 # define stat    _stat
 # define chmod   _chmod
 # define getcwd  _getcwd
 # define putenv  _putenv
-#elif defined(__CYGWIN__)
+#elif defined __CYGWIN__
 # define HAVE_SETENV
 # define FOPEN_WB "wb"
-/* #elif defined (other platforms) ... */
+/* #elif defined other platforms ... */
 #endif
 
-#if defined(PATH_MAX)
+#if defined PATH_MAX
 # define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
+#elif defined MAXPATHLEN
 # define LT_PATHMAX MAXPATHLEN
 #else
 # define LT_PATHMAX 1024
@@ -4234,8 +5607,8 @@
 # define PATH_SEPARATOR ':'
 #endif
 
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
-  defined (__OS2__)
+#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \
+  defined __OS2__
 # define HAVE_DOS_BASED_FILE_SYSTEM
 # define FOPEN_WB "wb"
 # ifndef DIR_SEPARATOR_2
@@ -4268,10 +5641,10 @@
 
 #define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
 #define XFREE(stale) do { \
-  if (stale) { free ((void *) stale); stale = 0; } \
+  if (stale) { free (stale); stale = 0; } \
 } while (0)
 
-#if defined(LT_DEBUGWRAPPER)
+#if defined LT_DEBUGWRAPPER
 static int lt_debug = 1;
 #else
 static int lt_debug = 0;
@@ -4300,11 +5673,16 @@
 EOF
 
 	    cat <<EOF
-volatile const char * MAGIC_EXE = "$magic_exe";
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
+# define externally_visible volatile
+#else
+# define externally_visible __attribute__((externally_visible)) volatile
+#endif
+externally_visible const char * MAGIC_EXE = "$magic_exe";
 const char * LIB_PATH_VARNAME = "$shlibpath_var";
 EOF
 
-	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	    if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
               func_to_host_path "$temp_rpath"
 	      cat <<EOF
 const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
@@ -4328,7 +5706,7 @@
 EOF
 	    fi
 
-	    if test "$fast_install" = yes; then
+	    if test yes = "$fast_install"; then
 	      cat <<EOF
 const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
 EOF
@@ -4357,12 +5735,12 @@
   char *actual_cwrapper_name;
   char *target_name;
   char *lt_argv_zero;
-  intptr_t rval = 127;
+  int rval = 127;
 
   int i;
 
   program_name = (char *) xstrdup (base_name (argv[0]));
-  newargz = XMALLOC (char *, argc + 1);
+  newargz = XMALLOC (char *, (size_t) argc + 1);
 
   /* very simple arg parsing; don't want to rely on getopt
    * also, copy all non cwrapper options to newargz, except
@@ -4371,10 +5749,10 @@
   newargc=0;
   for (i = 1; i < argc; i++)
     {
-      if (strcmp (argv[i], dumpscript_opt) == 0)
+      if (STREQ (argv[i], dumpscript_opt))
 	{
 EOF
-	    case "$host" in
+	    case $host in
 	      *mingw* | *cygwin* )
 		# make stdout use "unix" line endings
 		echo "          setmode(1,_O_BINARY);"
@@ -4385,12 +5763,12 @@
 	  lt_dump_script (stdout);
 	  return 0;
 	}
-      if (strcmp (argv[i], debug_opt) == 0)
+      if (STREQ (argv[i], debug_opt))
 	{
           lt_debug = 1;
           continue;
 	}
-      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+      if (STREQ (argv[i], ltwrapper_option_prefix))
         {
           /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
              namespace, but it is not one of the ones we know about and
@@ -4413,7 +5791,7 @@
 EOF
 	    cat <<EOF
   /* The GNU banner must be the first non-error debug message */
-  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE) $VERSION\n");
 EOF
 	    cat <<"EOF"
   lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
@@ -4524,7 +5902,7 @@
 		cat <<"EOF"
   /* execv doesn't actually work on mingw as expected on unix */
   newargz = prepare_spawn (newargz);
-  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  rval = (int) _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
   if (rval == -1)
     {
       /* failed to start process */
@@ -4569,7 +5947,7 @@
 {
   const char *base;
 
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
   /* Skip over the disk name in MSDOS pathnames. */
   if (isalpha ((unsigned char) name[0]) && name[1] == ':')
     name += 2;
@@ -4628,7 +6006,7 @@
   const char *p_next;
   /* static buffer for getcwd */
   char tmp[LT_PATHMAX + 1];
-  int tmp_len;
+  size_t tmp_len;
   char *concat_name;
 
   lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
@@ -4638,7 +6016,7 @@
     return NULL;
 
   /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
   if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
     {
       concat_name = xstrdup (wrapper);
@@ -4656,7 +6034,7 @@
 	    return concat_name;
 	  XFREE (concat_name);
 	}
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+#if defined HAVE_DOS_BASED_FILE_SYSTEM
     }
 #endif
 
@@ -4679,7 +6057,7 @@
 	      for (q = p; *q; q++)
 		if (IS_PATH_SEPARATOR (*q))
 		  break;
-	      p_len = q - p;
+	      p_len = (size_t) (q - p);
 	      p_next = (*q == '\0' ? q : q + 1);
 	      if (p_len == 0)
 		{
@@ -4798,7 +6176,7 @@
   if (patlen <= len)
     {
       str += len - patlen;
-      if (strcmp (str, pat) == 0)
+      if (STREQ (str, pat))
 	*str = '\0';
     }
   return str;
@@ -4863,7 +6241,7 @@
     char *str = xstrdup (value);
     setenv (name, str, 1);
 #else
-    int len = strlen (name) + 1 + strlen (value) + 1;
+    size_t len = strlen (name) + 1 + strlen (value) + 1;
     char *str = XMALLOC (char, len);
     sprintf (str, "%s=%s", name, value);
     if (putenv (str) != EXIT_SUCCESS)
@@ -4880,8 +6258,8 @@
   char *new_value;
   if (orig_value && *orig_value)
     {
-      int orig_value_len = strlen (orig_value);
-      int add_len = strlen (add);
+      size_t orig_value_len = strlen (orig_value);
+      size_t add_len = strlen (add);
       new_value = XMALLOC (char, add_len + orig_value_len + 1);
       if (to_end)
         {
@@ -4912,10 +6290,10 @@
     {
       char *new_value = lt_extend_str (getenv (name), value, 0);
       /* some systems can't cope with a ':'-terminated path #' */
-      int len = strlen (new_value);
-      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+      size_t len = strlen (new_value);
+      while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
         {
-          new_value[len-1] = '\0';
+          new_value[--len] = '\0';
         }
       lt_setenv (name, new_value);
       XFREE (new_value);
@@ -5082,27 +6460,47 @@
 # True if ARG is an import lib, as indicated by $file_magic_cmd
 func_win32_import_lib_p ()
 {
-    $opt_debug
+    $debug_cmd
+
     case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
     *import*) : ;;
     *) false ;;
     esac
 }
 
+# func_suncc_cstd_abi
+# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
+# Several compiler flags select an ABI that is incompatible with the
+# Cstd library. Avoid specifying it if any are in CXXFLAGS.
+func_suncc_cstd_abi ()
+{
+    $debug_cmd
+
+    case " $compile_command " in
+    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*)
+      suncc_use_cstd_abi=no
+      ;;
+    *)
+      suncc_use_cstd_abi=yes
+      ;;
+    esac
+}
+
 # func_mode_link arg...
 func_mode_link ()
 {
-    $opt_debug
+    $debug_cmd
+
     case $host in
     *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
       # It is impossible to link a dll without this setting, and
       # we shouldn't force the makefile maintainer to figure out
-      # which system we are compiling for in order to pass an extra
+      # what system we are compiling for in order to pass an extra
       # flag for every libtool invocation.
       # allow_undefined=no
 
       # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll which has undefined symbols, in which case not
+      # to make a dll that has undefined symbols, in which case not
       # even a static library is built.  For now, we need to specify
       # -no-undefined on the libtool link line when we can be certain
       # that all symbols are satisfied, otherwise we get a static library.
@@ -5146,10 +6544,11 @@
     module=no
     no_install=no
     objs=
+    os2dllname=
     non_pic_objects=
     precious_files_regex=
     prefer_static_libs=no
-    preload=no
+    preload=false
     prev=
     prevarg=
     release=
@@ -5161,7 +6560,7 @@
     vinfo=
     vinfo_number=no
     weak_libs=
-    single_module="${wl}-single_module"
+    single_module=$wl-single_module
     func_infer_tag $base_compile
 
     # We need to know -static, to get the right output filenames.
@@ -5169,15 +6568,15 @@
     do
       case $arg in
       -shared)
-	test "$build_libtool_libs" != yes && \
-	  func_fatal_configuration "can not build a shared library"
+	test yes != "$build_libtool_libs" \
+	  && func_fatal_configuration "cannot build a shared library"
 	build_old_libs=no
 	break
 	;;
       -all-static | -static | -static-libtool-libs)
 	case $arg in
 	-all-static)
-	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	  if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then
 	    func_warning "complete static linking is impossible in this configuration"
 	  fi
 	  if test -n "$link_static_flag"; then
@@ -5210,7 +6609,7 @@
 
     # Go through the arguments, transforming them on the way.
     while test "$#" -gt 0; do
-      arg="$1"
+      arg=$1
       shift
       func_quote_for_eval "$arg"
       qarg=$func_quote_for_eval_unquoted_result
@@ -5227,21 +6626,21 @@
 
 	case $prev in
 	bindir)
-	  bindir="$arg"
+	  bindir=$arg
 	  prev=
 	  continue
 	  ;;
 	dlfiles|dlprefiles)
-	  if test "$preload" = no; then
+	  $preload || {
 	    # Add the symbol object into the linking commands.
 	    func_append compile_command " @SYMFILE@"
 	    func_append finalize_command " @SYMFILE@"
-	    preload=yes
-	  fi
+	    preload=:
+	  }
 	  case $arg in
 	  *.la | *.lo) ;;  # We handle these cases below.
 	  force)
-	    if test "$dlself" = no; then
+	    if test no = "$dlself"; then
 	      dlself=needless
 	      export_dynamic=yes
 	    fi
@@ -5249,9 +6648,9 @@
 	    continue
 	    ;;
 	  self)
-	    if test "$prev" = dlprefiles; then
+	    if test dlprefiles = "$prev"; then
 	      dlself=yes
-	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	    elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then
 	      dlself=yes
 	    else
 	      dlself=needless
@@ -5261,7 +6660,7 @@
 	    continue
 	    ;;
 	  *)
-	    if test "$prev" = dlfiles; then
+	    if test dlfiles = "$prev"; then
 	      func_append dlfiles " $arg"
 	    else
 	      func_append dlprefiles " $arg"
@@ -5272,14 +6671,14 @@
 	  esac
 	  ;;
 	expsyms)
-	  export_symbols="$arg"
+	  export_symbols=$arg
 	  test -f "$arg" \
-	    || func_fatal_error "symbol file \`$arg' does not exist"
+	    || func_fatal_error "symbol file '$arg' does not exist"
 	  prev=
 	  continue
 	  ;;
 	expsyms_regex)
-	  export_symbols_regex="$arg"
+	  export_symbols_regex=$arg
 	  prev=
 	  continue
 	  ;;
@@ -5297,7 +6696,13 @@
 	  continue
 	  ;;
 	inst_prefix)
-	  inst_prefix_dir="$arg"
+	  inst_prefix_dir=$arg
+	  prev=
+	  continue
+	  ;;
+	mllvm)
+	  # Clang does not use LLVM to link, so we can simply discard any
+	  # '-mllvm $arg' options when doing the link step.
 	  prev=
 	  continue
 	  ;;
@@ -5321,21 +6726,21 @@
 
 		if test -z "$pic_object" ||
 		   test -z "$non_pic_object" ||
-		   test "$pic_object" = none &&
-		   test "$non_pic_object" = none; then
-		  func_fatal_error "cannot find name of object for \`$arg'"
+		   test none = "$pic_object" &&
+		   test none = "$non_pic_object"; then
+		  func_fatal_error "cannot find name of object for '$arg'"
 		fi
 
 		# Extract subdirectory from the argument.
 		func_dirname "$arg" "/" ""
-		xdir="$func_dirname_result"
+		xdir=$func_dirname_result
 
-		if test "$pic_object" != none; then
+		if test none != "$pic_object"; then
 		  # Prepend the subdirectory the object is found in.
-		  pic_object="$xdir$pic_object"
+		  pic_object=$xdir$pic_object
 
-		  if test "$prev" = dlfiles; then
-		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		  if test dlfiles = "$prev"; then
+		    if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
 		      func_append dlfiles " $pic_object"
 		      prev=
 		      continue
@@ -5346,7 +6751,7 @@
 		  fi
 
 		  # CHECK ME:  I think I busted this.  -Ossama
-		  if test "$prev" = dlprefiles; then
+		  if test dlprefiles = "$prev"; then
 		    # Preload the old-style object.
 		    func_append dlprefiles " $pic_object"
 		    prev=
@@ -5354,23 +6759,23 @@
 
 		  # A PIC object.
 		  func_append libobjs " $pic_object"
-		  arg="$pic_object"
+		  arg=$pic_object
 		fi
 
 		# Non-PIC object.
-		if test "$non_pic_object" != none; then
+		if test none != "$non_pic_object"; then
 		  # Prepend the subdirectory the object is found in.
-		  non_pic_object="$xdir$non_pic_object"
+		  non_pic_object=$xdir$non_pic_object
 
 		  # A standard non-PIC object
 		  func_append non_pic_objects " $non_pic_object"
-		  if test -z "$pic_object" || test "$pic_object" = none ; then
-		    arg="$non_pic_object"
+		  if test -z "$pic_object" || test none = "$pic_object"; then
+		    arg=$non_pic_object
 		  fi
 		else
 		  # If the PIC object exists, use it instead.
 		  # $xdir was prepended to $pic_object above.
-		  non_pic_object="$pic_object"
+		  non_pic_object=$pic_object
 		  func_append non_pic_objects " $non_pic_object"
 		fi
 	      else
@@ -5378,7 +6783,7 @@
 		if $opt_dry_run; then
 		  # Extract subdirectory from the argument.
 		  func_dirname "$arg" "/" ""
-		  xdir="$func_dirname_result"
+		  xdir=$func_dirname_result
 
 		  func_lo2o "$arg"
 		  pic_object=$xdir$objdir/$func_lo2o_result
@@ -5386,24 +6791,29 @@
 		  func_append libobjs " $pic_object"
 		  func_append non_pic_objects " $non_pic_object"
 	        else
-		  func_fatal_error "\`$arg' is not a valid libtool object"
+		  func_fatal_error "'$arg' is not a valid libtool object"
 		fi
 	      fi
 	    done
 	  else
-	    func_fatal_error "link input file \`$arg' does not exist"
+	    func_fatal_error "link input file '$arg' does not exist"
 	  fi
 	  arg=$save_arg
 	  prev=
 	  continue
 	  ;;
+	os2dllname)
+	  os2dllname=$arg
+	  prev=
+	  continue
+	  ;;
 	precious_regex)
-	  precious_files_regex="$arg"
+	  precious_files_regex=$arg
 	  prev=
 	  continue
 	  ;;
 	release)
-	  release="-$arg"
+	  release=-$arg
 	  prev=
 	  continue
 	  ;;
@@ -5415,7 +6825,7 @@
 	    func_fatal_error "only absolute run-paths are allowed"
 	    ;;
 	  esac
-	  if test "$prev" = rpath; then
+	  if test rpath = "$prev"; then
 	    case "$rpath " in
 	    *" $arg "*) ;;
 	    *) func_append rpath " $arg" ;;
@@ -5430,7 +6840,7 @@
 	  continue
 	  ;;
 	shrext)
-	  shrext_cmds="$arg"
+	  shrext_cmds=$arg
 	  prev=
 	  continue
 	  ;;
@@ -5470,7 +6880,7 @@
 	esac
       fi # test -n "$prev"
 
-      prevarg="$arg"
+      prevarg=$arg
 
       case $arg in
       -all-static)
@@ -5484,7 +6894,7 @@
 
       -allow-undefined)
 	# FIXME: remove this flag sometime in the future.
-	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+	func_fatal_error "'-allow-undefined' must not be used because it is the default"
 	;;
 
       -avoid-version)
@@ -5516,7 +6926,7 @@
 	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
 	  func_fatal_error "more than one -exported-symbols argument is not allowed"
 	fi
-	if test "X$arg" = "X-export-symbols"; then
+	if test X-export-symbols = "X$arg"; then
 	  prev=expsyms
 	else
 	  prev=expsyms_regex
@@ -5550,9 +6960,9 @@
 	func_stripname "-L" '' "$arg"
 	if test -z "$func_stripname_result"; then
 	  if test "$#" -gt 0; then
-	    func_fatal_error "require no space between \`-L' and \`$1'"
+	    func_fatal_error "require no space between '-L' and '$1'"
 	  else
-	    func_fatal_error "need path for \`-L' option"
+	    func_fatal_error "need path for '-L' option"
 	  fi
 	fi
 	func_resolve_sysroot "$func_stripname_result"
@@ -5563,8 +6973,8 @@
 	*)
 	  absdir=`cd "$dir" && pwd`
 	  test -z "$absdir" && \
-	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
-	  dir="$absdir"
+	    func_fatal_error "cannot determine absolute directory name of '$dir'"
+	  dir=$absdir
 	  ;;
 	esac
 	case "$deplibs " in
@@ -5599,7 +7009,7 @@
 	;;
 
       -l*)
-	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	if test X-lc = "X$arg" || test X-lm = "X$arg"; then
 	  case $host in
 	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
 	    # These systems don't actually have a C or math library (as such)
@@ -5607,11 +7017,11 @@
 	    ;;
 	  *-*-os2*)
 	    # These systems don't actually have a C library (as such)
-	    test "X$arg" = "X-lc" && continue
+	    test X-lc = "X$arg" && continue
 	    ;;
-	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
 	    # Do not include libc due to us having libc/libc_r.
-	    test "X$arg" = "X-lc" && continue
+	    test X-lc = "X$arg" && continue
 	    ;;
 	  *-*-rhapsody* | *-*-darwin1.[012])
 	    # Rhapsody C and math libraries are in the System framework
@@ -5620,16 +7030,16 @@
 	    ;;
 	  *-*-sco3.2v5* | *-*-sco5v6*)
 	    # Causes problems with __ctype
-	    test "X$arg" = "X-lc" && continue
+	    test X-lc = "X$arg" && continue
 	    ;;
 	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
 	    # Compiler inserts libc in the correct place for threads to work
-	    test "X$arg" = "X-lc" && continue
+	    test X-lc = "X$arg" && continue
 	    ;;
 	  esac
-	elif test "X$arg" = "X-lc_r"; then
+	elif test X-lc_r = "X$arg"; then
 	 case $host in
-	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*)
 	   # Do not include libc_r directly, use -pthread flag.
 	   continue
 	   ;;
@@ -5639,6 +7049,11 @@
 	continue
 	;;
 
+      -mllvm)
+	prev=mllvm
+	continue
+	;;
+
       -module)
 	module=yes
 	continue
@@ -5668,7 +7083,7 @@
 	;;
 
       -multi_module)
-	single_module="${wl}-multi_module"
+	single_module=$wl-multi_module
 	continue
 	;;
 
@@ -5682,8 +7097,8 @@
 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
 	  # The PATH hackery in wrapper scripts is required on Windows
 	  # and Darwin in order for the loader to find any dlls it needs.
-	  func_warning "\`-no-install' is ignored for $host"
-	  func_warning "assuming \`-no-fast-install' instead"
+	  func_warning "'-no-install' is ignored for $host"
+	  func_warning "assuming '-no-fast-install' instead"
 	  fast_install=no
 	  ;;
 	*) no_install=yes ;;
@@ -5701,6 +7116,11 @@
 	continue
 	;;
 
+      -os2dllname)
+	prev=os2dllname
+	continue
+	;;
+
       -o) prev=output ;;
 
       -precious-files-regex)
@@ -5788,14 +7208,14 @@
 	func_stripname '-Wc,' '' "$arg"
 	args=$func_stripname_result
 	arg=
-	save_ifs="$IFS"; IFS=','
+	save_ifs=$IFS; IFS=,
 	for flag in $args; do
-	  IFS="$save_ifs"
+	  IFS=$save_ifs
           func_quote_for_eval "$flag"
 	  func_append arg " $func_quote_for_eval_result"
 	  func_append compiler_flags " $func_quote_for_eval_result"
 	done
-	IFS="$save_ifs"
+	IFS=$save_ifs
 	func_stripname ' ' '' "$arg"
 	arg=$func_stripname_result
 	;;
@@ -5804,15 +7224,15 @@
 	func_stripname '-Wl,' '' "$arg"
 	args=$func_stripname_result
 	arg=
-	save_ifs="$IFS"; IFS=','
+	save_ifs=$IFS; IFS=,
 	for flag in $args; do
-	  IFS="$save_ifs"
+	  IFS=$save_ifs
           func_quote_for_eval "$flag"
 	  func_append arg " $wl$func_quote_for_eval_result"
 	  func_append compiler_flags " $wl$func_quote_for_eval_result"
 	  func_append linker_flags " $func_quote_for_eval_result"
 	done
-	IFS="$save_ifs"
+	IFS=$save_ifs
 	func_stripname ' ' '' "$arg"
 	arg=$func_stripname_result
 	;;
@@ -5835,7 +7255,7 @@
       # -msg_* for osf cc
       -msg_*)
 	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
+	arg=$func_quote_for_eval_result
 	;;
 
       # Flags to be passed through unchanged, with rationale:
@@ -5847,25 +7267,49 @@
       # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
       # -F/path              path to uninstalled frameworks, gcc on darwin
       # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
+      # -fstack-protector*   stack protector flags for GCC
       # @file                GCC response files
       # -tp=*                Portland pgcc target processor selection
       # --sysroot=*          for sysroot support
-      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      # -specs=*             GCC specs files
+      # -stdlib=*            select c++ std lib with clang
+      # -fsanitize=*         Clang/GCC memory and address sanitizer
       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
+      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
+      -specs=*|-fsanitize=*)
         func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
+	arg=$func_quote_for_eval_result
         func_append compile_command " $arg"
         func_append finalize_command " $arg"
         func_append compiler_flags " $arg"
         continue
         ;;
 
+      -Z*)
+        if test os2 = "`expr $host : '.*\(os2\)'`"; then
+          # OS/2 uses -Zxxx to specify OS/2-specific options
+	  compiler_flags="$compiler_flags $arg"
+	  func_append compile_command " $arg"
+	  func_append finalize_command " $arg"
+	  case $arg in
+	  -Zlinker | -Zstack)
+	    prev=xcompiler
+	    ;;
+	  esac
+	  continue
+        else
+	  # Otherwise treat like 'Some other compiler flag' below
+	  func_quote_for_eval "$arg"
+	  arg=$func_quote_for_eval_result
+        fi
+	;;
+
       # Some other compiler flag.
       -* | +*)
         func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
+	arg=$func_quote_for_eval_result
 	;;
 
       *.$objext)
@@ -5886,21 +7330,21 @@
 
 	  if test -z "$pic_object" ||
 	     test -z "$non_pic_object" ||
-	     test "$pic_object" = none &&
-	     test "$non_pic_object" = none; then
-	    func_fatal_error "cannot find name of object for \`$arg'"
+	     test none = "$pic_object" &&
+	     test none = "$non_pic_object"; then
+	    func_fatal_error "cannot find name of object for '$arg'"
 	  fi
 
 	  # Extract subdirectory from the argument.
 	  func_dirname "$arg" "/" ""
-	  xdir="$func_dirname_result"
+	  xdir=$func_dirname_result
 
-	  if test "$pic_object" != none; then
+	  test none = "$pic_object" || {
 	    # Prepend the subdirectory the object is found in.
-	    pic_object="$xdir$pic_object"
+	    pic_object=$xdir$pic_object
 
-	    if test "$prev" = dlfiles; then
-	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+	    if test dlfiles = "$prev"; then
+	      if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then
 		func_append dlfiles " $pic_object"
 		prev=
 		continue
@@ -5911,7 +7355,7 @@
 	    fi
 
 	    # CHECK ME:  I think I busted this.  -Ossama
-	    if test "$prev" = dlprefiles; then
+	    if test dlprefiles = "$prev"; then
 	      # Preload the old-style object.
 	      func_append dlprefiles " $pic_object"
 	      prev=
@@ -5919,23 +7363,23 @@
 
 	    # A PIC object.
 	    func_append libobjs " $pic_object"
-	    arg="$pic_object"
-	  fi
+	    arg=$pic_object
+	  }
 
 	  # Non-PIC object.
-	  if test "$non_pic_object" != none; then
+	  if test none != "$non_pic_object"; then
 	    # Prepend the subdirectory the object is found in.
-	    non_pic_object="$xdir$non_pic_object"
+	    non_pic_object=$xdir$non_pic_object
 
 	    # A standard non-PIC object
 	    func_append non_pic_objects " $non_pic_object"
-	    if test -z "$pic_object" || test "$pic_object" = none ; then
-	      arg="$non_pic_object"
+	    if test -z "$pic_object" || test none = "$pic_object"; then
+	      arg=$non_pic_object
 	    fi
 	  else
 	    # If the PIC object exists, use it instead.
 	    # $xdir was prepended to $pic_object above.
-	    non_pic_object="$pic_object"
+	    non_pic_object=$pic_object
 	    func_append non_pic_objects " $non_pic_object"
 	  fi
 	else
@@ -5943,7 +7387,7 @@
 	  if $opt_dry_run; then
 	    # Extract subdirectory from the argument.
 	    func_dirname "$arg" "/" ""
-	    xdir="$func_dirname_result"
+	    xdir=$func_dirname_result
 
 	    func_lo2o "$arg"
 	    pic_object=$xdir$objdir/$func_lo2o_result
@@ -5951,7 +7395,7 @@
 	    func_append libobjs " $pic_object"
 	    func_append non_pic_objects " $non_pic_object"
 	  else
-	    func_fatal_error "\`$arg' is not a valid libtool object"
+	    func_fatal_error "'$arg' is not a valid libtool object"
 	  fi
 	fi
 	;;
@@ -5967,11 +7411,11 @@
 	# A libtool-controlled library.
 
 	func_resolve_sysroot "$arg"
-	if test "$prev" = dlfiles; then
+	if test dlfiles = "$prev"; then
 	  # This library was specified with -dlopen.
 	  func_append dlfiles " $func_resolve_sysroot_result"
 	  prev=
-	elif test "$prev" = dlprefiles; then
+	elif test dlprefiles = "$prev"; then
 	  # The library was specified with -dlpreopen.
 	  func_append dlprefiles " $func_resolve_sysroot_result"
 	  prev=
@@ -5986,7 +7430,7 @@
 	# Unknown arguments in both finalize_command and compile_command need
 	# to be aesthetically quoted because they are evaled later.
 	func_quote_for_eval "$arg"
-	arg="$func_quote_for_eval_result"
+	arg=$func_quote_for_eval_result
 	;;
       esac # arg
 
@@ -5998,9 +7442,9 @@
     done # argument parsing loop
 
     test -n "$prev" && \
-      func_fatal_help "the \`$prevarg' option requires an argument"
+      func_fatal_help "the '$prevarg' option requires an argument"
 
-    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+    if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then
       eval arg=\"$export_dynamic_flag_spec\"
       func_append compile_command " $arg"
       func_append finalize_command " $arg"
@@ -6009,20 +7453,23 @@
     oldlibs=
     # calculate the name of the file, without its directory
     func_basename "$output"
-    outputname="$func_basename_result"
-    libobjs_save="$libobjs"
+    outputname=$func_basename_result
+    libobjs_save=$libobjs
 
     if test -n "$shlibpath_var"; then
       # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
+      eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\`
     else
       shlib_search_path=
     fi
     eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
     eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
 
+    # Definition is injected by LT_CONFIG during libtool generation.
+    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
+
     func_dirname "$output" "/" ""
-    output_objdir="$func_dirname_result$objdir"
+    output_objdir=$func_dirname_result$objdir
     func_to_tool_file "$output_objdir/"
     tool_output_objdir=$func_to_tool_file_result
     # Create the object directory.
@@ -6045,7 +7492,7 @@
     # Find all interdependent deplibs by searching for libraries
     # that are linked more than once (e.g. -la -lb -la)
     for deplib in $deplibs; do
-      if $opt_preserve_dup_deps ; then
+      if $opt_preserve_dup_deps; then
 	case "$libs " in
 	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
 	esac
@@ -6053,7 +7500,7 @@
       func_append libs " $deplib"
     done
 
-    if test "$linkmode" = lib; then
+    if test lib = "$linkmode"; then
       libs="$predeps $libs $compiler_lib_search_path $postdeps"
 
       # Compute libraries that are listed more than once in $predeps
@@ -6085,7 +7532,7 @@
 	  case $file in
 	  *.la) ;;
 	  *)
-	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+	    func_fatal_help "libraries can '-dlopen' only libtool libraries: $file"
 	    ;;
 	  esac
 	done
@@ -6093,7 +7540,7 @@
     prog)
 	compile_deplibs=
 	finalize_deplibs=
-	alldeplibs=no
+	alldeplibs=false
 	newdlfiles=
 	newdlprefiles=
 	passes="conv scan dlopen dlpreopen link"
@@ -6105,32 +7552,32 @@
     for pass in $passes; do
       # The preopen pass in lib mode reverses $deplibs; put it back here
       # so that -L comes before libs that need it for instance...
-      if test "$linkmode,$pass" = "lib,link"; then
+      if test lib,link = "$linkmode,$pass"; then
 	## FIXME: Find the place where the list is rebuilt in the wrong
 	##        order, and fix it there properly
         tmp_deplibs=
 	for deplib in $deplibs; do
 	  tmp_deplibs="$deplib $tmp_deplibs"
 	done
-	deplibs="$tmp_deplibs"
+	deplibs=$tmp_deplibs
       fi
 
-      if test "$linkmode,$pass" = "lib,link" ||
-	 test "$linkmode,$pass" = "prog,scan"; then
-	libs="$deplibs"
+      if test lib,link = "$linkmode,$pass" ||
+	 test prog,scan = "$linkmode,$pass"; then
+	libs=$deplibs
 	deplibs=
       fi
-      if test "$linkmode" = prog; then
+      if test prog = "$linkmode"; then
 	case $pass in
-	dlopen) libs="$dlfiles" ;;
-	dlpreopen) libs="$dlprefiles" ;;
+	dlopen) libs=$dlfiles ;;
+	dlpreopen) libs=$dlprefiles ;;
 	link)
 	  libs="$deplibs %DEPLIBS%"
 	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
 	  ;;
 	esac
       fi
-      if test "$linkmode,$pass" = "lib,dlpreopen"; then
+      if test lib,dlpreopen = "$linkmode,$pass"; then
 	# Collect and forward deplibs of preopened libtool libs
 	for lib in $dlprefiles; do
 	  # Ignore non-libtool-libs
@@ -6151,26 +7598,26 @@
 	    esac
 	  done
 	done
-	libs="$dlprefiles"
+	libs=$dlprefiles
       fi
-      if test "$pass" = dlopen; then
+      if test dlopen = "$pass"; then
 	# Collect dlpreopened libraries
-	save_deplibs="$deplibs"
+	save_deplibs=$deplibs
 	deplibs=
       fi
 
       for deplib in $libs; do
 	lib=
-	found=no
+	found=false
 	case $deplib in
 	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
         |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
-	  if test "$linkmode,$pass" = "prog,link"; then
+	  if test prog,link = "$linkmode,$pass"; then
 	    compile_deplibs="$deplib $compile_deplibs"
 	    finalize_deplibs="$deplib $finalize_deplibs"
 	  else
 	    func_append compiler_flags " $deplib"
-	    if test "$linkmode" = lib ; then
+	    if test lib = "$linkmode"; then
 		case "$new_inherited_linker_flags " in
 		    *" $deplib "*) ;;
 		    * ) func_append new_inherited_linker_flags " $deplib" ;;
@@ -6180,13 +7627,13 @@
 	  continue
 	  ;;
 	-l*)
-	  if test "$linkmode" != lib && test "$linkmode" != prog; then
-	    func_warning "\`-l' is ignored for archives/objects"
+	  if test lib != "$linkmode" && test prog != "$linkmode"; then
+	    func_warning "'-l' is ignored for archives/objects"
 	    continue
 	  fi
 	  func_stripname '-l' '' "$deplib"
 	  name=$func_stripname_result
-	  if test "$linkmode" = lib; then
+	  if test lib = "$linkmode"; then
 	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
 	  else
 	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
@@ -6194,31 +7641,22 @@
 	  for searchdir in $searchdirs; do
 	    for search_ext in .la $std_shrext .so .a; do
 	      # Search the libtool library
-	      lib="$searchdir/lib${name}${search_ext}"
+	      lib=$searchdir/lib$name$search_ext
 	      if test -f "$lib"; then
-		if test "$search_ext" = ".la"; then
-		  found=yes
+		if test .la = "$search_ext"; then
+		  found=:
 		else
-		  found=no
+		  found=false
 		fi
 		break 2
 	      fi
 	    done
 	  done
-	  if test "$found" != yes; then
-	    # deplib doesn't seem to be a libtool library
-	    if test "$linkmode,$pass" = "prog,link"; then
-	      compile_deplibs="$deplib $compile_deplibs"
-	      finalize_deplibs="$deplib $finalize_deplibs"
-	    else
-	      deplibs="$deplib $deplibs"
-	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-	    fi
-	    continue
-	  else # deplib is a libtool library
+	  if $found; then
+	    # deplib is a libtool library
 	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
 	    # We need to do some special things here, and not later.
-	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 	      case " $predeps $postdeps " in
 	      *" $deplib "*)
 		if func_lalib_p "$lib"; then
@@ -6226,19 +7664,19 @@
 		  old_library=
 		  func_source "$lib"
 		  for l in $old_library $library_names; do
-		    ll="$l"
+		    ll=$l
 		  done
-		  if test "X$ll" = "X$old_library" ; then # only static version available
-		    found=no
+		  if test "X$ll" = "X$old_library"; then # only static version available
+		    found=false
 		    func_dirname "$lib" "" "."
-		    ladir="$func_dirname_result"
+		    ladir=$func_dirname_result
 		    lib=$ladir/$old_library
-		    if test "$linkmode,$pass" = "prog,link"; then
+		    if test prog,link = "$linkmode,$pass"; then
 		      compile_deplibs="$deplib $compile_deplibs"
 		      finalize_deplibs="$deplib $finalize_deplibs"
 		    else
 		      deplibs="$deplib $deplibs"
-		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
 		    fi
 		    continue
 		  fi
@@ -6247,15 +7685,25 @@
 	      *) ;;
 	      esac
 	    fi
+	  else
+	    # deplib doesn't seem to be a libtool library
+	    if test prog,link = "$linkmode,$pass"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
 	  fi
 	  ;; # -l
 	*.ltframework)
-	  if test "$linkmode,$pass" = "prog,link"; then
+	  if test prog,link = "$linkmode,$pass"; then
 	    compile_deplibs="$deplib $compile_deplibs"
 	    finalize_deplibs="$deplib $finalize_deplibs"
 	  else
 	    deplibs="$deplib $deplibs"
-	    if test "$linkmode" = lib ; then
+	    if test lib = "$linkmode"; then
 		case "$new_inherited_linker_flags " in
 		    *" $deplib "*) ;;
 		    * ) func_append new_inherited_linker_flags " $deplib" ;;
@@ -6268,18 +7716,18 @@
 	  case $linkmode in
 	  lib)
 	    deplibs="$deplib $deplibs"
-	    test "$pass" = conv && continue
+	    test conv = "$pass" && continue
 	    newdependency_libs="$deplib $newdependency_libs"
 	    func_stripname '-L' '' "$deplib"
 	    func_resolve_sysroot "$func_stripname_result"
 	    func_append newlib_search_path " $func_resolve_sysroot_result"
 	    ;;
 	  prog)
-	    if test "$pass" = conv; then
+	    if test conv = "$pass"; then
 	      deplibs="$deplib $deplibs"
 	      continue
 	    fi
-	    if test "$pass" = scan; then
+	    if test scan = "$pass"; then
 	      deplibs="$deplib $deplibs"
 	    else
 	      compile_deplibs="$deplib $compile_deplibs"
@@ -6290,13 +7738,13 @@
 	    func_append newlib_search_path " $func_resolve_sysroot_result"
 	    ;;
 	  *)
-	    func_warning "\`-L' is ignored for archives/objects"
+	    func_warning "'-L' is ignored for archives/objects"
 	    ;;
 	  esac # linkmode
 	  continue
 	  ;; # -L
 	-R*)
-	  if test "$pass" = link; then
+	  if test link = "$pass"; then
 	    func_stripname '-R' '' "$deplib"
 	    func_resolve_sysroot "$func_stripname_result"
 	    dir=$func_resolve_sysroot_result
@@ -6314,7 +7762,7 @@
 	  lib=$func_resolve_sysroot_result
 	  ;;
 	*.$libext)
-	  if test "$pass" = conv; then
+	  if test conv = "$pass"; then
 	    deplibs="$deplib $deplibs"
 	    continue
 	  fi
@@ -6325,21 +7773,26 @@
 	    case " $dlpreconveniencelibs " in
 	    *" $deplib "*) ;;
 	    *)
-	      valid_a_lib=no
+	      valid_a_lib=false
 	      case $deplibs_check_method in
 		match_pattern*)
 		  set dummy $deplibs_check_method; shift
 		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
 		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
 		    | $EGREP "$match_pattern_regex" > /dev/null; then
-		    valid_a_lib=yes
+		    valid_a_lib=:
 		  fi
 		;;
 		pass_all)
-		  valid_a_lib=yes
+		  valid_a_lib=:
 		;;
 	      esac
-	      if test "$valid_a_lib" != yes; then
+	      if $valid_a_lib; then
+		echo
+		$ECHO "*** Warning: Linking the shared library $output against the"
+		$ECHO "*** static library $deplib is not portable!"
+		deplibs="$deplib $deplibs"
+	      else
 		echo
 		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
 		echo "*** I have the capability to make that library automatically link in when"
@@ -6347,18 +7800,13 @@
 		echo "*** shared version of the library, which you do not appear to have"
 		echo "*** because the file extensions .$libext of this argument makes me believe"
 		echo "*** that it is just a static archive that I should not use here."
-	      else
-		echo
-		$ECHO "*** Warning: Linking the shared library $output against the"
-		$ECHO "*** static library $deplib is not portable!"
-		deplibs="$deplib $deplibs"
 	      fi
 	      ;;
 	    esac
 	    continue
 	    ;;
 	  prog)
-	    if test "$pass" != link; then
+	    if test link != "$pass"; then
 	      deplibs="$deplib $deplibs"
 	    else
 	      compile_deplibs="$deplib $compile_deplibs"
@@ -6369,10 +7817,10 @@
 	  esac # linkmode
 	  ;; # *.$libext
 	*.lo | *.$objext)
-	  if test "$pass" = conv; then
+	  if test conv = "$pass"; then
 	    deplibs="$deplib $deplibs"
-	  elif test "$linkmode" = prog; then
-	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	  elif test prog = "$linkmode"; then
+	    if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then
 	      # If there is no dlopen support or we're linking statically,
 	      # we need to preload.
 	      func_append newdlprefiles " $deplib"
@@ -6385,22 +7833,20 @@
 	  continue
 	  ;;
 	%DEPLIBS%)
-	  alldeplibs=yes
+	  alldeplibs=:
 	  continue
 	  ;;
 	esac # case $deplib
 
-	if test "$found" = yes || test -f "$lib"; then :
-	else
-	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
-	fi
+	$found || test -f "$lib" \
+	  || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'"
 
 	# Check to see that this really is a libtool archive.
 	func_lalib_unsafe_p "$lib" \
-	  || func_fatal_error "\`$lib' is not a valid libtool archive"
+	  || func_fatal_error "'$lib' is not a valid libtool archive"
 
 	func_dirname "$lib" "" "."
-	ladir="$func_dirname_result"
+	ladir=$func_dirname_result
 
 	dlname=
 	dlopen=
@@ -6430,19 +7876,19 @@
 	  done
 	fi
 	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
-	if test "$linkmode,$pass" = "lib,link" ||
-	   test "$linkmode,$pass" = "prog,scan" ||
-	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	if test lib,link = "$linkmode,$pass" ||
+	   test prog,scan = "$linkmode,$pass" ||
+	   { test prog != "$linkmode" && test lib != "$linkmode"; }; then
 	  test -n "$dlopen" && func_append dlfiles " $dlopen"
 	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
 	fi
 
-	if test "$pass" = conv; then
+	if test conv = "$pass"; then
 	  # Only check for convenience libraries
 	  deplibs="$lib $deplibs"
 	  if test -z "$libdir"; then
 	    if test -z "$old_library"; then
-	      func_fatal_error "cannot find name of link library for \`$lib'"
+	      func_fatal_error "cannot find name of link library for '$lib'"
 	    fi
 	    # It is a libtool convenience library, so add in its objects.
 	    func_append convenience " $ladir/$objdir/$old_library"
@@ -6450,15 +7896,15 @@
 	    tmp_libs=
 	    for deplib in $dependency_libs; do
 	      deplibs="$deplib $deplibs"
-	      if $opt_preserve_dup_deps ; then
+	      if $opt_preserve_dup_deps; then
 		case "$tmp_libs " in
 		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
 		esac
 	      fi
 	      func_append tmp_libs " $deplib"
 	    done
-	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
-	    func_fatal_error "\`$lib' is not a convenience library"
+	  elif test prog != "$linkmode" && test lib != "$linkmode"; then
+	    func_fatal_error "'$lib' is not a convenience library"
 	  fi
 	  continue
 	fi # $pass = conv
@@ -6467,26 +7913,26 @@
 	# Get the name of the library we link against.
 	linklib=
 	if test -n "$old_library" &&
-	   { test "$prefer_static_libs" = yes ||
-	     test "$prefer_static_libs,$installed" = "built,no"; }; then
+	   { test yes = "$prefer_static_libs" ||
+	     test built,no = "$prefer_static_libs,$installed"; }; then
 	  linklib=$old_library
 	else
 	  for l in $old_library $library_names; do
-	    linklib="$l"
+	    linklib=$l
 	  done
 	fi
 	if test -z "$linklib"; then
-	  func_fatal_error "cannot find name of link library for \`$lib'"
+	  func_fatal_error "cannot find name of link library for '$lib'"
 	fi
 
 	# This library was specified with -dlopen.
-	if test "$pass" = dlopen; then
-	  if test -z "$libdir"; then
-	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
-	  fi
+	if test dlopen = "$pass"; then
+	  test -z "$libdir" \
+	    && func_fatal_error "cannot -dlopen a convenience library: '$lib'"
 	  if test -z "$dlname" ||
-	     test "$dlopen_support" != yes ||
-	     test "$build_libtool_libs" = no; then
+	     test yes != "$dlopen_support" ||
+	     test no = "$build_libtool_libs"
+	  then
 	    # If there is no dlname, no dlopen support or we're linking
 	    # statically, we need to preload.  We also need to preload any
 	    # dependent libraries so libltdl's deplib preloader doesn't
@@ -6500,40 +7946,40 @@
 
 	# We need an absolute path.
 	case $ladir in
-	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;;
 	*)
 	  abs_ladir=`cd "$ladir" && pwd`
 	  if test -z "$abs_ladir"; then
-	    func_warning "cannot determine absolute directory name of \`$ladir'"
+	    func_warning "cannot determine absolute directory name of '$ladir'"
 	    func_warning "passing it literally to the linker, although it might fail"
-	    abs_ladir="$ladir"
+	    abs_ladir=$ladir
 	  fi
 	  ;;
 	esac
 	func_basename "$lib"
-	laname="$func_basename_result"
+	laname=$func_basename_result
 
 	# Find the relevant object directory and library name.
-	if test "X$installed" = Xyes; then
+	if test yes = "$installed"; then
 	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    func_warning "library \`$lib' was moved."
-	    dir="$ladir"
-	    absdir="$abs_ladir"
-	    libdir="$abs_ladir"
+	    func_warning "library '$lib' was moved."
+	    dir=$ladir
+	    absdir=$abs_ladir
+	    libdir=$abs_ladir
 	  else
-	    dir="$lt_sysroot$libdir"
-	    absdir="$lt_sysroot$libdir"
+	    dir=$lt_sysroot$libdir
+	    absdir=$lt_sysroot$libdir
 	  fi
-	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+	  test yes = "$hardcode_automatic" && avoidtemprpath=yes
 	else
 	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    dir="$ladir"
-	    absdir="$abs_ladir"
+	    dir=$ladir
+	    absdir=$abs_ladir
 	    # Remove this search path later
 	    func_append notinst_path " $abs_ladir"
 	  else
-	    dir="$ladir/$objdir"
-	    absdir="$abs_ladir/$objdir"
+	    dir=$ladir/$objdir
+	    absdir=$abs_ladir/$objdir
 	    # Remove this search path later
 	    func_append notinst_path " $abs_ladir"
 	  fi
@@ -6542,11 +7988,11 @@
 	name=$func_stripname_result
 
 	# This library was specified with -dlpreopen.
-	if test "$pass" = dlpreopen; then
-	  if test -z "$libdir" && test "$linkmode" = prog; then
-	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+	if test dlpreopen = "$pass"; then
+	  if test -z "$libdir" && test prog = "$linkmode"; then
+	    func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'"
 	  fi
-	  case "$host" in
+	  case $host in
 	    # special handling for platforms with PE-DLLs.
 	    *cygwin* | *mingw* | *cegcc* )
 	      # Linker will automatically link against shared library if both
@@ -6590,9 +8036,9 @@
 
 	if test -z "$libdir"; then
 	  # Link the convenience library
-	  if test "$linkmode" = lib; then
+	  if test lib = "$linkmode"; then
 	    deplibs="$dir/$old_library $deplibs"
-	  elif test "$linkmode,$pass" = "prog,link"; then
+	  elif test prog,link = "$linkmode,$pass"; then
 	    compile_deplibs="$dir/$old_library $compile_deplibs"
 	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
 	  else
@@ -6602,14 +8048,14 @@
 	fi
 
 
-	if test "$linkmode" = prog && test "$pass" != link; then
+	if test prog = "$linkmode" && test link != "$pass"; then
 	  func_append newlib_search_path " $ladir"
 	  deplibs="$lib $deplibs"
 
-	  linkalldeplibs=no
-	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
-	     test "$build_libtool_libs" = no; then
-	    linkalldeplibs=yes
+	  linkalldeplibs=false
+	  if test no != "$link_all_deplibs" || test -z "$library_names" ||
+	     test no = "$build_libtool_libs"; then
+	    linkalldeplibs=:
 	  fi
 
 	  tmp_libs=
@@ -6621,14 +8067,14 @@
 		 ;;
 	    esac
 	    # Need to link against all dependency_libs?
-	    if test "$linkalldeplibs" = yes; then
+	    if $linkalldeplibs; then
 	      deplibs="$deplib $deplibs"
 	    else
 	      # Need to hardcode shared library paths
 	      # or/and link against static libraries
 	      newdependency_libs="$deplib $newdependency_libs"
 	    fi
-	    if $opt_preserve_dup_deps ; then
+	    if $opt_preserve_dup_deps; then
 	      case "$tmp_libs " in
 	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
 	      esac
@@ -6638,15 +8084,15 @@
 	  continue
 	fi # $linkmode = prog...
 
-	if test "$linkmode,$pass" = "prog,link"; then
+	if test prog,link = "$linkmode,$pass"; then
 	  if test -n "$library_names" &&
-	     { { test "$prefer_static_libs" = no ||
-	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
+	     { { test no = "$prefer_static_libs" ||
+	         test built,yes = "$prefer_static_libs,$installed"; } ||
 	       test -z "$old_library"; }; then
 	    # We need to hardcode the library path
-	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then
 	      # Make sure the rpath contains only unique directories.
-	      case "$temp_rpath:" in
+	      case $temp_rpath: in
 	      *"$absdir:"*) ;;
 	      *) func_append temp_rpath "$absdir:" ;;
 	      esac
@@ -6675,9 +8121,9 @@
 	    esac
 	  fi # $linkmode,$pass = prog,link...
 
-	  if test "$alldeplibs" = yes &&
-	     { test "$deplibs_check_method" = pass_all ||
-	       { test "$build_libtool_libs" = yes &&
+	  if $alldeplibs &&
+	     { test pass_all = "$deplibs_check_method" ||
+	       { test yes = "$build_libtool_libs" &&
 		 test -n "$library_names"; }; }; then
 	    # We only need to search for static libraries
 	    continue
@@ -6686,19 +8132,19 @@
 
 	link_static=no # Whether the deplib will be linked statically
 	use_static_libs=$prefer_static_libs
-	if test "$use_static_libs" = built && test "$installed" = yes; then
+	if test built = "$use_static_libs" && test yes = "$installed"; then
 	  use_static_libs=no
 	fi
 	if test -n "$library_names" &&
-	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
+	   { test no = "$use_static_libs" || test -z "$old_library"; }; then
 	  case $host in
-	  *cygwin* | *mingw* | *cegcc*)
+	  *cygwin* | *mingw* | *cegcc* | *os2*)
 	      # No point in relinking DLLs because paths are not encoded
 	      func_append notinst_deplibs " $lib"
 	      need_relink=no
 	    ;;
 	  *)
-	    if test "$installed" = no; then
+	    if test no = "$installed"; then
 	      func_append notinst_deplibs " $lib"
 	      need_relink=yes
 	    fi
@@ -6708,24 +8154,24 @@
 
 	  # Warn about portability, can't link against -module's on some
 	  # systems (darwin).  Don't bleat about dlopened modules though!
-	  dlopenmodule=""
+	  dlopenmodule=
 	  for dlpremoduletest in $dlprefiles; do
 	    if test "X$dlpremoduletest" = "X$lib"; then
-	      dlopenmodule="$dlpremoduletest"
+	      dlopenmodule=$dlpremoduletest
 	      break
 	    fi
 	  done
-	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+	  if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then
 	    echo
-	    if test "$linkmode" = prog; then
+	    if test prog = "$linkmode"; then
 	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
 	    else
 	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
 	    fi
 	    $ECHO "*** $linklib is not portable!"
 	  fi
-	  if test "$linkmode" = lib &&
-	     test "$hardcode_into_libs" = yes; then
+	  if test lib = "$linkmode" &&
+	     test yes = "$hardcode_into_libs"; then
 	    # Hardcode the library path.
 	    # Skip directories that are in the system default run-time
 	    # search path.
@@ -6753,43 +8199,43 @@
 	    # figure out the soname
 	    set dummy $library_names
 	    shift
-	    realname="$1"
+	    realname=$1
 	    shift
 	    libname=`eval "\\$ECHO \"$libname_spec\""`
 	    # use dlname if we got it. it's perfectly good, no?
 	    if test -n "$dlname"; then
-	      soname="$dlname"
+	      soname=$dlname
 	    elif test -n "$soname_spec"; then
 	      # bleh windows
 	      case $host in
-	      *cygwin* | mingw* | *cegcc*)
+	      *cygwin* | mingw* | *cegcc* | *os2*)
 	        func_arith $current - $age
 		major=$func_arith_result
-		versuffix="-$major"
+		versuffix=-$major
 		;;
 	      esac
 	      eval soname=\"$soname_spec\"
 	    else
-	      soname="$realname"
+	      soname=$realname
 	    fi
 
 	    # Make a new name for the extract_expsyms_cmds to use
-	    soroot="$soname"
+	    soroot=$soname
 	    func_basename "$soroot"
-	    soname="$func_basename_result"
+	    soname=$func_basename_result
 	    func_stripname 'lib' '.dll' "$soname"
 	    newlib=libimp-$func_stripname_result.a
 
 	    # If the library has no export list, then create one now
 	    if test -f "$output_objdir/$soname-def"; then :
 	    else
-	      func_verbose "extracting exported symbol list from \`$soname'"
+	      func_verbose "extracting exported symbol list from '$soname'"
 	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
 	    fi
 
 	    # Create $newlib
 	    if test -f "$output_objdir/$newlib"; then :; else
-	      func_verbose "generating import library for \`$soname'"
+	      func_verbose "generating import library for '$soname'"
 	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
 	    fi
 	    # make sure the library variables are pointing to the new library
@@ -6797,58 +8243,58 @@
 	    linklib=$newlib
 	  fi # test -n "$old_archive_from_expsyms_cmds"
 
-	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
+	  if test prog = "$linkmode" || test relink != "$opt_mode"; then
 	    add_shlibpath=
 	    add_dir=
 	    add=
 	    lib_linked=yes
 	    case $hardcode_action in
 	    immediate | unsupported)
-	      if test "$hardcode_direct" = no; then
-		add="$dir/$linklib"
+	      if test no = "$hardcode_direct"; then
+		add=$dir/$linklib
 		case $host in
-		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
-		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+		  *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;;
+		  *-*-sysv4*uw2*) add_dir=-L$dir ;;
 		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-		    *-*-unixware7*) add_dir="-L$dir" ;;
+		    *-*-unixware7*) add_dir=-L$dir ;;
 		  *-*-darwin* )
-		    # if the lib is a (non-dlopened) module then we can not
+		    # if the lib is a (non-dlopened) module then we cannot
 		    # link against it, someone is ignoring the earlier warnings
 		    if /usr/bin/file -L $add 2> /dev/null |
-			 $GREP ": [^:]* bundle" >/dev/null ; then
+			 $GREP ": [^:]* bundle" >/dev/null; then
 		      if test "X$dlopenmodule" != "X$lib"; then
 			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
-			if test -z "$old_library" ; then
+			if test -z "$old_library"; then
 			  echo
 			  echo "*** And there doesn't seem to be a static archive available"
 			  echo "*** The link will probably fail, sorry"
 			else
-			  add="$dir/$old_library"
+			  add=$dir/$old_library
 			fi
 		      elif test -n "$old_library"; then
-			add="$dir/$old_library"
+			add=$dir/$old_library
 		      fi
 		    fi
 		esac
-	      elif test "$hardcode_minus_L" = no; then
+	      elif test no = "$hardcode_minus_L"; then
 		case $host in
-		*-*-sunos*) add_shlibpath="$dir" ;;
+		*-*-sunos*) add_shlibpath=$dir ;;
 		esac
-		add_dir="-L$dir"
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = no; then
-		add_shlibpath="$dir"
-		add="-l$name"
+		add_dir=-L$dir
+		add=-l$name
+	      elif test no = "$hardcode_shlibpath_var"; then
+		add_shlibpath=$dir
+		add=-l$name
 	      else
 		lib_linked=no
 	      fi
 	      ;;
 	    relink)
-	      if test "$hardcode_direct" = yes &&
-	         test "$hardcode_direct_absolute" = no; then
-		add="$dir/$linklib"
-	      elif test "$hardcode_minus_L" = yes; then
-		add_dir="-L$absdir"
+	      if test yes = "$hardcode_direct" &&
+	         test no = "$hardcode_direct_absolute"; then
+		add=$dir/$linklib
+	      elif test yes = "$hardcode_minus_L"; then
+		add_dir=-L$absdir
 		# Try looking first in the location we're being installed to.
 		if test -n "$inst_prefix_dir"; then
 		  case $libdir in
@@ -6857,10 +8303,10 @@
 		      ;;
 		  esac
 		fi
-		add="-l$name"
-	      elif test "$hardcode_shlibpath_var" = yes; then
-		add_shlibpath="$dir"
-		add="-l$name"
+		add=-l$name
+	      elif test yes = "$hardcode_shlibpath_var"; then
+		add_shlibpath=$dir
+		add=-l$name
 	      else
 		lib_linked=no
 	      fi
@@ -6868,7 +8314,7 @@
 	    *) lib_linked=no ;;
 	    esac
 
-	    if test "$lib_linked" != yes; then
+	    if test yes != "$lib_linked"; then
 	      func_fatal_configuration "unsupported hardcode properties"
 	    fi
 
@@ -6878,15 +8324,15 @@
 	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
 	      esac
 	    fi
-	    if test "$linkmode" = prog; then
+	    if test prog = "$linkmode"; then
 	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
 	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
 	    else
 	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
 	      test -n "$add" && deplibs="$add $deplibs"
-	      if test "$hardcode_direct" != yes &&
-		 test "$hardcode_minus_L" != yes &&
-		 test "$hardcode_shlibpath_var" = yes; then
+	      if test yes != "$hardcode_direct" &&
+		 test yes != "$hardcode_minus_L" &&
+		 test yes = "$hardcode_shlibpath_var"; then
 		case :$finalize_shlibpath: in
 		*":$libdir:"*) ;;
 		*) func_append finalize_shlibpath "$libdir:" ;;
@@ -6895,33 +8341,33 @@
 	    fi
 	  fi
 
-	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
+	  if test prog = "$linkmode" || test relink = "$opt_mode"; then
 	    add_shlibpath=
 	    add_dir=
 	    add=
 	    # Finalize command for both is simple: just hardcode it.
-	    if test "$hardcode_direct" = yes &&
-	       test "$hardcode_direct_absolute" = no; then
-	      add="$libdir/$linklib"
-	    elif test "$hardcode_minus_L" = yes; then
-	      add_dir="-L$libdir"
-	      add="-l$name"
-	    elif test "$hardcode_shlibpath_var" = yes; then
+	    if test yes = "$hardcode_direct" &&
+	       test no = "$hardcode_direct_absolute"; then
+	      add=$libdir/$linklib
+	    elif test yes = "$hardcode_minus_L"; then
+	      add_dir=-L$libdir
+	      add=-l$name
+	    elif test yes = "$hardcode_shlibpath_var"; then
 	      case :$finalize_shlibpath: in
 	      *":$libdir:"*) ;;
 	      *) func_append finalize_shlibpath "$libdir:" ;;
 	      esac
-	      add="-l$name"
-	    elif test "$hardcode_automatic" = yes; then
+	      add=-l$name
+	    elif test yes = "$hardcode_automatic"; then
 	      if test -n "$inst_prefix_dir" &&
-		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
-		add="$inst_prefix_dir$libdir/$linklib"
+		 test -f "$inst_prefix_dir$libdir/$linklib"; then
+		add=$inst_prefix_dir$libdir/$linklib
 	      else
-		add="$libdir/$linklib"
+		add=$libdir/$linklib
 	      fi
 	    else
 	      # We cannot seem to hardcode it, guess we'll fake it.
-	      add_dir="-L$libdir"
+	      add_dir=-L$libdir
 	      # Try looking first in the location we're being installed to.
 	      if test -n "$inst_prefix_dir"; then
 		case $libdir in
@@ -6930,10 +8376,10 @@
 		    ;;
 		esac
 	      fi
-	      add="-l$name"
+	      add=-l$name
 	    fi
 
-	    if test "$linkmode" = prog; then
+	    if test prog = "$linkmode"; then
 	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
 	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
 	    else
@@ -6941,43 +8387,43 @@
 	      test -n "$add" && deplibs="$add $deplibs"
 	    fi
 	  fi
-	elif test "$linkmode" = prog; then
+	elif test prog = "$linkmode"; then
 	  # Here we assume that one of hardcode_direct or hardcode_minus_L
 	  # is not unsupported.  This is valid on all known static and
 	  # shared platforms.
-	  if test "$hardcode_direct" != unsupported; then
-	    test -n "$old_library" && linklib="$old_library"
+	  if test unsupported != "$hardcode_direct"; then
+	    test -n "$old_library" && linklib=$old_library
 	    compile_deplibs="$dir/$linklib $compile_deplibs"
 	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
 	  else
 	    compile_deplibs="-l$name -L$dir $compile_deplibs"
 	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
 	  fi
-	elif test "$build_libtool_libs" = yes; then
+	elif test yes = "$build_libtool_libs"; then
 	  # Not a shared library
-	  if test "$deplibs_check_method" != pass_all; then
+	  if test pass_all != "$deplibs_check_method"; then
 	    # We're trying link a shared library against a static one
 	    # but the system doesn't support it.
 
 	    # Just print a warning and add the library to dependency_libs so
 	    # that the program can be linked against the static library.
 	    echo
-	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
+	    $ECHO "*** Warning: This system cannot link to static lib archive $lib."
 	    echo "*** I have the capability to make that library automatically link in when"
 	    echo "*** you link to this library.  But I can only do this if you have a"
 	    echo "*** shared version of the library, which you do not appear to have."
-	    if test "$module" = yes; then
+	    if test yes = "$module"; then
 	      echo "*** But as you try to build a module library, libtool will still create "
 	      echo "*** a static module, that should work as long as the dlopening application"
 	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
 	      if test -z "$global_symbol_pipe"; then
 		echo
 		echo "*** However, this would only work if libtool was able to extract symbol"
-		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
 		echo "*** not find such a program.  So, this module is probably useless."
-		echo "*** \`nm' from GNU binutils and a full rebuild may help."
+		echo "*** 'nm' from GNU binutils and a full rebuild may help."
 	      fi
-	      if test "$build_old_libs" = no; then
+	      if test no = "$build_old_libs"; then
 		build_libtool_libs=module
 		build_old_libs=yes
 	      else
@@ -6990,11 +8436,11 @@
 	  fi
 	fi # link shared/static library?
 
-	if test "$linkmode" = lib; then
+	if test lib = "$linkmode"; then
 	  if test -n "$dependency_libs" &&
-	     { test "$hardcode_into_libs" != yes ||
-	       test "$build_old_libs" = yes ||
-	       test "$link_static" = yes; }; then
+	     { test yes != "$hardcode_into_libs" ||
+	       test yes = "$build_old_libs" ||
+	       test yes = "$link_static"; }; then
 	    # Extract -R from dependency_libs
 	    temp_deplibs=
 	    for libdir in $dependency_libs; do
@@ -7008,12 +8454,12 @@
 	      *) func_append temp_deplibs " $libdir";;
 	      esac
 	    done
-	    dependency_libs="$temp_deplibs"
+	    dependency_libs=$temp_deplibs
 	  fi
 
 	  func_append newlib_search_path " $absdir"
 	  # Link against this library
-	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
 	  # ... and its dependency_libs
 	  tmp_libs=
 	  for deplib in $dependency_libs; do
@@ -7023,7 +8469,7 @@
                    func_resolve_sysroot "$func_stripname_result";;
               *) func_resolve_sysroot "$deplib" ;;
             esac
-	    if $opt_preserve_dup_deps ; then
+	    if $opt_preserve_dup_deps; then
 	      case "$tmp_libs " in
 	      *" $func_resolve_sysroot_result "*)
                 func_append specialdeplibs " $func_resolve_sysroot_result" ;;
@@ -7032,12 +8478,12 @@
 	    func_append tmp_libs " $func_resolve_sysroot_result"
 	  done
 
-	  if test "$link_all_deplibs" != no; then
+	  if test no != "$link_all_deplibs"; then
 	    # Add the search paths of all dependency libraries
 	    for deplib in $dependency_libs; do
 	      path=
 	      case $deplib in
-	      -L*) path="$deplib" ;;
+	      -L*) path=$deplib ;;
 	      *.la)
 	        func_resolve_sysroot "$deplib"
 	        deplib=$func_resolve_sysroot_result
@@ -7045,12 +8491,12 @@
 		dir=$func_dirname_result
 		# We need an absolute path.
 		case $dir in
-		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		[\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;;
 		*)
 		  absdir=`cd "$dir" && pwd`
 		  if test -z "$absdir"; then
-		    func_warning "cannot determine absolute directory name of \`$dir'"
-		    absdir="$dir"
+		    func_warning "cannot determine absolute directory name of '$dir'"
+		    absdir=$dir
 		  fi
 		  ;;
 		esac
@@ -7058,35 +8504,35 @@
 		case $host in
 		*-*-darwin*)
 		  depdepl=
-		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-		  if test -n "$deplibrary_names" ; then
-		    for tmp in $deplibrary_names ; do
+		  eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names"; then
+		    for tmp in $deplibrary_names; do
 		      depdepl=$tmp
 		    done
-		    if test -f "$absdir/$objdir/$depdepl" ; then
-		      depdepl="$absdir/$objdir/$depdepl"
-		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+		    if test -f "$absdir/$objdir/$depdepl"; then
+		      depdepl=$absdir/$objdir/$depdepl
+		      darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
                       if test -z "$darwin_install_name"; then
-                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                          darwin_install_name=`$OTOOL64 -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
                       fi
-		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+		      func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl"
+		      func_append linker_flags " -dylib_file $darwin_install_name:$depdepl"
 		      path=
 		    fi
 		  fi
 		  ;;
 		*)
-		  path="-L$absdir/$objdir"
+		  path=-L$absdir/$objdir
 		  ;;
 		esac
 		else
-		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
 		  test -z "$libdir" && \
-		    func_fatal_error "\`$deplib' is not a valid libtool archive"
+		    func_fatal_error "'$deplib' is not a valid libtool archive"
 		  test "$absdir" != "$libdir" && \
-		    func_warning "\`$deplib' seems to be moved"
+		    func_warning "'$deplib' seems to be moved"
 
-		  path="-L$absdir"
+		  path=-L$absdir
 		fi
 		;;
 	      esac
@@ -7098,23 +8544,23 @@
 	  fi # link_all_deplibs != no
 	fi # linkmode = lib
       done # for deplib in $libs
-      if test "$pass" = link; then
-	if test "$linkmode" = "prog"; then
+      if test link = "$pass"; then
+	if test prog = "$linkmode"; then
 	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
 	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
 	else
 	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
 	fi
       fi
-      dependency_libs="$newdependency_libs"
-      if test "$pass" = dlpreopen; then
+      dependency_libs=$newdependency_libs
+      if test dlpreopen = "$pass"; then
 	# Link the dlpreopened libraries before other libraries
 	for deplib in $save_deplibs; do
 	  deplibs="$deplib $deplibs"
 	done
       fi
-      if test "$pass" != dlopen; then
-	if test "$pass" != conv; then
+      if test dlopen != "$pass"; then
+	test conv = "$pass" || {
 	  # Make sure lib_search_path contains only unique directories.
 	  lib_search_path=
 	  for dir in $newlib_search_path; do
@@ -7124,12 +8570,12 @@
 	    esac
 	  done
 	  newlib_search_path=
-	fi
+	}
 
-	if test "$linkmode,$pass" != "prog,link"; then
-	  vars="deplibs"
-	else
+	if test prog,link = "$linkmode,$pass"; then
 	  vars="compile_deplibs finalize_deplibs"
+	else
+	  vars=deplibs
 	fi
 	for var in $vars dependency_libs; do
 	  # Add libraries to $var in reverse order
@@ -7187,62 +8633,93 @@
 	  eval $var=\"$tmp_libs\"
 	done # for var
       fi
+
+      # Add Sun CC postdeps if required:
+      test CXX = "$tagname" && {
+        case $host_os in
+        linux*)
+          case `$CC -V 2>&1 | sed 5q` in
+          *Sun\ C*) # Sun C++ 5.9
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+
+        solaris*)
+          func_cc_basename "$CC"
+          case $func_cc_basename_result in
+          CC* | sunCC*)
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+        esac
+      }
+
       # Last step: remove runtime libs from dependency_libs
       # (they stay in deplibs)
       tmp_libs=
-      for i in $dependency_libs ; do
+      for i in $dependency_libs; do
 	case " $predeps $postdeps $compiler_lib_search_path " in
 	*" $i "*)
-	  i=""
+	  i=
 	  ;;
 	esac
-	if test -n "$i" ; then
+	if test -n "$i"; then
 	  func_append tmp_libs " $i"
 	fi
       done
       dependency_libs=$tmp_libs
     done # for pass
-    if test "$linkmode" = prog; then
-      dlfiles="$newdlfiles"
+    if test prog = "$linkmode"; then
+      dlfiles=$newdlfiles
     fi
-    if test "$linkmode" = prog || test "$linkmode" = lib; then
-      dlprefiles="$newdlprefiles"
+    if test prog = "$linkmode" || test lib = "$linkmode"; then
+      dlprefiles=$newdlprefiles
     fi
 
     case $linkmode in
     oldlib)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for archives"
+      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+	func_warning "'-dlopen' is ignored for archives"
       fi
 
       case " $deplibs" in
       *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for archives" ;;
+	func_warning "'-l' and '-L' are ignored for archives" ;;
       esac
 
       test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for archives"
+	func_warning "'-rpath' is ignored for archives"
 
       test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for archives"
+	func_warning "'-R' is ignored for archives"
 
       test -n "$vinfo" && \
-	func_warning "\`-version-info/-version-number' is ignored for archives"
+	func_warning "'-version-info/-version-number' is ignored for archives"
 
       test -n "$release" && \
-	func_warning "\`-release' is ignored for archives"
+	func_warning "'-release' is ignored for archives"
 
       test -n "$export_symbols$export_symbols_regex" && \
-	func_warning "\`-export-symbols' is ignored for archives"
+	func_warning "'-export-symbols' is ignored for archives"
 
       # Now set the variables for building old libraries.
       build_libtool_libs=no
-      oldlibs="$output"
+      oldlibs=$output
       func_append objs "$old_deplibs"
       ;;
 
     lib)
-      # Make sure we only generate libraries of the form `libNAME.la'.
+      # Make sure we only generate libraries of the form 'libNAME.la'.
       case $outputname in
       lib*)
 	func_stripname 'lib' '.la' "$outputname"
@@ -7251,10 +8728,10 @@
 	eval libname=\"$libname_spec\"
 	;;
       *)
-	test "$module" = no && \
-	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
+	test no = "$module" \
+	  && func_fatal_help "libtool library '$output' must begin with 'lib'"
 
-	if test "$need_lib_prefix" != no; then
+	if test no != "$need_lib_prefix"; then
 	  # Add the "lib" prefix for modules if required
 	  func_stripname '' '.la' "$outputname"
 	  name=$func_stripname_result
@@ -7268,8 +8745,8 @@
       esac
 
       if test -n "$objs"; then
-	if test "$deplibs_check_method" != pass_all; then
-	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+	if test pass_all != "$deplibs_check_method"; then
+	  func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs"
 	else
 	  echo
 	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
@@ -7278,21 +8755,21 @@
 	fi
       fi
 
-      test "$dlself" != no && \
-	func_warning "\`-dlopen self' is ignored for libtool libraries"
+      test no = "$dlself" \
+	|| func_warning "'-dlopen self' is ignored for libtool libraries"
 
       set dummy $rpath
       shift
-      test "$#" -gt 1 && \
-	func_warning "ignoring multiple \`-rpath's for a libtool library"
+      test 1 -lt "$#" \
+	&& func_warning "ignoring multiple '-rpath's for a libtool library"
 
-      install_libdir="$1"
+      install_libdir=$1
 
       oldlibs=
       if test -z "$rpath"; then
-	if test "$build_libtool_libs" = yes; then
+	if test yes = "$build_libtool_libs"; then
 	  # Building a libtool convenience library.
-	  # Some compilers have problems with a `.al' extension so
+	  # Some compilers have problems with a '.al' extension so
 	  # convenience libraries should have the same extension an
 	  # archive normally would.
 	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
@@ -7301,20 +8778,20 @@
 	fi
 
 	test -n "$vinfo" && \
-	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+	  func_warning "'-version-info/-version-number' is ignored for convenience libraries"
 
 	test -n "$release" && \
-	  func_warning "\`-release' is ignored for convenience libraries"
+	  func_warning "'-release' is ignored for convenience libraries"
       else
 
 	# Parse the version information argument.
-	save_ifs="$IFS"; IFS=':'
+	save_ifs=$IFS; IFS=:
 	set dummy $vinfo 0 0 0
 	shift
-	IFS="$save_ifs"
+	IFS=$save_ifs
 
 	test -n "$7" && \
-	  func_fatal_help "too many parameters to \`-version-info'"
+	  func_fatal_help "too many parameters to '-version-info'"
 
 	# convert absolute version numbers to libtool ages
 	# this retains compatibility with .la files and attempts
@@ -7322,45 +8799,45 @@
 
 	case $vinfo_number in
 	yes)
-	  number_major="$1"
-	  number_minor="$2"
-	  number_revision="$3"
+	  number_major=$1
+	  number_minor=$2
+	  number_revision=$3
 	  #
 	  # There are really only two kinds -- those that
 	  # use the current revision as the major version
 	  # and those that subtract age and use age as
 	  # a minor version.  But, then there is irix
-	  # which has an extra 1 added just for fun
+	  # that has an extra 1 added just for fun
 	  #
 	  case $version_type in
 	  # correct linux to gnu/linux during the next big refactor
-	  darwin|linux|osf|windows|none)
+	  darwin|freebsd-elf|linux|osf|windows|none)
 	    func_arith $number_major + $number_minor
 	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_revision"
+	    age=$number_minor
+	    revision=$number_revision
 	    ;;
-	  freebsd-aout|freebsd-elf|qnx|sunos)
-	    current="$number_major"
-	    revision="$number_minor"
-	    age="0"
+	  freebsd-aout|qnx|sunos)
+	    current=$number_major
+	    revision=$number_minor
+	    age=0
 	    ;;
 	  irix|nonstopux)
 	    func_arith $number_major + $number_minor
 	    current=$func_arith_result
-	    age="$number_minor"
-	    revision="$number_minor"
+	    age=$number_minor
+	    revision=$number_minor
 	    lt_irix_increment=no
 	    ;;
 	  *)
-	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
+	    func_fatal_configuration "$modename: unknown library version type '$version_type'"
 	    ;;
 	  esac
 	  ;;
 	no)
-	  current="$1"
-	  revision="$2"
-	  age="$3"
+	  current=$1
+	  revision=$2
+	  age=$3
 	  ;;
 	esac
 
@@ -7368,30 +8845,30 @@
 	case $current in
 	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
 	*)
-	  func_error "CURRENT \`$current' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
+	  func_error "CURRENT '$current' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
 	  ;;
 	esac
 
 	case $revision in
 	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
 	*)
-	  func_error "REVISION \`$revision' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
+	  func_error "REVISION '$revision' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
 	  ;;
 	esac
 
 	case $age in
 	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
 	*)
-	  func_error "AGE \`$age' must be a nonnegative integer"
-	  func_fatal_error "\`$vinfo' is not valid version information"
+	  func_error "AGE '$age' must be a nonnegative integer"
+	  func_fatal_error "'$vinfo' is not valid version information"
 	  ;;
 	esac
 
 	if test "$age" -gt "$current"; then
-	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
-	  func_fatal_error "\`$vinfo' is not valid version information"
+	  func_error "AGE '$age' is greater than the current interface number '$current'"
+	  func_fatal_error "'$vinfo' is not valid version information"
 	fi
 
 	# Calculate the version variables.
@@ -7406,26 +8883,36 @@
 	  # verstring for coding it into the library header
 	  func_arith $current - $age
 	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
+	  versuffix=$major.$age.$revision
 	  # Darwin ld doesn't like 0 for these options...
 	  func_arith $current + 1
 	  minor_current=$func_arith_result
-	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+	  xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
 	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+          # On Darwin other compilers
+          case $CC in
+              nagfor*)
+                  verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision"
+                  ;;
+              *)
+                  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+                  ;;
+          esac
 	  ;;
 
 	freebsd-aout)
-	  major=".$current"
-	  versuffix=".$current.$revision";
+	  major=.$current
+	  versuffix=.$current.$revision
 	  ;;
 
 	freebsd-elf)
-	  major=".$current"
-	  versuffix=".$current"
+	  func_arith $current - $age
+	  major=.$func_arith_result
+	  versuffix=$major.$age.$revision
 	  ;;
 
 	irix | nonstopux)
-	  if test "X$lt_irix_increment" = "Xno"; then
+	  if test no = "$lt_irix_increment"; then
 	    func_arith $current - $age
 	  else
 	    func_arith $current - $age + 1
@@ -7436,69 +8923,74 @@
 	    nonstopux) verstring_prefix=nonstopux ;;
 	    *)         verstring_prefix=sgi ;;
 	  esac
-	  verstring="$verstring_prefix$major.$revision"
+	  verstring=$verstring_prefix$major.$revision
 
 	  # Add in all the interfaces that we are compatible with.
 	  loop=$revision
-	  while test "$loop" -ne 0; do
+	  while test 0 -ne "$loop"; do
 	    func_arith $revision - $loop
 	    iface=$func_arith_result
 	    func_arith $loop - 1
 	    loop=$func_arith_result
-	    verstring="$verstring_prefix$major.$iface:$verstring"
+	    verstring=$verstring_prefix$major.$iface:$verstring
 	  done
 
-	  # Before this point, $major must not contain `.'.
+	  # Before this point, $major must not contain '.'.
 	  major=.$major
-	  versuffix="$major.$revision"
+	  versuffix=$major.$revision
 	  ;;
 
 	linux) # correct to gnu/linux during the next big refactor
 	  func_arith $current - $age
 	  major=.$func_arith_result
-	  versuffix="$major.$age.$revision"
+	  versuffix=$major.$age.$revision
 	  ;;
 
 	osf)
 	  func_arith $current - $age
 	  major=.$func_arith_result
-	  versuffix=".$current.$age.$revision"
-	  verstring="$current.$age.$revision"
+	  versuffix=.$current.$age.$revision
+	  verstring=$current.$age.$revision
 
 	  # Add in all the interfaces that we are compatible with.
 	  loop=$age
-	  while test "$loop" -ne 0; do
+	  while test 0 -ne "$loop"; do
 	    func_arith $current - $loop
 	    iface=$func_arith_result
 	    func_arith $loop - 1
 	    loop=$func_arith_result
-	    verstring="$verstring:${iface}.0"
+	    verstring=$verstring:$iface.0
 	  done
 
 	  # Make executables depend on our current version.
-	  func_append verstring ":${current}.0"
+	  func_append verstring ":$current.0"
 	  ;;
 
 	qnx)
-	  major=".$current"
-	  versuffix=".$current"
+	  major=.$current
+	  versuffix=.$current
+	  ;;
+
+	sco)
+	  major=.$current
+	  versuffix=.$current
 	  ;;
 
 	sunos)
-	  major=".$current"
-	  versuffix=".$current.$revision"
+	  major=.$current
+	  versuffix=.$current.$revision
 	  ;;
 
 	windows)
 	  # Use '-' rather than '.', since we only want one
-	  # extension on DOS 8.3 filesystems.
+	  # extension on DOS 8.3 file systems.
 	  func_arith $current - $age
 	  major=$func_arith_result
-	  versuffix="-$major"
+	  versuffix=-$major
 	  ;;
 
 	*)
-	  func_fatal_configuration "unknown library version type \`$version_type'"
+	  func_fatal_configuration "unknown library version type '$version_type'"
 	  ;;
 	esac
 
@@ -7512,42 +9004,45 @@
 	    verstring=
 	    ;;
 	  *)
-	    verstring="0.0"
+	    verstring=0.0
 	    ;;
 	  esac
-	  if test "$need_version" = no; then
+	  if test no = "$need_version"; then
 	    versuffix=
 	  else
-	    versuffix=".0.0"
+	    versuffix=.0.0
 	  fi
 	fi
 
 	# Remove version info from name if versioning should be avoided
-	if test "$avoid_version" = yes && test "$need_version" = no; then
+	if test yes,no = "$avoid_version,$need_version"; then
 	  major=
 	  versuffix=
-	  verstring=""
+	  verstring=
 	fi
 
 	# Check to see if the archive will have undefined symbols.
-	if test "$allow_undefined" = yes; then
-	  if test "$allow_undefined_flag" = unsupported; then
-	    func_warning "undefined symbols not allowed in $host shared libraries"
-	    build_libtool_libs=no
-	    build_old_libs=yes
+	if test yes = "$allow_undefined"; then
+	  if test unsupported = "$allow_undefined_flag"; then
+	    if test yes = "$build_old_libs"; then
+	      func_warning "undefined symbols not allowed in $host shared libraries; building static only"
+	      build_libtool_libs=no
+	    else
+	      func_fatal_error "can't build $host shared library unless -no-undefined is specified"
+	    fi
 	  fi
 	else
 	  # Don't allow undefined symbols.
-	  allow_undefined_flag="$no_undefined_flag"
+	  allow_undefined_flag=$no_undefined_flag
 	fi
 
       fi
 
-      func_generate_dlsyms "$libname" "$libname" "yes"
+      func_generate_dlsyms "$libname" "$libname" :
       func_append libobjs " $symfileobj"
-      test "X$libobjs" = "X " && libobjs=
+      test " " = "$libobjs" && libobjs=
 
-      if test "$opt_mode" != relink; then
+      if test relink != "$opt_mode"; then
 	# Remove our outputs, but don't remove object files since they
 	# may have been created when compiling PIC objects.
 	removelist=
@@ -7556,8 +9051,8 @@
 	  case $p in
 	    *.$objext | *.gcno)
 	       ;;
-	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
-	       if test "X$precious_files_regex" != "X"; then
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*)
+	       if test -n "$precious_files_regex"; then
 		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
 		 then
 		   continue
@@ -7573,11 +9068,11 @@
       fi
 
       # Now set the variables for building old libraries.
-      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+      if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then
 	func_append oldlibs " $output_objdir/$libname.$libext"
 
 	# Transform .lo files to .o files.
-	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP`
       fi
 
       # Eliminate all temporary directories.
@@ -7598,13 +9093,13 @@
 	  *) func_append finalize_rpath " $libdir" ;;
 	  esac
 	done
-	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then
 	  dependency_libs="$temp_xrpath $dependency_libs"
 	fi
       fi
 
       # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles="$dlfiles"
+      old_dlfiles=$dlfiles
       dlfiles=
       for lib in $old_dlfiles; do
 	case " $dlprefiles $dlfiles " in
@@ -7614,7 +9109,7 @@
       done
 
       # Make sure dlprefiles contains only unique files
-      old_dlprefiles="$dlprefiles"
+      old_dlprefiles=$dlprefiles
       dlprefiles=
       for lib in $old_dlprefiles; do
 	case "$dlprefiles " in
@@ -7623,7 +9118,7 @@
 	esac
       done
 
-      if test "$build_libtool_libs" = yes; then
+      if test yes = "$build_libtool_libs"; then
 	if test -n "$rpath"; then
 	  case $host in
 	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
@@ -7647,7 +9142,7 @@
 	    ;;
 	  *)
 	    # Add libc to deplibs on all other systems if necessary.
-	    if test "$build_libtool_need_lc" = "yes"; then
+	    if test yes = "$build_libtool_need_lc"; then
 	      func_append deplibs " -lc"
 	    fi
 	    ;;
@@ -7663,9 +9158,9 @@
 	# I'm not sure if I'm treating the release correctly.  I think
 	# release should show up in the -l (ie -lgmp5) so we don't want to
 	# add it in twice.  Is that correct?
-	release=""
-	versuffix=""
-	major=""
+	release=
+	versuffix=
+	major=
 	newdeplibs=
 	droppeddeps=no
 	case $deplibs_check_method in
@@ -7694,20 +9189,20 @@
 	      -l*)
 		func_stripname -l '' "$i"
 		name=$func_stripname_result
-		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 		  case " $predeps $postdeps " in
 		  *" $i "*)
 		    func_append newdeplibs " $i"
-		    i=""
+		    i=
 		    ;;
 		  esac
 		fi
-		if test -n "$i" ; then
+		if test -n "$i"; then
 		  libname=`eval "\\$ECHO \"$libname_spec\""`
 		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
 		  set dummy $deplib_matches; shift
 		  deplib_match=$1
-		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
 		    func_append newdeplibs " $i"
 		  else
 		    droppeddeps=yes
@@ -7737,20 +9232,20 @@
 		$opt_dry_run || $RM conftest
 		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
 		  ldd_output=`ldd conftest`
-		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 		    case " $predeps $postdeps " in
 		    *" $i "*)
 		      func_append newdeplibs " $i"
-		      i=""
+		      i=
 		      ;;
 		    esac
 		  fi
-		  if test -n "$i" ; then
+		  if test -n "$i"; then
 		    libname=`eval "\\$ECHO \"$libname_spec\""`
 		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
 		    set dummy $deplib_matches; shift
 		    deplib_match=$1
-		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0; then
 		      func_append newdeplibs " $i"
 		    else
 		      droppeddeps=yes
@@ -7787,24 +9282,24 @@
 	    -l*)
 	      func_stripname -l '' "$a_deplib"
 	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 		case " $predeps $postdeps " in
 		*" $a_deplib "*)
 		  func_append newdeplibs " $a_deplib"
-		  a_deplib=""
+		  a_deplib=
 		  ;;
 		esac
 	      fi
-	      if test -n "$a_deplib" ; then
+	      if test -n "$a_deplib"; then
 		libname=`eval "\\$ECHO \"$libname_spec\""`
 		if test -n "$file_magic_glob"; then
 		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
 		else
 		  libnameglob=$libname
 		fi
-		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+		test yes = "$want_nocaseglob" && nocaseglob=`shopt -p nocaseglob`
 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  if test "$want_nocaseglob" = yes; then
+		  if test yes = "$want_nocaseglob"; then
 		    shopt -s nocaseglob
 		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
 		    $nocaseglob
@@ -7822,25 +9317,25 @@
 		      # We might still enter an endless loop, since a link
 		      # loop can be closed while we follow links,
 		      # but so what?
-		      potlib="$potent_lib"
+		      potlib=$potent_lib
 		      while test -h "$potlib" 2>/dev/null; do
-			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			potliblink=`ls -ld $potlib | $SED 's/.* -> //'`
 			case $potliblink in
-			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+			[\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;;
+			*) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";;
 			esac
 		      done
 		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
 			 $SED -e 10q |
 			 $EGREP "$file_magic_regex" > /dev/null; then
 			func_append newdeplibs " $a_deplib"
-			a_deplib=""
+			a_deplib=
 			break 2
 		      fi
 		  done
 		done
 	      fi
-	      if test -n "$a_deplib" ; then
+	      if test -n "$a_deplib"; then
 		droppeddeps=yes
 		echo
 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
@@ -7848,7 +9343,7 @@
 		echo "*** you link to this library.  But I can only do this if you have a"
 		echo "*** shared version of the library, which you do not appear to have"
 		echo "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
+		if test -z "$potlib"; then
 		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
 		else
 		  $ECHO "*** with $libname and none of the candidates passed a file format test"
@@ -7871,30 +9366,30 @@
 	    -l*)
 	      func_stripname -l '' "$a_deplib"
 	      name=$func_stripname_result
-	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      if test yes = "$allow_libtool_libs_with_static_runtimes"; then
 		case " $predeps $postdeps " in
 		*" $a_deplib "*)
 		  func_append newdeplibs " $a_deplib"
-		  a_deplib=""
+		  a_deplib=
 		  ;;
 		esac
 	      fi
-	      if test -n "$a_deplib" ; then
+	      if test -n "$a_deplib"; then
 		libname=`eval "\\$ECHO \"$libname_spec\""`
 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
 		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
 		  for potent_lib in $potential_libs; do
-		    potlib="$potent_lib" # see symlink-check above in file_magic test
+		    potlib=$potent_lib # see symlink-check above in file_magic test
 		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
 		       $EGREP "$match_pattern_regex" > /dev/null; then
 		      func_append newdeplibs " $a_deplib"
-		      a_deplib=""
+		      a_deplib=
 		      break 2
 		    fi
 		  done
 		done
 	      fi
-	      if test -n "$a_deplib" ; then
+	      if test -n "$a_deplib"; then
 		droppeddeps=yes
 		echo
 		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
@@ -7902,7 +9397,7 @@
 		echo "*** you link to this library.  But I can only do this if you have a"
 		echo "*** shared version of the library, which you do not appear to have"
 		echo "*** because I did check the linker path looking for a file starting"
-		if test -z "$potlib" ; then
+		if test -z "$potlib"; then
 		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
 		else
 		  $ECHO "*** with $libname and none of the candidates passed a file format test"
@@ -7918,18 +9413,18 @@
 	  done # Gone through all deplibs.
 	  ;;
 	none | unknown | *)
-	  newdeplibs=""
+	  newdeplibs=
 	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
-	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-	    for i in $predeps $postdeps ; do
+	  if test yes = "$allow_libtool_libs_with_static_runtimes"; then
+	    for i in $predeps $postdeps; do
 	      # can't use Xsed below, because $i might contain '/'
-	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
+	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"`
 	    done
 	  fi
 	  case $tmp_deplibs in
 	  *[!\	\ ]*)
 	    echo
-	    if test "X$deplibs_check_method" = "Xnone"; then
+	    if test none = "$deplibs_check_method"; then
 	      echo "*** Warning: inter-library dependencies are not supported in this platform."
 	    else
 	      echo "*** Warning: inter-library dependencies are not known to be supported."
@@ -7953,8 +9448,8 @@
 	  ;;
 	esac
 
-	if test "$droppeddeps" = yes; then
-	  if test "$module" = yes; then
+	if test yes = "$droppeddeps"; then
+	  if test yes = "$module"; then
 	    echo
 	    echo "*** Warning: libtool could not satisfy all declared inter-library"
 	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
@@ -7963,12 +9458,12 @@
 	    if test -z "$global_symbol_pipe"; then
 	      echo
 	      echo "*** However, this would only work if libtool was able to extract symbol"
-	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      echo "*** lists from a program, using 'nm' or equivalent, but libtool could"
 	      echo "*** not find such a program.  So, this module is probably useless."
-	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      echo "*** 'nm' from GNU binutils and a full rebuild may help."
 	    fi
-	    if test "$build_old_libs" = no; then
-	      oldlibs="$output_objdir/$libname.$libext"
+	    if test no = "$build_old_libs"; then
+	      oldlibs=$output_objdir/$libname.$libext
 	      build_libtool_libs=module
 	      build_old_libs=yes
 	    else
@@ -7979,14 +9474,14 @@
 	    echo "*** automatically added whenever a program is linked with this library"
 	    echo "*** or is declared to -dlopen it."
 
-	    if test "$allow_undefined" = no; then
+	    if test no = "$allow_undefined"; then
 	      echo
 	      echo "*** Since this library must not contain undefined symbols,"
 	      echo "*** because either the platform does not support them or"
 	      echo "*** it was explicitly requested with -no-undefined,"
 	      echo "*** libtool will only create a static version of it."
-	      if test "$build_old_libs" = no; then
-		oldlibs="$output_objdir/$libname.$libext"
+	      if test no = "$build_old_libs"; then
+		oldlibs=$output_objdir/$libname.$libext
 		build_libtool_libs=module
 		build_old_libs=yes
 	      else
@@ -8032,7 +9527,7 @@
 	*) func_append new_libs " $deplib" ;;
 	esac
       done
-      deplibs="$new_libs"
+      deplibs=$new_libs
 
       # All the library-specific variables (install_libdir is set above).
       library_names=
@@ -8040,25 +9535,25 @@
       dlname=
 
       # Test again, we may have decided not to build it any more
-      if test "$build_libtool_libs" = yes; then
-	# Remove ${wl} instances when linking with ld.
+      if test yes = "$build_libtool_libs"; then
+	# Remove $wl instances when linking with ld.
 	# FIXME: should test the right _cmds variable.
 	case $archive_cmds in
 	  *\$LD\ *) wl= ;;
         esac
-	if test "$hardcode_into_libs" = yes; then
+	if test yes = "$hardcode_into_libs"; then
 	  # Hardcode the library paths
 	  hardcode_libdirs=
 	  dep_rpath=
-	  rpath="$finalize_rpath"
-	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
+	  rpath=$finalize_rpath
+	  test relink = "$opt_mode" || rpath=$compile_rpath$rpath
 	  for libdir in $rpath; do
 	    if test -n "$hardcode_libdir_flag_spec"; then
 	      if test -n "$hardcode_libdir_separator"; then
 		func_replace_sysroot "$libdir"
 		libdir=$func_replace_sysroot_result
 		if test -z "$hardcode_libdirs"; then
-		  hardcode_libdirs="$libdir"
+		  hardcode_libdirs=$libdir
 		else
 		  # Just accumulate the unique libdirs.
 		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -8083,7 +9578,7 @@
 	  # Substitute the hardcoded libdirs into the rpath.
 	  if test -n "$hardcode_libdir_separator" &&
 	     test -n "$hardcode_libdirs"; then
-	    libdir="$hardcode_libdirs"
+	    libdir=$hardcode_libdirs
 	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
 	  fi
 	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
@@ -8097,8 +9592,8 @@
 	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
 	fi
 
-	shlibpath="$finalize_shlibpath"
-	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	shlibpath=$finalize_shlibpath
+	test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath
 	if test -n "$shlibpath"; then
 	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
 	fi
@@ -8108,19 +9603,19 @@
 	eval library_names=\"$library_names_spec\"
 	set dummy $library_names
 	shift
-	realname="$1"
+	realname=$1
 	shift
 
 	if test -n "$soname_spec"; then
 	  eval soname=\"$soname_spec\"
 	else
-	  soname="$realname"
+	  soname=$realname
 	fi
 	if test -z "$dlname"; then
 	  dlname=$soname
 	fi
 
-	lib="$output_objdir/$realname"
+	lib=$output_objdir/$realname
 	linknames=
 	for link
 	do
@@ -8134,7 +9629,7 @@
 	delfiles=
 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
 	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-	  export_symbols="$output_objdir/$libname.uexp"
+	  export_symbols=$output_objdir/$libname.uexp
 	  func_append delfiles " $export_symbols"
 	fi
 
@@ -8143,31 +9638,31 @@
 	cygwin* | mingw* | cegcc*)
 	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
 	    # exporting using user supplied symfile
-	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+	    func_dll_def_p "$export_symbols" || {
 	      # and it's NOT already a .def file. Must figure out
 	      # which of the given symbols are data symbols and tag
 	      # them as such. So, trigger use of export_symbols_cmds.
 	      # export_symbols gets reassigned inside the "prepare
 	      # the list of exported symbols" if statement, so the
 	      # include_expsyms logic still works.
-	      orig_export_symbols="$export_symbols"
+	      orig_export_symbols=$export_symbols
 	      export_symbols=
 	      always_export_symbols=yes
-	    fi
+	    }
 	  fi
 	  ;;
 	esac
 
 	# Prepare the list of exported symbols
 	if test -z "$export_symbols"; then
-	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
-	    func_verbose "generating symbol list for \`$libname.la'"
-	    export_symbols="$output_objdir/$libname.exp"
+	  if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then
+	    func_verbose "generating symbol list for '$libname.la'"
+	    export_symbols=$output_objdir/$libname.exp
 	    $opt_dry_run || $RM $export_symbols
 	    cmds=$export_symbols_cmds
-	    save_ifs="$IFS"; IFS='~'
+	    save_ifs=$IFS; IFS='~'
 	    for cmd1 in $cmds; do
-	      IFS="$save_ifs"
+	      IFS=$save_ifs
 	      # Take the normal branch if the nm_file_list_spec branch
 	      # doesn't work or if tool conversion is not needed.
 	      case $nm_file_list_spec~$to_tool_file_cmd in
@@ -8181,7 +9676,7 @@
 		  try_normal_branch=no
 		  ;;
 	      esac
-	      if test "$try_normal_branch" = yes \
+	      if test yes = "$try_normal_branch" \
 		 && { test "$len" -lt "$max_cmd_len" \
 		      || test "$max_cmd_len" -le -1; }
 	      then
@@ -8192,7 +9687,7 @@
 		output_la=$func_basename_result
 		save_libobjs=$libobjs
 		save_output=$output
-		output=${output_objdir}/${output_la}.nm
+		output=$output_objdir/$output_la.nm
 		func_to_tool_file "$output"
 		libobjs=$nm_file_list_spec$func_to_tool_file_result
 		func_append delfiles " $output"
@@ -8215,8 +9710,8 @@
 		break
 	      fi
 	    done
-	    IFS="$save_ifs"
-	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+	    IFS=$save_ifs
+	    if test -n "$export_symbols_regex" && test : != "$skipped_export"; then
 	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
 	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
 	    fi
@@ -8224,16 +9719,16 @@
 	fi
 
 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  tmp_export_symbols="$export_symbols"
-	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+	  tmp_export_symbols=$export_symbols
+	  test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
 	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
 	fi
 
-	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+	if test : != "$skipped_export" && test -n "$orig_export_symbols"; then
 	  # The given exports_symbols file has to be filtered, so filter it.
-	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	  func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
 	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	  # 's' commands which not all seds can handle. GNU sed should be fine
+	  # 's' commands, which not all seds can handle. GNU sed should be fine
 	  # though. Also, the filter scales superlinearly with the number of
 	  # global variables. join(1) would be nice here, but unfortunately
 	  # isn't a blessed tool.
@@ -8252,11 +9747,11 @@
 	    ;;
 	  esac
 	done
-	deplibs="$tmp_deplibs"
+	deplibs=$tmp_deplibs
 
 	if test -n "$convenience"; then
 	  if test -n "$whole_archive_flag_spec" &&
-	    test "$compiler_needs_object" = yes &&
+	    test yes = "$compiler_needs_object" &&
 	    test -z "$libobjs"; then
 	    # extract the archives, so we have objects to list.
 	    # TODO: could optimize this to just extract one archive.
@@ -8267,7 +9762,7 @@
 	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
 	    test "X$libobjs" = "X " && libobjs=
 	  else
-	    gentop="$output_objdir/${outputname}x"
+	    gentop=$output_objdir/${outputname}x
 	    func_append generated " $gentop"
 
 	    func_extract_archives $gentop $convenience
@@ -8276,18 +9771,18 @@
 	  fi
 	fi
 
-	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then
 	  eval flag=\"$thread_safe_flag_spec\"
 	  func_append linker_flags " $flag"
 	fi
 
 	# Make a backup of the uninstalled library when relinking
-	if test "$opt_mode" = relink; then
+	if test relink = "$opt_mode"; then
 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
 	fi
 
 	# Do each of the archive commands.
-	if test "$module" = yes && test -n "$module_cmds" ; then
+	if test yes = "$module" && test -n "$module_cmds"; then
 	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
 	    eval test_cmds=\"$module_expsym_cmds\"
 	    cmds=$module_expsym_cmds
@@ -8305,7 +9800,7 @@
 	  fi
 	fi
 
-	if test "X$skipped_export" != "X:" &&
+	if test : != "$skipped_export" &&
 	   func_len " $test_cmds" &&
 	   len=$func_len_result &&
 	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
@@ -8338,8 +9833,8 @@
 	  last_robj=
 	  k=1
 
-	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
-	    output=${output_objdir}/${output_la}.lnkscript
+	  if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then
+	    output=$output_objdir/$output_la.lnkscript
 	    func_verbose "creating GNU ld script: $output"
 	    echo 'INPUT (' > $output
 	    for obj in $save_libobjs
@@ -8351,14 +9846,14 @@
 	    func_append delfiles " $output"
 	    func_to_tool_file "$output"
 	    output=$func_to_tool_file_result
-	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
-	    output=${output_objdir}/${output_la}.lnk
+	  elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then
+	    output=$output_objdir/$output_la.lnk
 	    func_verbose "creating linker input file list: $output"
 	    : > $output
 	    set x $save_libobjs
 	    shift
 	    firstobj=
-	    if test "$compiler_needs_object" = yes; then
+	    if test yes = "$compiler_needs_object"; then
 	      firstobj="$1 "
 	      shift
 	    fi
@@ -8373,7 +9868,7 @@
 	  else
 	    if test -n "$save_libobjs"; then
 	      func_verbose "creating reloadable object files..."
-	      output=$output_objdir/$output_la-${k}.$objext
+	      output=$output_objdir/$output_la-$k.$objext
 	      eval test_cmds=\"$reload_cmds\"
 	      func_len " $test_cmds"
 	      len0=$func_len_result
@@ -8385,13 +9880,13 @@
 		func_len " $obj"
 		func_arith $len + $func_len_result
 		len=$func_arith_result
-		if test "X$objlist" = X ||
+		if test -z "$objlist" ||
 		   test "$len" -lt "$max_cmd_len"; then
 		  func_append objlist " $obj"
 		else
 		  # The command $test_cmds is almost too long, add a
 		  # command to the queue.
-		  if test "$k" -eq 1 ; then
+		  if test 1 -eq "$k"; then
 		    # The first file doesn't have a previous command to add.
 		    reload_objs=$objlist
 		    eval concat_cmds=\"$reload_cmds\"
@@ -8401,10 +9896,10 @@
 		    reload_objs="$objlist $last_robj"
 		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
 		  fi
-		  last_robj=$output_objdir/$output_la-${k}.$objext
+		  last_robj=$output_objdir/$output_la-$k.$objext
 		  func_arith $k + 1
 		  k=$func_arith_result
-		  output=$output_objdir/$output_la-${k}.$objext
+		  output=$output_objdir/$output_la-$k.$objext
 		  objlist=" $obj"
 		  func_len " $last_robj"
 		  func_arith $len0 + $func_len_result
@@ -8416,9 +9911,9 @@
 	      # files will link in the last one created.
 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
 	      reload_objs="$objlist $last_robj"
-	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+	      eval concat_cmds=\"\$concat_cmds$reload_cmds\"
 	      if test -n "$last_robj"; then
-	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+	        eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
 	      fi
 	      func_append delfiles " $output"
 
@@ -8426,9 +9921,9 @@
 	      output=
 	    fi
 
-	    if ${skipped_export-false}; then
-	      func_verbose "generating symbol list for \`$libname.la'"
-	      export_symbols="$output_objdir/$libname.exp"
+	    ${skipped_export-false} && {
+	      func_verbose "generating symbol list for '$libname.la'"
+	      export_symbols=$output_objdir/$libname.exp
 	      $opt_dry_run || $RM $export_symbols
 	      libobjs=$output
 	      # Append the command to create the export file.
@@ -8437,16 +9932,16 @@
 	      if test -n "$last_robj"; then
 		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
 	      fi
-	    fi
+	    }
 
 	    test -n "$save_libobjs" &&
 	      func_verbose "creating a temporary reloadable object file: $output"
 
 	    # Loop through the commands generated above and execute them.
-	    save_ifs="$IFS"; IFS='~'
+	    save_ifs=$IFS; IFS='~'
 	    for cmd in $concat_cmds; do
-	      IFS="$save_ifs"
-	      $opt_silent || {
+	      IFS=$save_ifs
+	      $opt_quiet || {
 		  func_quote_for_expand "$cmd"
 		  eval "func_echo $func_quote_for_expand_result"
 	      }
@@ -8454,7 +9949,7 @@
 		lt_exit=$?
 
 		# Restore the uninstalled library and exit
-		if test "$opt_mode" = relink; then
+		if test relink = "$opt_mode"; then
 		  ( cd "$output_objdir" && \
 		    $RM "${realname}T" && \
 		    $MV "${realname}U" "$realname" )
@@ -8463,7 +9958,7 @@
 		exit $lt_exit
 	      }
 	    done
-	    IFS="$save_ifs"
+	    IFS=$save_ifs
 
 	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
 	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
@@ -8471,18 +9966,18 @@
 	    fi
 	  fi
 
-          if ${skipped_export-false}; then
+          ${skipped_export-false} && {
 	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	      tmp_export_symbols="$export_symbols"
-	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+	      tmp_export_symbols=$export_symbols
+	      test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols
 	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
 	    fi
 
 	    if test -n "$orig_export_symbols"; then
 	      # The given exports_symbols file has to be filtered, so filter it.
-	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	      func_verbose "filter symbol list for '$libname.la' to tag DATA exports"
 	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
-	      # 's' commands which not all seds can handle. GNU sed should be fine
+	      # 's' commands, which not all seds can handle. GNU sed should be fine
 	      # though. Also, the filter scales superlinearly with the number of
 	      # global variables. join(1) would be nice here, but unfortunately
 	      # isn't a blessed tool.
@@ -8491,7 +9986,7 @@
 	      export_symbols=$output_objdir/$libname.def
 	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
 	    fi
-	  fi
+	  }
 
 	  libobjs=$output
 	  # Restore the value of output.
@@ -8505,7 +10000,7 @@
 	  # value of $libobjs for piecewise linking.
 
 	  # Do each of the archive commands.
-	  if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test yes = "$module" && test -n "$module_cmds"; then
 	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
 	      cmds=$module_expsym_cmds
 	    else
@@ -8527,7 +10022,7 @@
 
 	# Add any objects from preloaded convenience libraries
 	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
+	  gentop=$output_objdir/${outputname}x
 	  func_append generated " $gentop"
 
 	  func_extract_archives $gentop $dlprefiles
@@ -8535,11 +10030,12 @@
 	  test "X$libobjs" = "X " && libobjs=
 	fi
 
-	save_ifs="$IFS"; IFS='~'
+	save_ifs=$IFS; IFS='~'
 	for cmd in $cmds; do
-	  IFS="$save_ifs"
+	  IFS=$sp$nl
 	  eval cmd=\"$cmd\"
-	  $opt_silent || {
+	  IFS=$save_ifs
+	  $opt_quiet || {
 	    func_quote_for_expand "$cmd"
 	    eval "func_echo $func_quote_for_expand_result"
 	  }
@@ -8547,7 +10043,7 @@
 	    lt_exit=$?
 
 	    # Restore the uninstalled library and exit
-	    if test "$opt_mode" = relink; then
+	    if test relink = "$opt_mode"; then
 	      ( cd "$output_objdir" && \
 	        $RM "${realname}T" && \
 		$MV "${realname}U" "$realname" )
@@ -8556,10 +10052,10 @@
 	    exit $lt_exit
 	  }
 	done
-	IFS="$save_ifs"
+	IFS=$save_ifs
 
 	# Restore the uninstalled library and exit
-	if test "$opt_mode" = relink; then
+	if test relink = "$opt_mode"; then
 	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
 
 	  if test -n "$convenience"; then
@@ -8579,39 +10075,39 @@
 	done
 
 	# If -module or -export-dynamic was specified, set the dlname.
-	if test "$module" = yes || test "$export_dynamic" = yes; then
+	if test yes = "$module" || test yes = "$export_dynamic"; then
 	  # On all known operating systems, these are identical.
-	  dlname="$soname"
+	  dlname=$soname
 	fi
       fi
       ;;
 
     obj)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	func_warning "\`-dlopen' is ignored for objects"
+      if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then
+	func_warning "'-dlopen' is ignored for objects"
       fi
 
       case " $deplibs" in
       *\ -l* | *\ -L*)
-	func_warning "\`-l' and \`-L' are ignored for objects" ;;
+	func_warning "'-l' and '-L' are ignored for objects" ;;
       esac
 
       test -n "$rpath" && \
-	func_warning "\`-rpath' is ignored for objects"
+	func_warning "'-rpath' is ignored for objects"
 
       test -n "$xrpath" && \
-	func_warning "\`-R' is ignored for objects"
+	func_warning "'-R' is ignored for objects"
 
       test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for objects"
+	func_warning "'-version-info' is ignored for objects"
 
       test -n "$release" && \
-	func_warning "\`-release' is ignored for objects"
+	func_warning "'-release' is ignored for objects"
 
       case $output in
       *.lo)
 	test -n "$objs$old_deplibs" && \
-	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+	  func_fatal_error "cannot build library object '$output' from non-libtool objects"
 
 	libobj=$output
 	func_lo2o "$libobj"
@@ -8619,7 +10115,7 @@
 	;;
       *)
 	libobj=
-	obj="$output"
+	obj=$output
 	;;
       esac
 
@@ -8632,17 +10128,19 @@
       # the extraction.
       reload_conv_objs=
       gentop=
-      # reload_cmds runs $LD directly, so let us get rid of
-      # -Wl from whole_archive_flag_spec and hope we can get by with
-      # turning comma into space..
-      wl=
-
+      # if reload_cmds runs $LD directly, get rid of -Wl from
+      # whole_archive_flag_spec and hope we can get by with turning comma
+      # into space.
+      case $reload_cmds in
+        *\$LD[\ \$]*) wl= ;;
+      esac
       if test -n "$convenience"; then
 	if test -n "$whole_archive_flag_spec"; then
 	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+	  test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+	  reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags
 	else
-	  gentop="$output_objdir/${obj}x"
+	  gentop=$output_objdir/${obj}x
 	  func_append generated " $gentop"
 
 	  func_extract_archives $gentop $convenience
@@ -8651,12 +10149,12 @@
       fi
 
       # If we're not building shared, we need to use non_pic_objs
-      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
+      test yes = "$build_libtool_libs" || libobjs=$non_pic_objects
 
       # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+      reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs
 
-      output="$obj"
+      output=$obj
       func_execute_cmds "$reload_cmds" 'exit $?'
 
       # Exit if we aren't doing a library object file.
@@ -8668,7 +10166,7 @@
 	exit $EXIT_SUCCESS
       fi
 
-      if test "$build_libtool_libs" != yes; then
+      test yes = "$build_libtool_libs" || {
 	if test -n "$gentop"; then
 	  func_show_eval '${RM}r "$gentop"'
 	fi
@@ -8678,12 +10176,12 @@
 	# $show "echo timestamp > $libobj"
 	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
 	exit $EXIT_SUCCESS
-      fi
+      }
 
-      if test -n "$pic_flag" || test "$pic_mode" != default; then
+      if test -n "$pic_flag" || test default != "$pic_mode"; then
 	# Only do commands if we really have different PIC objects.
 	reload_objs="$libobjs $reload_conv_objs"
-	output="$libobj"
+	output=$libobj
 	func_execute_cmds "$reload_cmds" 'exit $?'
       fi
 
@@ -8700,16 +10198,14 @@
 	          output=$func_stripname_result.exe;;
       esac
       test -n "$vinfo" && \
-	func_warning "\`-version-info' is ignored for programs"
+	func_warning "'-version-info' is ignored for programs"
 
       test -n "$release" && \
-	func_warning "\`-release' is ignored for programs"
+	func_warning "'-release' is ignored for programs"
 
-      test "$preload" = yes \
-        && test "$dlopen_support" = unknown \
-	&& test "$dlopen_self" = unknown \
-	&& test "$dlopen_self_static" = unknown && \
-	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+      $preload \
+	&& test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \
+	&& func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support."
 
       case $host in
       *-*-rhapsody* | *-*-darwin1.[012])
@@ -8723,11 +10219,11 @@
       *-*-darwin*)
 	# Don't allow lazy linking, it breaks C++ global constructors
 	# But is supposedly fixed on 10.4 or later (yay!).
-	if test "$tagname" = CXX ; then
+	if test CXX = "$tagname"; then
 	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
 	    10.[0123])
-	      func_append compile_command " ${wl}-bind_at_load"
-	      func_append finalize_command " ${wl}-bind_at_load"
+	      func_append compile_command " $wl-bind_at_load"
+	      func_append finalize_command " $wl-bind_at_load"
 	    ;;
 	  esac
 	fi
@@ -8763,7 +10259,7 @@
 	*) func_append new_libs " $deplib" ;;
 	esac
       done
-      compile_deplibs="$new_libs"
+      compile_deplibs=$new_libs
 
 
       func_append compile_command " $compile_deplibs"
@@ -8787,7 +10283,7 @@
 	if test -n "$hardcode_libdir_flag_spec"; then
 	  if test -n "$hardcode_libdir_separator"; then
 	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
+	      hardcode_libdirs=$libdir
 	    else
 	      # Just accumulate the unique libdirs.
 	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -8810,7 +10306,7 @@
 	fi
 	case $host in
 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
-	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+	  testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'`
 	  case :$dllsearchpath: in
 	  *":$libdir:"*) ;;
 	  ::) dllsearchpath=$libdir;;
@@ -8827,10 +10323,10 @@
       # Substitute the hardcoded libdirs into the rpath.
       if test -n "$hardcode_libdir_separator" &&
 	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
+	libdir=$hardcode_libdirs
 	eval rpath=\" $hardcode_libdir_flag_spec\"
       fi
-      compile_rpath="$rpath"
+      compile_rpath=$rpath
 
       rpath=
       hardcode_libdirs=
@@ -8838,7 +10334,7 @@
 	if test -n "$hardcode_libdir_flag_spec"; then
 	  if test -n "$hardcode_libdir_separator"; then
 	    if test -z "$hardcode_libdirs"; then
-	      hardcode_libdirs="$libdir"
+	      hardcode_libdirs=$libdir
 	    else
 	      # Just accumulate the unique libdirs.
 	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
@@ -8863,45 +10359,43 @@
       # Substitute the hardcoded libdirs into the rpath.
       if test -n "$hardcode_libdir_separator" &&
 	 test -n "$hardcode_libdirs"; then
-	libdir="$hardcode_libdirs"
+	libdir=$hardcode_libdirs
 	eval rpath=\" $hardcode_libdir_flag_spec\"
       fi
-      finalize_rpath="$rpath"
+      finalize_rpath=$rpath
 
-      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+      if test -n "$libobjs" && test yes = "$build_old_libs"; then
 	# Transform all the library objects into standard objects.
 	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
 	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
       fi
 
-      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+      func_generate_dlsyms "$outputname" "@PROGRAM@" false
 
       # template prelinking step
       if test -n "$prelink_cmds"; then
 	func_execute_cmds "$prelink_cmds" 'exit $?'
       fi
 
-      wrappers_required=yes
+      wrappers_required=:
       case $host in
       *cegcc* | *mingw32ce*)
         # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
-        wrappers_required=no
+        wrappers_required=false
         ;;
       *cygwin* | *mingw* )
-        if test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
+        test yes = "$build_libtool_libs" || wrappers_required=false
         ;;
       *)
-        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
-          wrappers_required=no
+        if test no = "$need_relink" || test yes != "$build_libtool_libs"; then
+          wrappers_required=false
         fi
         ;;
       esac
-      if test "$wrappers_required" = no; then
+      $wrappers_required || {
 	# Replace the output file specification.
 	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
-	link_command="$compile_command$compile_rpath"
+	link_command=$compile_command$compile_rpath
 
 	# We have no uninstalled library dependencies, so finalize right now.
 	exit_status=0
@@ -8914,12 +10408,12 @@
 	fi
 
 	# Delete the generated files.
-	if test -f "$output_objdir/${outputname}S.${objext}"; then
-	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+	if test -f "$output_objdir/${outputname}S.$objext"; then
+	  func_show_eval '$RM "$output_objdir/${outputname}S.$objext"'
 	fi
 
 	exit $exit_status
-      fi
+      }
 
       if test -n "$compile_shlibpath$finalize_shlibpath"; then
 	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
@@ -8949,9 +10443,9 @@
 	fi
       fi
 
-      if test "$no_install" = yes; then
+      if test yes = "$no_install"; then
 	# We don't need to create a wrapper script.
-	link_command="$compile_var$compile_command$compile_rpath"
+	link_command=$compile_var$compile_command$compile_rpath
 	# Replace the output file specification.
 	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
 	# Delete the old output file.
@@ -8968,27 +10462,28 @@
 	exit $EXIT_SUCCESS
       fi
 
-      if test "$hardcode_action" = relink; then
-	# Fast installation is not supported
-	link_command="$compile_var$compile_command$compile_rpath"
-	relink_command="$finalize_var$finalize_command$finalize_rpath"
+      case $hardcode_action,$fast_install in
+        relink,*)
+	  # Fast installation is not supported
+	  link_command=$compile_var$compile_command$compile_rpath
+	  relink_command=$finalize_var$finalize_command$finalize_rpath
 
-	func_warning "this platform does not like uninstalled shared libraries"
-	func_warning "\`$output' will be relinked during installation"
-      else
-	if test "$fast_install" != no; then
-	  link_command="$finalize_var$compile_command$finalize_rpath"
-	  if test "$fast_install" = yes; then
-	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
-	  else
-	    # fast_install is set to needless
-	    relink_command=
-	  fi
-	else
-	  link_command="$compile_var$compile_command$compile_rpath"
-	  relink_command="$finalize_var$finalize_command$finalize_rpath"
-	fi
-      fi
+	  func_warning "this platform does not like uninstalled shared libraries"
+	  func_warning "'$output' will be relinked during installation"
+	  ;;
+        *,yes)
+	  link_command=$finalize_var$compile_command$finalize_rpath
+	  relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+          ;;
+	*,no)
+	  link_command=$compile_var$compile_command$compile_rpath
+	  relink_command=$finalize_var$finalize_command$finalize_rpath
+          ;;
+	*,needless)
+	  link_command=$finalize_var$compile_command$finalize_rpath
+	  relink_command=
+          ;;
+      esac
 
       # Replace the output file specification.
       link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
@@ -9045,8 +10540,8 @@
 	    func_dirname_and_basename "$output" "" "."
 	    output_name=$func_basename_result
 	    output_path=$func_dirname_result
-	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
-	    cwrapper="$output_path/$output_name.exe"
+	    cwrappersource=$output_path/$objdir/lt-$output_name.c
+	    cwrapper=$output_path/$output_name.exe
 	    $RM $cwrappersource $cwrapper
 	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
 
@@ -9067,7 +10562,7 @@
 	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
 	    $opt_dry_run || {
 	      # note: this script will not be executed, so do not chmod.
-	      if test "x$build" = "x$host" ; then
+	      if test "x$build" = "x$host"; then
 		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
 	      else
 		func_emit_wrapper no > $func_ltwrapper_scriptname_result
@@ -9090,25 +10585,27 @@
     # See if we need to build an old-fashioned archive.
     for oldlib in $oldlibs; do
 
-      if test "$build_libtool_libs" = convenience; then
-	oldobjs="$libobjs_save $symfileobj"
-	addlibs="$convenience"
-	build_libtool_libs=no
-      else
-	if test "$build_libtool_libs" = module; then
-	  oldobjs="$libobjs_save"
+      case $build_libtool_libs in
+        convenience)
+	  oldobjs="$libobjs_save $symfileobj"
+	  addlibs=$convenience
 	  build_libtool_libs=no
-	else
+	  ;;
+	module)
+	  oldobjs=$libobjs_save
+	  addlibs=$old_convenience
+	  build_libtool_libs=no
+          ;;
+	*)
 	  oldobjs="$old_deplibs $non_pic_objects"
-	  if test "$preload" = yes && test -f "$symfileobj"; then
-	    func_append oldobjs " $symfileobj"
-	  fi
-	fi
-	addlibs="$old_convenience"
-      fi
+	  $preload && test -f "$symfileobj" \
+	    && func_append oldobjs " $symfileobj"
+	  addlibs=$old_convenience
+	  ;;
+      esac
 
       if test -n "$addlibs"; then
-	gentop="$output_objdir/${outputname}x"
+	gentop=$output_objdir/${outputname}x
 	func_append generated " $gentop"
 
 	func_extract_archives $gentop $addlibs
@@ -9116,13 +10613,13 @@
       fi
 
       # Do each command in the archive commands.
-      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+      if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then
 	cmds=$old_archive_from_new_cmds
       else
 
 	# Add any objects from preloaded convenience libraries
 	if test -n "$dlprefiles"; then
-	  gentop="$output_objdir/${outputname}x"
+	  gentop=$output_objdir/${outputname}x
 	  func_append generated " $gentop"
 
 	  func_extract_archives $gentop $dlprefiles
@@ -9143,7 +10640,7 @@
 	  :
 	else
 	  echo "copying selected object files to avoid basename conflicts..."
-	  gentop="$output_objdir/${outputname}x"
+	  gentop=$output_objdir/${outputname}x
 	  func_append generated " $gentop"
 	  func_mkdir_p "$gentop"
 	  save_oldobjs=$oldobjs
@@ -9152,7 +10649,7 @@
 	  for obj in $save_oldobjs
 	  do
 	    func_basename "$obj"
-	    objbase="$func_basename_result"
+	    objbase=$func_basename_result
 	    case " $oldobjs " in
 	    " ") oldobjs=$obj ;;
 	    *[\ /]"$objbase "*)
@@ -9221,18 +10718,18 @@
 	    else
 	      # the above command should be used before it gets too long
 	      oldobjs=$objlist
-	      if test "$obj" = "$last_oldobj" ; then
+	      if test "$obj" = "$last_oldobj"; then
 		RANLIB=$save_RANLIB
 	      fi
 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      eval concat_cmds=\"\$concat_cmds$old_archive_cmds\"
 	      objlist=
 	      len=$len0
 	    fi
 	  done
 	  RANLIB=$save_RANLIB
 	  oldobjs=$objlist
-	  if test "X$oldobjs" = "X" ; then
+	  if test -z "$oldobjs"; then
 	    eval cmds=\"\$concat_cmds\"
 	  else
 	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
@@ -9249,7 +10746,7 @@
     case $output in
     *.la)
       old_library=
-      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      test yes = "$build_old_libs" && old_library=$libname.$libext
       func_verbose "creating $output"
 
       # Preserve any variables that may affect compiler behavior
@@ -9264,31 +10761,31 @@
 	fi
       done
       # Quote the link command for shipping.
-      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
       relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
-      if test "$hardcode_automatic" = yes ; then
+      if test yes = "$hardcode_automatic"; then
 	relink_command=
       fi
 
       # Only create the output if not a dry run.
       $opt_dry_run || {
 	for installed in no yes; do
-	  if test "$installed" = yes; then
+	  if test yes = "$installed"; then
 	    if test -z "$install_libdir"; then
 	      break
 	    fi
-	    output="$output_objdir/$outputname"i
+	    output=$output_objdir/${outputname}i
 	    # Replace all uninstalled libtool libraries with the installed ones
 	    newdependency_libs=
 	    for deplib in $dependency_libs; do
 	      case $deplib in
 	      *.la)
 		func_basename "$deplib"
-		name="$func_basename_result"
+		name=$func_basename_result
 		func_resolve_sysroot "$deplib"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
 		test -z "$libdir" && \
-		  func_fatal_error "\`$deplib' is not a valid libtool archive"
+		  func_fatal_error "'$deplib' is not a valid libtool archive"
 		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
 		;;
 	      -L*)
@@ -9304,23 +10801,23 @@
 	      *) func_append newdependency_libs " $deplib" ;;
 	      esac
 	    done
-	    dependency_libs="$newdependency_libs"
+	    dependency_libs=$newdependency_libs
 	    newdlfiles=
 
 	    for lib in $dlfiles; do
 	      case $lib in
 	      *.la)
 	        func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		name=$func_basename_result
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
 		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
+		  func_fatal_error "'$lib' is not a valid libtool archive"
 		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
 		;;
 	      *) func_append newdlfiles " $lib" ;;
 	      esac
 	    done
-	    dlfiles="$newdlfiles"
+	    dlfiles=$newdlfiles
 	    newdlprefiles=
 	    for lib in $dlprefiles; do
 	      case $lib in
@@ -9330,34 +10827,34 @@
 		# didn't already link the preopened objects directly into
 		# the library:
 		func_basename "$lib"
-		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		name=$func_basename_result
+		eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
 		test -z "$libdir" && \
-		  func_fatal_error "\`$lib' is not a valid libtool archive"
+		  func_fatal_error "'$lib' is not a valid libtool archive"
 		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
 		;;
 	      esac
 	    done
-	    dlprefiles="$newdlprefiles"
+	    dlprefiles=$newdlprefiles
 	  else
 	    newdlfiles=
 	    for lib in $dlfiles; do
 	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
 		*) abs=`pwd`"/$lib" ;;
 	      esac
 	      func_append newdlfiles " $abs"
 	    done
-	    dlfiles="$newdlfiles"
+	    dlfiles=$newdlfiles
 	    newdlprefiles=
 	    for lib in $dlprefiles; do
 	      case $lib in
-		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		[\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;;
 		*) abs=`pwd`"/$lib" ;;
 	      esac
 	      func_append newdlprefiles " $abs"
 	    done
-	    dlprefiles="$newdlprefiles"
+	    dlprefiles=$newdlprefiles
 	  fi
 	  $RM $output
 	  # place dlname in correct position for cygwin
@@ -9373,10 +10870,9 @@
 	  case $host,$output,$installed,$module,$dlname in
 	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
 	      # If a -bindir argument was supplied, place the dll there.
-	      if test "x$bindir" != x ;
-	      then
+	      if test -n "$bindir"; then
 		func_relative_path "$install_libdir" "$bindir"
-		tdlname=$func_relative_path_result$dlname
+		tdlname=$func_relative_path_result/$dlname
 	      else
 		# Otherwise fall back on heuristic.
 		tdlname=../bin/$dlname
@@ -9385,7 +10881,7 @@
 	  esac
 	  $ECHO > $output "\
 # $outputname - a libtool library file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated by $PROGRAM (GNU $PACKAGE) $VERSION
 #
 # Please DO NOT delete this file!
 # It is necessary for linking the library.
@@ -9399,7 +10895,7 @@
 # The name of the static archive.
 old_library='$old_library'
 
-# Linker flags that can not go in dependency_libs.
+# Linker flags that cannot go in dependency_libs.
 inherited_linker_flags='$new_inherited_linker_flags'
 
 # Libraries that this one depends upon.
@@ -9425,7 +10921,7 @@
 
 # Directory that this library needs to be installed in:
 libdir='$install_libdir'"
-	  if test "$installed" = no && test "$need_relink" = yes; then
+	  if test no,yes = "$installed,$need_relink"; then
 	    $ECHO >> $output "\
 relink_command=\"$relink_command\""
 	  fi
@@ -9440,27 +10936,29 @@
     exit $EXIT_SUCCESS
 }
 
-{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
-    func_mode_link ${1+"$@"}
+if test link = "$opt_mode" || test relink = "$opt_mode"; then
+  func_mode_link ${1+"$@"}
+fi
 
 
 # func_mode_uninstall arg...
 func_mode_uninstall ()
 {
-    $opt_debug
-    RM="$nonopt"
+    $debug_cmd
+
+    RM=$nonopt
     files=
-    rmforce=
+    rmforce=false
     exit_status=0
 
     # This variable tells wrapper scripts just to set variables rather
     # than running their programs.
-    libtool_install_magic="$magic"
+    libtool_install_magic=$magic
 
     for arg
     do
       case $arg in
-      -f) func_append RM " $arg"; rmforce=yes ;;
+      -f) func_append RM " $arg"; rmforce=: ;;
       -*) func_append RM " $arg" ;;
       *) func_append files " $arg" ;;
       esac
@@ -9473,18 +10971,18 @@
 
     for file in $files; do
       func_dirname "$file" "" "."
-      dir="$func_dirname_result"
-      if test "X$dir" = X.; then
-	odir="$objdir"
+      dir=$func_dirname_result
+      if test . = "$dir"; then
+	odir=$objdir
       else
-	odir="$dir/$objdir"
+	odir=$dir/$objdir
       fi
       func_basename "$file"
-      name="$func_basename_result"
-      test "$opt_mode" = uninstall && odir="$dir"
+      name=$func_basename_result
+      test uninstall = "$opt_mode" && odir=$dir
 
       # Remember odir for removal later, being careful to avoid duplicates
-      if test "$opt_mode" = clean; then
+      if test clean = "$opt_mode"; then
 	case " $rmdirs " in
 	  *" $odir "*) ;;
 	  *) func_append rmdirs " $odir" ;;
@@ -9499,11 +10997,11 @@
       elif test -d "$file"; then
 	exit_status=1
 	continue
-      elif test "$rmforce" = yes; then
+      elif $rmforce; then
 	continue
       fi
 
-      rmfiles="$file"
+      rmfiles=$file
 
       case $name in
       *.la)
@@ -9517,7 +11015,7 @@
 	  done
 	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
 
-	  case "$opt_mode" in
+	  case $opt_mode in
 	  clean)
 	    case " $library_names " in
 	    *" $dlname "*) ;;
@@ -9528,12 +11026,12 @@
 	  uninstall)
 	    if test -n "$library_names"; then
 	      # Do each command in the postuninstall commands.
-	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+	      func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1'
 	    fi
 
 	    if test -n "$old_library"; then
 	      # Do each command in the old_postuninstall commands.
-	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
+	      func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1'
 	    fi
 	    # FIXME: should reinstall the best remaining shared library.
 	    ;;
@@ -9549,21 +11047,19 @@
 	  func_source $dir/$name
 
 	  # Add PIC object to the list of files to remove.
-	  if test -n "$pic_object" &&
-	     test "$pic_object" != none; then
+	  if test -n "$pic_object" && test none != "$pic_object"; then
 	    func_append rmfiles " $dir/$pic_object"
 	  fi
 
 	  # Add non-PIC object to the list of files to remove.
-	  if test -n "$non_pic_object" &&
-	     test "$non_pic_object" != none; then
+	  if test -n "$non_pic_object" && test none != "$non_pic_object"; then
 	    func_append rmfiles " $dir/$non_pic_object"
 	  fi
 	fi
 	;;
 
       *)
-	if test "$opt_mode" = clean ; then
+	if test clean = "$opt_mode"; then
 	  noexename=$name
 	  case $file in
 	  *.exe)
@@ -9590,12 +11086,12 @@
 
 	    # note $name still contains .exe if it was in $file originally
 	    # as does the version of $file that was added into $rmfiles
-	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
-	    if test "$fast_install" = yes && test -n "$relink_command"; then
+	    func_append rmfiles " $odir/$name $odir/${name}S.$objext"
+	    if test yes = "$fast_install" && test -n "$relink_command"; then
 	      func_append rmfiles " $odir/lt-$name"
 	    fi
-	    if test "X$noexename" != "X$name" ; then
-	      func_append rmfiles " $odir/lt-${noexename}.c"
+	    if test "X$noexename" != "X$name"; then
+	      func_append rmfiles " $odir/lt-$noexename.c"
 	    fi
 	  fi
 	fi
@@ -9604,7 +11100,7 @@
       func_show_eval "$RM $rmfiles" 'exit_status=1'
     done
 
-    # Try to remove the ${objdir}s in the directories where we deleted files
+    # Try to remove the $objdir's in the directories where we deleted files
     for dir in $rmdirs; do
       if test -d "$dir"; then
 	func_show_eval "rmdir $dir >/dev/null 2>&1"
@@ -9614,16 +11110,17 @@
     exit $exit_status
 }
 
-{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
-    func_mode_uninstall ${1+"$@"}
+if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then
+  func_mode_uninstall ${1+"$@"}
+fi
 
 test -z "$opt_mode" && {
-  help="$generic_help"
+  help=$generic_help
   func_fatal_help "you must specify a MODE"
 }
 
 test -z "$exec_cmd" && \
-  func_fatal_help "invalid operation mode \`$opt_mode'"
+  func_fatal_help "invalid operation mode '$opt_mode'"
 
 if test -n "$exec_cmd"; then
   eval exec "$exec_cmd"
@@ -9634,7 +11131,7 @@
 
 
 # The TAGs below are defined such that we never get into a situation
-# in which we disable both kinds of libraries.  Given conflicting
+# where we disable both kinds of libraries.  Given conflicting
 # choices, we go for a static library, that is the most portable,
 # since we can't tell whether shared libraries were disabled because
 # the user asked for that or because the platform doesn't support
@@ -9657,5 +11154,3 @@
 # mode:shell-script
 # sh-indentation:2
 # End:
-# vi:sw=2
-
diff --git a/m4/Makefile.am b/m4/Makefile.am
index d4e7893..95a6641 100644
--- a/m4/Makefile.am
+++ b/m4/Makefile.am
@@ -18,7 +18,6 @@
 	inttypes_h.m4 \
 	inttypes-pri.m4 \
 	lcmessage.m4 \
-	libfame.m4 \
 	lib-ld.m4 \
 	lib-link.m4 \
 	libmikmod.m4 \
diff --git a/m4/Makefile.in b/m4/Makefile.in
index ba90575..43dfc53 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -114,16 +114,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -237,7 +236,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -259,7 +257,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -281,9 +278,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -445,6 +439,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -458,8 +453,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -546,8 +539,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -599,6 +590,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -619,6 +611,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -656,7 +650,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -716,7 +709,6 @@
 	inttypes_h.m4 \
 	inttypes-pri.m4 \
 	lcmessage.m4 \
-	libfame.m4 \
 	lib-ld.m4 \
 	lib-link.m4 \
 	libmikmod.m4 \
diff --git a/m4/gsettings.m4 b/m4/gsettings.m4
deleted file mode 100644
index 429d04b..0000000
--- a/m4/gsettings.m4
+++ /dev/null
@@ -1,83 +0,0 @@
-dnl GLIB_GSETTINGS
-dnl Defines GSETTINGS_SCHEMAS_INSTALL which controls whether
-dnl the schema should be compiled
-dnl
-
-AC_DEFUN([GLIB_GSETTINGS],
-[
-  m4_pattern_allow([AM_V_GEN])
-  AC_ARG_ENABLE(schemas-compile,
-                AC_HELP_STRING([--disable-schemas-compile],
-                               [Disable regeneration of gschemas.compiled on install]),
-                [case ${enableval} in
-                  yes) GSETTINGS_DISABLE_SCHEMAS_COMPILE=""  ;;
-                  no)  GSETTINGS_DISABLE_SCHEMAS_COMPILE="1" ;;
-                  *) AC_MSG_ERROR([bad value ${enableval} for --enable-schemas-compile]) ;;
-                 esac])
-  AC_SUBST([GSETTINGS_DISABLE_SCHEMAS_COMPILE])
-  PKG_PROG_PKG_CONFIG([0.16])
-  AC_SUBST(gsettingsschemadir, [${datadir}/glib-2.0/schemas])
-  if test x$cross_compiling != xyes; then
-    GLIB_COMPILE_SCHEMAS=`$PKG_CONFIG --variable glib_compile_schemas gio-2.0`
-  else
-    AC_PATH_PROG(GLIB_COMPILE_SCHEMAS, glib-compile-schemas)
-  fi
-  AC_SUBST(GLIB_COMPILE_SCHEMAS)
-  if test "x$GLIB_COMPILE_SCHEMAS" = "x"; then
-    ifelse([$2],,[AC_MSG_ERROR([glib-compile-schemas not found.])],[$2])
-  else
-    ifelse([$1],,[:],[$1])
-  fi
-
-  GSETTINGS_RULES='
-.PHONY : uninstall-gsettings-schemas install-gsettings-schemas clean-gsettings-schemas
-
-mostlyclean-am: clean-gsettings-schemas
-
-gsettings__enum_file = $(addsuffix .enums.xml,$(gsettings_ENUM_NAMESPACE))
-
-%.gschema.valid: %.gschema.xml $(gsettings__enum_file)
-	$(AM_V_GEN) if test -f "$<"; then d=; else d="$(srcdir)/"; fi; $(GLIB_COMPILE_SCHEMAS) --strict --dry-run $(addprefix --schema-file=,$(gsettings__enum_file)) --schema-file=$${d}$< && touch [$]@
-
-all-am: $(gsettings_SCHEMAS:.xml=.valid)
-uninstall-am: uninstall-gsettings-schemas
-install-data-am: install-gsettings-schemas
-
-.SECONDARY: $(gsettings_SCHEMAS)
-
-install-gsettings-schemas: $(gsettings_SCHEMAS) $(gsettings__enum_file)
-	@$(NORMAL_INSTALL)
-	if test -n "$^"; then \
-		test -z "$(gsettingsschemadir)" || $(MKDIR_P) "$(DESTDIR)$(gsettingsschemadir)"; \
-		$(INSTALL_DATA) $^ "$(DESTDIR)$(gsettingsschemadir)"; \
-		test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir); \
-	fi
-
-uninstall-gsettings-schemas:
-	@$(NORMAL_UNINSTALL)
-	@list='\''$(gsettings_SCHEMAS) $(gsettings__enum_file)'\''; test -n "$(gsettingsschemadir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e '\''s|^.*/||'\''`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '\''$(DESTDIR)$(gsettingsschemadir)'\'' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(gsettingsschemadir)" && rm -f $$files
-	test -n "$(GSETTINGS_DISABLE_SCHEMAS_COMPILE)$(DESTDIR)" || $(GLIB_COMPILE_SCHEMAS) $(gsettingsschemadir)
-
-clean-gsettings-schemas:
-	rm -f $(gsettings_SCHEMAS:.xml=.valid) $(gsettings__enum_file)
-
-ifdef gsettings_ENUM_NAMESPACE
-$(gsettings__enum_file): $(gsettings_ENUM_FILES)
-	$(AM_V_GEN) glib-mkenums --comments '\''<!-- @comment@ -->'\'' --fhead "<schemalist>" --vhead "  <@type@ id='\''$(gsettings_ENUM_NAMESPACE).@EnumName@'\''>" --vprod "    <value nick='\''@valuenick@'\'' value='\''@valuenum@'\''/>" --vtail "  </@type@>" --ftail "</schemalist>" [$]^ > [$]@.tmp && mv [$]@.tmp [$]@
-endif
-'
-  _GSETTINGS_SUBST(GSETTINGS_RULES)
-])
-
-dnl _GSETTINGS_SUBST(VARIABLE)
-dnl Abstract macro to do either _AM_SUBST_NOTMAKE or AC_SUBST
-AC_DEFUN([_GSETTINGS_SUBST],
-[
-AC_SUBST([$1])
-m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([$1])])
-]
-)
diff --git a/m4/libfame.m4 b/m4/libfame.m4
deleted file mode 100644
index b570584..0000000
--- a/m4/libfame.m4
+++ /dev/null
@@ -1,182 +0,0 @@
-dnl AM_PATH_LIBFAME([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
-dnl Test for libfame, and define LIBFAME_CFLAGS and LIBFAME_LIBS
-dnl Vivien Chappelier 12/11/00
-dnl stolen from ORBit autoconf
-dnl
-AC_DEFUN([AM_PATH_LIBFAME],
-[dnl 
-dnl Get the cflags and libraries from the libfame-config script
-dnl
-AC_ARG_WITH(libfame-prefix,[  --with-libfame-prefix=PFX   Prefix where libfame is installed (optional)],
-            libfame_config_prefix="$withval", libfame_config_prefix="")
-AC_ARG_WITH(libfame-exec-prefix,[  --with-libfame-exec-prefix=PFX Exec prefix where libfame is installed (optional)],
-            libfame_config_exec_prefix="$withval", libfame_config_exec_prefix="")
-AC_ARG_ENABLE(libfametest, [  --disable-libfametest       Do not try to compile and run a test libfame program],
-		    , enable_libfametest=yes)
-
-  if test x$libfame_config_exec_prefix != x ; then
-     libfame_config_args="$libfame_config_args --exec-prefix=$libfame_config_exec_prefix"
-     if test x${LIBFAME_CONFIG+set} != xset ; then
-        LIBFAME_CONFIG=$libfame_config_exec_prefix/bin/libfame-config
-     fi
-  fi
-  if test x$libfame_config_prefix != x ; then
-     libfame_config_args="$libfame_config_args --prefix=$libfame_config_prefix"
-     if test x${LIBFAME_CONFIG+set} != xset ; then
-        LIBFAME_CONFIG=$libfame_config_prefix/bin/libfame-config
-     fi
-  fi
-
-  AC_PATH_PROG(LIBFAME_CONFIG, libfame-config, no)
-  min_libfame_version=ifelse([$1], , 0.9.0, $1)
-  AC_MSG_CHECKING(for libfame - version >= $min_libfame_version)
-  no_libfame=""
-  if test "$LIBFAME_CONFIG" = "no" ; then
-    no_libfame=yes
-  else
-    LIBFAME_CFLAGS=`$LIBFAME_CONFIG $libfame_config_args --cflags`
-    LIBFAME_LIBS=`$LIBFAME_CONFIG $libfame_config_args --libs`
-    libfame_config_major_version=`$LIBFAME_CONFIG $libfame_config_args --version | \
-	   sed -e 's,[[^0-9.]],,g' -e 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-    libfame_config_minor_version=`$LIBFAME_CONFIG $libfame_config_args --version | \
-	   sed -e 's,[[^0-9.]],,g' -e 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-    libfame_config_micro_version=`$LIBFAME_CONFIG $libfame_config_args --version | \
-	   sed -e 's,[[^0-9.]],,g' -e 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-    if test "x$enable_libfametest" = "xyes" ; then
-      ac_save_CFLAGS="$CFLAGS"
-      ac_save_LIBS="$LIBS"
-      CFLAGS="$CFLAGS $LIBFAME_CFLAGS"
-      LIBS="$LIBFAME_LIBS $LIBS"
-dnl
-dnl Now check if the installed LIBFAME is sufficiently new. (Also sanity
-dnl checks the results of libfame-config to some extent
-dnl
-      rm -f conf.libfametest
-      AC_TRY_RUN([
-#include <fame.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int 
-main ()
-{
-  int major, minor, micro;
-  char *tmp_version;
-
-  system ("touch conf.libfametest");
-
-  /* HP/UX 9 (%@#!) writes to sscanf strings */
-  tmp_version = strdup("$min_libfame_version");
-  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
-     printf("%s, bad version string\n", "$min_libfame_version");
-     exit(1);
-   }
-
-  if ((libfame_major_version != $libfame_config_major_version) ||
-      (libfame_minor_version != $libfame_config_minor_version) ||
-      (libfame_micro_version != $libfame_config_micro_version))
-    {
-      printf("\n*** 'libfame-config --version' returned %d.%d.%d, but Libfame (%d.%d.%d)\n", 
-             $libfame_config_major_version, $libfame_config_minor_version, $libfame_config_micro_version,
-             libfame_major_version, libfame_minor_version, libfame_micro_version);
-      printf ("*** was found! If libfame-config was correct, then it is best\n");
-      printf ("*** to remove the old version of libfame. You may also be able to fix the error\n");
-      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
-      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
-      printf("*** required on your system.\n");
-      printf("*** If libfame-config was wrong, set the environment variable LIBFAME_CONFIG\n");
-      printf("*** to point to the correct copy of libfame-config, and remove the file config.cache\n");
-      printf("*** before re-running configure\n");
-    } 
-#if defined (LIBFAME_MAJOR_VERSION) && defined (LIBFAME_MINOR_VERSION) && defined (LIBFAME_MICRO_VERSION)
-  else if ((libfame_major_version != LIBFAME_MAJOR_VERSION) ||
-	   (libfame_minor_version != LIBFAME_MINOR_VERSION) ||
-           (libfame_micro_version != LIBFAME_MICRO_VERSION))
-    {
-      printf("*** libfame header files (version %d.%d.%d) do not match\n",
-	     LIBFAME_MAJOR_VERSION, LIBFAME_MINOR_VERSION, LIBFAME_MICRO_VERSION);
-      printf("*** library (version %d.%d.%d)\n",
-	     libfame_major_version, libfame_minor_version, libfame_micro_version);
-    }
-#endif /* defined (LIBFAME_MAJOR_VERSION) ... */
-  else
-    {
-      if ((libfame_major_version > major) ||
-        ((libfame_major_version == major) && (libfame_minor_version > minor)) ||
-        ((libfame_major_version == major) && (libfame_minor_version == minor) && (libfame_micro_version >= micro)))
-      {
-        return 0;
-       }
-     else
-      {
-        printf("\n*** An old version of libfame (%d.%d.%d) was found.\n",
-               libfame_major_version, libfame_minor_version, libfame_micro_version);
-        printf("*** You need a version of libfame newer than %d.%d.%d. The latest version of\n",
-	       major, minor, micro);
-        printf("*** libfame is always available from http://www-eleves.enst-bretagne.fr/~chappeli/fame\n");
-        printf("***\n");
-        printf("*** If you have already installed a sufficiently new version, this error\n");
-        printf("*** probably means that the wrong copy of the libfame-config shell script is\n");
-        printf("*** being found. The easiest way to fix this is to remove the old version\n");
-        printf("*** of libfame, but you can also set the LIBFAME_CONFIG environment to point to the\n");
-        printf("*** correct copy of libfame-config. (In this case, you will have to\n");
-        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
-        printf("*** so that the correct libraries are found at run-time))\n");
-      }
-    }
-  return 1;
-}
-],, no_libfame=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
-       CFLAGS="$ac_save_CFLAGS"
-       LIBS="$ac_save_LIBS"
-     fi
-  fi
-  if test "x$no_libfame" = x ; then
-     AC_MSG_RESULT(yes)
-     ifelse([$2], , :, [$2])     
-  else
-     AC_MSG_RESULT(no)
-     if test "$LIBFAME_CONFIG" = "no" ; then
-       echo "*** The libfame-config script installed by libfame could not be found"
-       echo "*** If libfame was installed in PREFIX, make sure PREFIX/bin is in"
-       echo "*** your path, or set the LIBFAME_CONFIG environment variable to the"
-       echo "*** full path to libfame-config."
-     else
-       if test -f conf.libfametest ; then
-        :
-       else
-          echo "*** Could not run libfame test program, checking why..."
-          CFLAGS="$CFLAGS $LIBFAME_CFLAGS"
-          LIBS="$LIBS $LIBFAME_LIBS"
-          AC_TRY_LINK([
-#include <fame.h>
-#include <stdio.h>
-],      [ return ((libfame_major_version) || (libfame_minor_version) || (libfame_micro_version)); ],
-        [ echo "*** The test program compiled, but did not run. This usually means"
-          echo "*** that the run-time linker is not finding libfame or finding the wrong"
-          echo "*** version of LIBFAME. If it is not finding libfame, you'll need to set your"
-          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
-          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
-          echo "*** is required on your system"
-	  echo "***"
-          echo "*** If you have an old version installed, it is best to remove it, although"
-          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
-          echo "***" ],
-        [ echo "*** The test program failed to compile or link. See the file config.log for the"
-          echo "*** exact error that occured. This usually means libfame was incorrectly installed"
-          echo "*** or that you have moved libfame since it was installed. In the latter case, you"
-          echo "*** may want to edit the libfame-config script: $LIBFAME_CONFIG" ])
-          CFLAGS="$ac_save_CFLAGS"
-          LIBS="$ac_save_LIBS"
-       fi
-     fi
-     LIBFAME_CFLAGS=""
-     LIBFAME_LIBS=""
-     ifelse([$3], , :, [$3])
-  fi
-
-  AC_SUBST(LIBFAME_CFLAGS)
-  AC_SUBST(LIBFAME_LIBS)
-  rm -f conf.libfametest
-])
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index d7c043f..10ab284 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -1,8 +1,6 @@
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
+#   Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
@@ -10,36 +8,30 @@
 # modifications, as long as this notice is preserved.
 
 m4_define([_LT_COPYING], [dnl
-#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of of the License, or
+# (at your option) any later version.
 #
-#   This file is part of GNU Libtool.
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program or library that is built
+# using GNU Libtool, you may include this file under the  same
+# distribution terms that you use for the rest of that program.
 #
-# GNU Libtool is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# GNU Libtool 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 General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ])
 
-# serial 57 LT_INIT
+# serial 58 LT_INIT
 
 
 # LT_PREREQ(VERSION)
@@ -67,7 +59,7 @@
 # LT_INIT([OPTIONS])
 # ------------------
 AC_DEFUN([LT_INIT],
-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK
 AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
 AC_BEFORE([$0], [LT_LANG])dnl
 AC_BEFORE([$0], [LT_OUTPUT])dnl
@@ -91,7 +83,7 @@
 _LT_SET_OPTIONS([$0], [$1])
 
 # This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
+LIBTOOL_DEPS=$ltmain
 
 # Always use our own libtool.
 LIBTOOL='$(SHELL) $(top_builddir)/libtool'
@@ -111,26 +103,43 @@
 dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
 
 
+# _LT_PREPARE_CC_BASENAME
+# -----------------------
+m4_defun([_LT_PREPARE_CC_BASENAME], [
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in @S|@*""; do
+      case $cc_temp in
+        compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+        distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+}
+])# _LT_PREPARE_CC_BASENAME
+
+
 # _LT_CC_BASENAME(CC)
 # -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME,
+# but that macro is also expanded into generated libtool script, which
+# arranges for $SED and $ECHO to be set by different means.
 m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
-  case $cc_temp in
-    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+[m4_require([_LT_PREPARE_CC_BASENAME])dnl
+AC_REQUIRE([_LT_DECL_SED])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+func_cc_basename $1
+cc_basename=$func_cc_basename_result
 ])
 
 
 # _LT_FILEUTILS_DEFAULTS
 # ----------------------
 # It is okay to use these file commands and assume they have been set
-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'.
 m4_defun([_LT_FILEUTILS_DEFAULTS],
 [: ${CP="cp -f"}
 : ${MV="mv -f"}
@@ -177,15 +186,16 @@
 m4_require([_LT_CMD_OLD_ARCHIVE])dnl
 m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
 m4_require([_LT_WITH_SYSROOT])dnl
+m4_require([_LT_CMD_TRUNCATE])dnl
 
 _LT_CONFIG_LIBTOOL_INIT([
-# See if we are running on zsh, and set the options which allow our
+# See if we are running on zsh, and set the options that allow our
 # commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
+if test -n "\${ZSH_VERSION+set}"; then
    setopt NO_GLOB_SUBST
 fi
 ])
-if test -n "${ZSH_VERSION+set}" ; then
+if test -n "${ZSH_VERSION+set}"; then
    setopt NO_GLOB_SUBST
 fi
 
@@ -198,7 +208,7 @@
   # AIX sometimes has problems with the GCC collect2 program.  For some
   # reason, if we set the COLLECT_NAMES environment variable, the problems
   # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
+  if test set != "${COLLECT_NAMES+set}"; then
     COLLECT_NAMES=
     export COLLECT_NAMES
   fi
@@ -209,14 +219,14 @@
 ofile=libtool
 can_build_shared=yes
 
-# All known linkers require a `.a' archive for static linking (except MSVC,
+# All known linkers require a '.a' archive for static linking (except MSVC,
 # which needs '.lib').
 libext=a
 
-with_gnu_ld="$lt_cv_prog_gnu_ld"
+with_gnu_ld=$lt_cv_prog_gnu_ld
 
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
+old_CC=$CC
+old_CFLAGS=$CFLAGS
 
 # Set sane defaults for various variables
 test -z "$CC" && CC=cc
@@ -269,14 +279,14 @@
 
 # _LT_PROG_LTMAIN
 # ---------------
-# Note that this code is called both from `configure', and `config.status'
+# Note that this code is called both from 'configure', and 'config.status'
 # now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
-# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# 'config.status' has no value for ac_aux_dir unless we are using Automake,
 # so we pass a copy along to make sure it has a sensible value anyway.
 m4_defun([_LT_PROG_LTMAIN],
 [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
 _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
-ltmain="$ac_aux_dir/ltmain.sh"
+ltmain=$ac_aux_dir/ltmain.sh
 ])# _LT_PROG_LTMAIN
 
 
@@ -286,7 +296,7 @@
 
 # So that we can recreate a full libtool script including additional
 # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
-# in macros and then make a single call at the end using the `libtool'
+# in macros and then make a single call at the end using the 'libtool'
 # label.
 
 
@@ -421,8 +431,8 @@
 
 # _LT_CONFIG_STATUS_DECLARE([VARNAME])
 # ------------------------------------
-# Quote a variable value, and forward it to `config.status' so that its
-# declaration there will have the same value as in `configure'.  VARNAME
+# Quote a variable value, and forward it to 'config.status' so that its
+# declaration there will have the same value as in 'configure'.  VARNAME
 # must have a single quote delimited value for this to work.
 m4_define([_LT_CONFIG_STATUS_DECLARE],
 [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
@@ -446,7 +456,7 @@
 # Output comment and list of tags supported by the script
 m4_defun([_LT_LIBTOOL_TAGS],
 [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
-available_tags="_LT_TAGS"dnl
+available_tags='_LT_TAGS'dnl
 ])
 
 
@@ -474,7 +484,7 @@
 # _LT_LIBTOOL_CONFIG_VARS
 # -----------------------
 # Produce commented declarations of non-tagged libtool config variables
-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool'
 # script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
 # section) are produced by _LT_LIBTOOL_TAG_VARS.
 m4_defun([_LT_LIBTOOL_CONFIG_VARS],
@@ -500,8 +510,8 @@
 # Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
 # variables for single and double quote escaping we saved from calls
 # to _LT_DECL, we can put quote escaped variables declarations
-# into `config.status', and then the shell code to quote escape them in
-# for loops in `config.status'.  Finally, any additional code accumulated
+# into 'config.status', and then the shell code to quote escape them in
+# for loops in 'config.status'.  Finally, any additional code accumulated
 # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
 m4_defun([_LT_CONFIG_COMMANDS],
 [AC_PROVIDE_IFELSE([LT_OUTPUT],
@@ -547,7 +557,7 @@
 ]], lt_decl_quote_varnames); do
     case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -560,7 +570,7 @@
 ]], lt_decl_dquote_varnames); do
     case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -576,7 +586,7 @@
 # Generate a child script FILE with all initialization necessary to
 # reuse the environment learned by the parent script, and make the
 # file executable.  If COMMENT is supplied, it is inserted after the
-# `#!' sequence but before initialization text begins.  After this
+# '#!' sequence but before initialization text begins.  After this
 # macro, additional text can be appended to FILE to form the body of
 # the child script.  The macro ends with non-zero status if the
 # file could not be fully written (such as if the disk is full).
@@ -598,7 +608,7 @@
 _AS_PREPARE
 exec AS_MESSAGE_FD>&1
 _ASEOF
-test $lt_write_fail = 0 && chmod +x $1[]dnl
+test 0 = "$lt_write_fail" && chmod +x $1[]dnl
 m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
 
 # LT_OUTPUT
@@ -621,7 +631,7 @@
 } >&AS_MESSAGE_LOG_FD
 
 lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
+'$as_me' creates a local libtool stub from the current configuration,
 for use in further configure time tests before the real libtool is
 generated.
 
@@ -643,7 +653,7 @@
 This config.lt script is free software; the Free Software Foundation
 gives unlimited permision to copy, distribute and modify it."
 
-while test $[#] != 0
+while test 0 != $[#]
 do
   case $[1] in
     --version | --v* | -V )
@@ -656,10 +666,10 @@
       lt_cl_silent=: ;;
 
     -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try \`$[0] --help' for more information.]) ;;
+Try '$[0] --help' for more information.]) ;;
 
     *) AC_MSG_ERROR([unrecognized argument: $[1]
-Try \`$[0] --help' for more information.]) ;;
+Try '$[0] --help' for more information.]) ;;
   esac
   shift
 done
@@ -685,7 +695,7 @@
 # open by configure.  Here we exec the FD to /dev/null, effectively closing
 # config.log, so it can be properly (re)opened and appended to by config.lt.
 lt_cl_success=:
-test "$silent" = yes &&
+test yes = "$silent" &&
   lt_config_lt_args="$lt_config_lt_args --quiet"
 exec AS_MESSAGE_LOG_FD>/dev/null
 $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
@@ -705,27 +715,31 @@
 _LT_CONFIG_SAVE_COMMANDS([
   m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
   m4_if(_LT_TAG, [C], [
-    # See if we are running on zsh, and set the options which allow our
+    # See if we are running on zsh, and set the options that allow our
     # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
+    if test -n "${ZSH_VERSION+set}"; then
       setopt NO_GLOB_SUBST
     fi
 
-    cfgfile="${ofile}T"
+    cfgfile=${ofile}T
     trap "$RM \"$cfgfile\"; exit 1" 1 2 15
     $RM "$cfgfile"
 
     cat <<_LT_EOF >> "$cfgfile"
 #! $SHELL
-
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Generated automatically by $as_me ($PACKAGE) $VERSION
 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
+
+# Provide generalized library-building support services.
+# Written by Gordon Matzigkeit, 1996
+
 _LT_COPYING
 _LT_LIBTOOL_TAGS
 
+# Configured defaults for sys_lib_dlsearch_path munging.
+: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
+
 # ### BEGIN LIBTOOL CONFIG
 _LT_LIBTOOL_CONFIG_VARS
 _LT_LIBTOOL_TAG_VARS
@@ -733,13 +747,24 @@
 
 _LT_EOF
 
+    cat <<'_LT_EOF' >> "$cfgfile"
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_PREPARE_MUNGE_PATH_LIST
+_LT_PREPARE_CC_BASENAME
+
+# ### END FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_EOF
+
   case $host_os in
   aix3*)
     cat <<\_LT_EOF >> "$cfgfile"
 # AIX sometimes has problems with the GCC collect2 program.  For some
 # reason, if we set the COLLECT_NAMES environment variable, the problems
 # vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
+if test set != "${COLLECT_NAMES+set}"; then
   COLLECT_NAMES=
   export COLLECT_NAMES
 fi
@@ -756,8 +781,6 @@
   sed '$q' "$ltmain" >> "$cfgfile" \
      || (rm -f "$cfgfile"; exit 1)
 
-  _LT_PROG_REPLACE_SHELLFNS
-
    mv -f "$cfgfile" "$ofile" ||
     (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
   chmod +x "$ofile"
@@ -775,7 +798,6 @@
 [m4_if([$1], [], [
     PACKAGE='$PACKAGE'
     VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
     RM='$RM'
     ofile='$ofile'], [])
 ])dnl /_LT_CONFIG_SAVE_COMMANDS
@@ -974,7 +996,7 @@
 
     AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
       [lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
+      if test -z "$LT_MULTI_MODULE"; then
 	# By default we will add the -single_module flag. You can override
 	# by either setting the environment variable LT_MULTI_MODULE
 	# non-empty at configure time, or by adding -multi_module to the
@@ -992,7 +1014,7 @@
 	  cat conftest.err >&AS_MESSAGE_LOG_FD
 	# Otherwise, if the output was created with a 0 exit code from
 	# the compiler, it worked.
-	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+	elif test -f libconftest.dylib && test 0 = "$_lt_result"; then
 	  lt_cv_apple_cc_single_mod=yes
 	else
 	  cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1010,7 +1032,7 @@
       AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
 	[lt_cv_ld_exported_symbols_list=yes],
 	[lt_cv_ld_exported_symbols_list=no])
-	LDFLAGS="$save_LDFLAGS"
+	LDFLAGS=$save_LDFLAGS
     ])
 
     AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
@@ -1032,7 +1054,7 @@
       _lt_result=$?
       if test -s conftest.err && $GREP force_load conftest.err; then
 	cat conftest.err >&AS_MESSAGE_LOG_FD
-      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+      elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then
 	lt_cv_ld_force_load=yes
       else
 	cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1042,32 +1064,32 @@
     ])
     case $host_os in
     rhapsody* | darwin1.[[012]])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+      _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
     darwin1.*)
-      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+      _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
     darwin*) # darwin 5.x on
       # if running on 10.5 or later, the deployment target defaults
       # to the OS version, if on x86, and 10.4, the deployment
       # target defaults to 10.4. Don't you love it?
       case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
 	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-	10.[[012]]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
+	10.[[012]][[,.]]*)
+	  _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;;
 	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+	  _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;;
       esac
     ;;
   esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+    if test yes = "$lt_cv_apple_cc_single_mod"; then
       _lt_dar_single_mod='$single_module'
     fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    if test yes = "$lt_cv_ld_exported_symbols_list"; then
+      _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym'
     else
-      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib'
     fi
-    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+    if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then
       _lt_dsymutil='~$DSYMUTIL $lib || :'
     else
       _lt_dsymutil=
@@ -1087,29 +1109,29 @@
   _LT_TAGVAR(hardcode_direct, $1)=no
   _LT_TAGVAR(hardcode_automatic, $1)=yes
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  if test "$lt_cv_ld_force_load" = "yes"; then
-    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  if test yes = "$lt_cv_ld_force_load"; then
+    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
     m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
                   [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
   else
     _LT_TAGVAR(whole_archive_flag_spec, $1)=''
   fi
   _LT_TAGVAR(link_all_deplibs, $1)=yes
-  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+  _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined
   case $cc_basename in
-     ifort*) _lt_dar_can_shared=yes ;;
+     ifort*|nagfor*) _lt_dar_can_shared=yes ;;
      *) _lt_dar_can_shared=$GCC ;;
   esac
-  if test "$_lt_dar_can_shared" = "yes"; then
+  if test yes = "$_lt_dar_can_shared"; then
     output_verbose_link_cmd=func_echo_all
-    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil"
     m4_if([$1], [CXX],
-[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+[   if test yes != "$lt_cv_apple_cc_single_mod"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil"
     fi
 ],[])
   else
@@ -1129,7 +1151,7 @@
 # Allow to override them for all tags through lt_cv_aix_libpath.
 m4_defun([_LT_SYS_MODULE_PATH_AIX],
 [m4_require([_LT_DECL_SED])dnl
-if test "${lt_cv_aix_libpath+set}" = set; then
+if test set = "${lt_cv_aix_libpath+set}"; then
   aix_libpath=$lt_cv_aix_libpath
 else
   AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
@@ -1147,7 +1169,7 @@
     _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
   fi],[])
   if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
-    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib
   fi
   ])
   aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
@@ -1167,8 +1189,8 @@
 # -----------------------
 # Find how we can fake an echo command that does not interpret backslash.
 # In particular, with Autoconf 2.60 or later we add some code to the start
-# of the generated configure script which will find a shell with a builtin
-# printf (which we can use as an echo command).
+# of the generated configure script that will find a shell with a builtin
+# printf (that we can use as an echo command).
 m4_defun([_LT_PROG_ECHO_BACKSLASH],
 [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
 ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
@@ -1196,10 +1218,10 @@
 # Invoke $ECHO with all args, space-separated.
 func_echo_all ()
 {
-    $ECHO "$*" 
+    $ECHO "$*"
 }
 
-case "$ECHO" in
+case $ECHO in
   printf*) AC_MSG_RESULT([printf]) ;;
   print*) AC_MSG_RESULT([print -r]) ;;
   *) AC_MSG_RESULT([cat]) ;;
@@ -1225,16 +1247,17 @@
 AC_DEFUN([_LT_WITH_SYSROOT],
 [AC_MSG_CHECKING([for sysroot])
 AC_ARG_WITH([sysroot],
-[  --with-sysroot[=DIR] Search for dependent libraries within DIR
-                        (or the compiler's sysroot if not specified).],
+[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@],
+  [Search for dependent libraries within DIR (or the compiler's sysroot
+   if not specified).])],
 [], [with_sysroot=no])
 
 dnl lt_sysroot will always be passed unquoted.  We quote it here
 dnl in case the user passed a directory name.
 lt_sysroot=
-case ${with_sysroot} in #(
+case $with_sysroot in #(
  yes)
-   if test "$GCC" = yes; then
+   if test yes = "$GCC"; then
      lt_sysroot=`$CC --print-sysroot 2>/dev/null`
    fi
    ;; #(
@@ -1244,14 +1267,14 @@
  no|'')
    ;; #(
  *)
-   AC_MSG_RESULT([${with_sysroot}])
+   AC_MSG_RESULT([$with_sysroot])
    AC_MSG_ERROR([The sysroot must be an absolute path.])
    ;;
 esac
 
  AC_MSG_RESULT([${lt_sysroot:-no}])
 _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
-[dependent libraries, and in which our libraries should be installed.])])
+[dependent libraries, and where our libraries should be installed.])])
 
 # _LT_ENABLE_LOCK
 # ---------------
@@ -1259,31 +1282,33 @@
 [AC_ARG_ENABLE([libtool-lock],
   [AS_HELP_STRING([--disable-libtool-lock],
     [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+test no = "$enable_libtool_lock" || enable_libtool_lock=yes
 
 # Some flags need to be propagated to the compiler or linker for good
 # libtool support.
 case $host in
 ia64-*-hpux*)
-  # Find out which ABI we are using.
+  # Find out what ABI is being produced by ac_compile, and set mode
+  # options accordingly.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.$ac_objext` in
       *ELF-32*)
-	HPUX_IA64_MODE="32"
+	HPUX_IA64_MODE=32
 	;;
       *ELF-64*)
-	HPUX_IA64_MODE="64"
+	HPUX_IA64_MODE=64
 	;;
     esac
   fi
   rm -rf conftest*
   ;;
 *-*-irix6*)
-  # Find out which ABI we are using.
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
   echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
-    if test "$lt_cv_prog_gnu_ld" = yes; then
+    if test yes = "$lt_cv_prog_gnu_ld"; then
       case `/usr/bin/file conftest.$ac_objext` in
 	*32-bit*)
 	  LD="${LD-ld} -melf32bsmip"
@@ -1312,9 +1337,46 @@
   rm -rf conftest*
   ;;
 
+mips64*-*linux*)
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    emul=elf
+    case `/usr/bin/file conftest.$ac_objext` in
+      *32-bit*)
+	emul="${emul}32"
+	;;
+      *64-bit*)
+	emul="${emul}64"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *MSB*)
+	emul="${emul}btsmip"
+	;;
+      *LSB*)
+	emul="${emul}ltsmip"
+	;;
+    esac
+    case `/usr/bin/file conftest.$ac_objext` in
+      *N32*)
+	emul="${emul}n32"
+	;;
+    esac
+    LD="${LD-ld} -m $emul"
+  fi
+  rm -rf conftest*
+  ;;
+
 x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
-  # Find out which ABI we are using.
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.  Note that the listed cases only cover the
+  # situations where additional linker options are needed (such as when
+  # doing 32-bit compilation for a host where ld defaults to 64-bit, or
+  # vice versa); the common cases where no linker options are needed do
+  # not appear in the list.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
@@ -1333,10 +1395,10 @@
 		;;
 	    esac
 	    ;;
-	  powerpc64le-*)
+	  powerpc64le-*linux*)
 	    LD="${LD-ld} -m elf32lppclinux"
 	    ;;
-	  powerpc64-*)
+	  powerpc64-*linux*)
 	    LD="${LD-ld} -m elf32ppclinux"
 	    ;;
 	  s390x-*linux*)
@@ -1355,10 +1417,10 @@
 	  x86_64-*linux*)
 	    LD="${LD-ld} -m elf_x86_64"
 	    ;;
-	  powerpcle-*)
+	  powerpcle-*linux*)
 	    LD="${LD-ld} -m elf64lppc"
 	    ;;
-	  powerpc-*)
+	  powerpc-*linux*)
 	    LD="${LD-ld} -m elf64ppc"
 	    ;;
 	  s390*-*linux*|s390*-*tpf*)
@@ -1376,19 +1438,20 @@
 
 *-*-sco3.2v5*)
   # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
+  SAVE_CFLAGS=$CFLAGS
   CFLAGS="$CFLAGS -belf"
   AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
     [AC_LANG_PUSH(C)
      AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
      AC_LANG_POP])
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+  if test yes != "$lt_cv_cc_needs_belf"; then
     # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
+    CFLAGS=$SAVE_CFLAGS
   fi
   ;;
 *-*solaris*)
-  # Find out which ABI we are using.
+  # Find out what ABI is being produced by ac_compile, and set linker
+  # options accordingly.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
@@ -1396,7 +1459,7 @@
       case $lt_cv_prog_gnu_ld in
       yes*)
         case $host in
-        i?86-*-solaris*)
+        i?86-*-solaris*|x86_64-*-solaris*)
           LD="${LD-ld} -m elf_x86_64"
           ;;
         sparc*-*-solaris*)
@@ -1405,7 +1468,7 @@
         esac
         # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
         if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
-          LD="${LD-ld}_sol2"
+          LD=${LD-ld}_sol2
         fi
         ;;
       *)
@@ -1421,7 +1484,7 @@
   ;;
 esac
 
-need_locks="$enable_libtool_lock"
+need_locks=$enable_libtool_lock
 ])# _LT_ENABLE_LOCK
 
 
@@ -1440,11 +1503,11 @@
      [echo conftest.$ac_objext > conftest.lst
       lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
       AC_TRY_EVAL([lt_ar_try])
-      if test "$ac_status" -eq 0; then
+      if test 0 -eq "$ac_status"; then
 	# Ensure the archiver fails upon bogus file names.
 	rm -f conftest.$ac_objext libconftest.a
 	AC_TRY_EVAL([lt_ar_try])
-	if test "$ac_status" -ne 0; then
+	if test 0 -ne "$ac_status"; then
           lt_cv_ar_at_file=@
         fi
       fi
@@ -1452,7 +1515,7 @@
      ])
   ])
 
-if test "x$lt_cv_ar_at_file" = xno; then
+if test no = "$lt_cv_ar_at_file"; then
   archiver_list_spec=
 else
   archiver_list_spec=$lt_cv_ar_at_file
@@ -1483,7 +1546,7 @@
 
 if test -n "$RANLIB"; then
   case $host_os in
-  openbsd*)
+  bitrig* | openbsd*)
     old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
@@ -1519,7 +1582,7 @@
   [$2=no
    m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"
+   lt_compiler_flag="$3"  ## exclude from sc_useless_quotes_in_assignment
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
    # Note that $ac_compile itself does not contain backslashes and begins
@@ -1546,7 +1609,7 @@
    $RM conftest*
 ])
 
-if test x"[$]$2" = xyes; then
+if test yes = "[$]$2"; then
     m4_if([$5], , :, [$5])
 else
     m4_if([$6], , :, [$6])
@@ -1568,7 +1631,7 @@
 m4_require([_LT_DECL_SED])dnl
 AC_CACHE_CHECK([$1], [$2],
   [$2=no
-   save_LDFLAGS="$LDFLAGS"
+   save_LDFLAGS=$LDFLAGS
    LDFLAGS="$LDFLAGS $3"
    echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
@@ -1587,10 +1650,10 @@
      fi
    fi
    $RM -r conftest*
-   LDFLAGS="$save_LDFLAGS"
+   LDFLAGS=$save_LDFLAGS
 ])
 
-if test x"[$]$2" = xyes; then
+if test yes = "[$]$2"; then
     m4_if([$4], , :, [$4])
 else
     m4_if([$5], , :, [$5])
@@ -1611,7 +1674,7 @@
 AC_MSG_CHECKING([the maximum length of command line arguments])
 AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
   i=0
-  teststring="ABCD"
+  teststring=ABCD
 
   case $build_os in
   msdosdjgpp*)
@@ -1651,7 +1714,7 @@
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+  bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*)
     # This has been around since 386BSD, at least.  Likely further.
     if test -x /sbin/sysctl; then
       lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
@@ -1702,22 +1765,22 @@
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
     if test -n "$lt_cv_sys_max_cmd_len" && \
-	test undefined != "$lt_cv_sys_max_cmd_len"; then
+       test undefined != "$lt_cv_sys_max_cmd_len"; then
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     else
       # Make teststring a little bigger before we do anything with it.
       # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
+      for i in 1 2 3 4 5 6 7 8; do
         teststring=$teststring$teststring
       done
       SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+      while { test X`env echo "$teststring$teststring" 2>/dev/null` \
 	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-	      test $i != 17 # 1/2 MB should be enough
+	      test 17 != "$i" # 1/2 MB should be enough
       do
         i=`expr $i + 1`
         teststring=$teststring$teststring
@@ -1733,7 +1796,7 @@
     ;;
   esac
 ])
-if test -n $lt_cv_sys_max_cmd_len ; then
+if test -n "$lt_cv_sys_max_cmd_len"; then
   AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
 else
   AC_MSG_RESULT(none)
@@ -1761,7 +1824,7 @@
 # ----------------------------------------------------------------
 m4_defun([_LT_TRY_DLOPEN_SELF],
 [m4_require([_LT_HEADER_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
+if test yes = "$cross_compiling"; then :
   [$4]
 else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
@@ -1808,9 +1871,9 @@
 #  endif
 #endif
 
-/* When -fvisbility=hidden is used, assume the code has been annotated
+/* When -fvisibility=hidden is used, assume the code has been annotated
    correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
 int fnord () __attribute__((visibility("default")));
 #endif
 
@@ -1836,7 +1899,7 @@
   return status;
 }]
 _LT_EOF
-  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+  if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then
     (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -1857,7 +1920,7 @@
 # ------------------
 AC_DEFUN([LT_SYS_DLOPEN_SELF],
 [m4_require([_LT_HEADER_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
+if test yes != "$enable_dlopen"; then
   enable_dlopen=unknown
   enable_dlopen_self=unknown
   enable_dlopen_self_static=unknown
@@ -1867,44 +1930,52 @@
 
   case $host_os in
   beos*)
-    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen=load_add_on
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
     ;;
 
   mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen=LoadLibrary
     lt_cv_dlopen_libs=
     ;;
 
   cygwin*)
-    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen=dlopen
     lt_cv_dlopen_libs=
     ;;
 
   darwin*)
-  # if libdl is installed we need to link against it
+    # if libdl is installed we need to link against it
     AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-    lt_cv_dlopen="dyld"
+		[lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[
+    lt_cv_dlopen=dyld
     lt_cv_dlopen_libs=
     lt_cv_dlopen_self=yes
     ])
     ;;
 
+  tpf*)
+    # Don't try to run any link tests for TPF.  We know it's impossible
+    # because TPF is a cross-compiler, and we know how we open DSOs.
+    lt_cv_dlopen=dlopen
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=no
+    ;;
+
   *)
     AC_CHECK_FUNC([shl_load],
-	  [lt_cv_dlopen="shl_load"],
+	  [lt_cv_dlopen=shl_load],
       [AC_CHECK_LIB([dld], [shl_load],
-	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+	    [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld],
 	[AC_CHECK_FUNC([dlopen],
-	      [lt_cv_dlopen="dlopen"],
+	      [lt_cv_dlopen=dlopen],
 	  [AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+		[lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],
 	    [AC_CHECK_LIB([svld], [dlopen],
-		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+		  [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld],
 	      [AC_CHECK_LIB([dld], [dld_link],
-		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+		    [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld])
 	      ])
 	    ])
 	  ])
@@ -1913,21 +1984,21 @@
     ;;
   esac
 
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
+  if test no = "$lt_cv_dlopen"; then
     enable_dlopen=no
+  else
+    enable_dlopen=yes
   fi
 
   case $lt_cv_dlopen in
   dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+    save_CPPFLAGS=$CPPFLAGS
+    test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
 
-    save_LDFLAGS="$LDFLAGS"
+    save_LDFLAGS=$LDFLAGS
     wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
 
-    save_LIBS="$LIBS"
+    save_LIBS=$LIBS
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
     AC_CACHE_CHECK([whether a program can dlopen itself],
@@ -1937,7 +2008,7 @@
 	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
     ])
 
-    if test "x$lt_cv_dlopen_self" = xyes; then
+    if test yes = "$lt_cv_dlopen_self"; then
       wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
       AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
 	  lt_cv_dlopen_self_static, [dnl
@@ -1947,9 +2018,9 @@
       ])
     fi
 
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
+    CPPFLAGS=$save_CPPFLAGS
+    LDFLAGS=$save_LDFLAGS
+    LIBS=$save_LIBS
     ;;
   esac
 
@@ -2041,8 +2112,8 @@
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 _LT_COMPILER_C_O([$1])
 
-hard_links="nottested"
-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+hard_links=nottested
+if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then
   # do not overwrite the value of need_locks provided by the user
   AC_MSG_CHECKING([if we can lock with hard links])
   hard_links=yes
@@ -2052,8 +2123,8 @@
   ln conftest.a conftest.b 2>&5 || hard_links=no
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
   AC_MSG_RESULT([$hard_links])
-  if test "$hard_links" = no; then
-    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+  if test no = "$hard_links"; then
+    AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe])
     need_locks=warn
   fi
 else
@@ -2080,8 +2151,8 @@
 _LT_DECL([], [objdir], [0],
          [The name of the directory that contains temporary libtool files])dnl
 m4_pattern_allow([LT_OBJDIR])dnl
-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
-  [Define to the sub-directory in which libtool stores uninstalled libraries.])
+AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/",
+  [Define to the sub-directory where libtool stores uninstalled libraries.])
 ])# _LT_CHECK_OBJDIR
 
 
@@ -2093,15 +2164,15 @@
 _LT_TAGVAR(hardcode_action, $1)=
 if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
    test -n "$_LT_TAGVAR(runpath_var, $1)" ||
-   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+   test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then
 
   # We can hardcode non-existent directories.
-  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+  if test no != "$_LT_TAGVAR(hardcode_direct, $1)" &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
      # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+     ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" &&
+     test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then
     # Linking always hardcodes the temporary library directory.
     _LT_TAGVAR(hardcode_action, $1)=relink
   else
@@ -2115,12 +2186,12 @@
 fi
 AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
 
-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
-   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+if test relink = "$_LT_TAGVAR(hardcode_action, $1)" ||
+   test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then
   # Fast installation is not supported
   enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
+elif test yes = "$shlibpath_overrides_runpath" ||
+     test no = "$enable_shared"; then
   # Fast installation is not necessary
   enable_fast_install=needless
 fi
@@ -2144,7 +2215,7 @@
 # FIXME - insert some real tests, host_os isn't really good enough
   case $host_os in
   darwin*)
-    if test -n "$STRIP" ; then
+    if test -n "$STRIP"; then
       striplib="$STRIP -x"
       old_striplib="$STRIP -S"
       AC_MSG_RESULT([yes])
@@ -2162,6 +2233,47 @@
 ])# _LT_CMD_STRIPLIB
 
 
+# _LT_PREPARE_MUNGE_PATH_LIST
+# ---------------------------
+# Make sure func_munge_path_list() is defined correctly.
+m4_defun([_LT_PREPARE_MUNGE_PATH_LIST],
+[[# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x@S|@2 in
+    x)
+        ;;
+    *:)
+        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\"
+        ;;
+    x:*)
+        eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\"
+        ;;
+    *)
+        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+]])# _LT_PREPARE_PATH_LIST
+
+
 # _LT_SYS_DYNAMIC_LINKER([TAG])
 # -----------------------------
 # PORTME Fill in your ld.so characteristics
@@ -2172,17 +2284,18 @@
 m4_require([_LT_DECL_OBJDUMP])dnl
 m4_require([_LT_DECL_SED])dnl
 m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl
 AC_MSG_CHECKING([dynamic linker characteristics])
 m4_if([$1],
 	[], [
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
+    darwin*) lt_awk_arg='/^libraries:/,/LR/' ;;
+    *) lt_awk_arg='/^libraries:/' ;;
   esac
   case $host_os in
-    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
-    *) lt_sed_strip_eq="s,=/,/,g" ;;
+    mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;;
+    *) lt_sed_strip_eq='s|=/|/|g' ;;
   esac
   lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
   case $lt_search_path_spec in
@@ -2198,28 +2311,35 @@
     ;;
   esac
   # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
+  # and add multilib dir if necessary...
   lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  # ...but if some path component already ends with the multilib dir we assume
+  # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer).
+  case "$lt_multi_os_dir; $lt_search_path_spec " in
+  "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*)
+    lt_multi_os_dir=
+    ;;
+  esac
   for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
+    if test -d "$lt_sys_path$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir"
+    elif test -n "$lt_multi_os_dir"; then
       test -d "$lt_sys_path" && \
 	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
     fi
   done
   lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
+BEGIN {RS = " "; FS = "/|\n";} {
+  lt_foo = "";
+  lt_count = 0;
   for (lt_i = NF; lt_i > 0; lt_i--) {
     if ($lt_i != "" && $lt_i != ".") {
       if ($lt_i == "..") {
         lt_count++;
       } else {
         if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
+          lt_foo = "/" $lt_i lt_foo;
         } else {
           lt_count--;
         }
@@ -2233,7 +2353,7 @@
   # for these hosts.
   case $host_os in
     mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
-      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+      $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;;
   esac
   sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
 else
@@ -2242,7 +2362,7 @@
 library_names_spec=
 libname_spec='lib$name'
 soname_spec=
-shrext_cmds=".so"
+shrext_cmds=.so
 postinstall_cmds=
 postuninstall_cmds=
 finish_cmds=
@@ -2259,14 +2379,17 @@
 # flags to be left without arguments
 need_version=unknown
 
+AC_ARG_VAR([LT_SYS_LIBRARY_PATH],
+[User-defined run-time library search path.])
+
 case $host_os in
 aix3*)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
   # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
+  soname_spec='$libname$release$shared_ext$major'
   ;;
 
 aix[[4-9]]*)
@@ -2274,41 +2397,91 @@
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
+  if test ia64 = "$host_cpu"; then
     # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext'
     shlibpath_var=LD_LIBRARY_PATH
   else
     # With GCC up to 2.95.x, collect2 would create an import file
     # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
+    # the line '#! .'.  This would cause the generated library to
+    # depend on '.', always an invalid library.  This was fixed in
     # development snapshots of GCC prior to 3.0.
     case $host_os in
       aix4 | aix4.[[01]] | aix4.[[01]].*)
       if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
 	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	   echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then
 	:
       else
 	can_build_shared=no
       fi
       ;;
     esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # Using Import Files as archive members, it is possible to support
+    # filename-based versioning of shared library archives on AIX. While
+    # this would work for both with and without runtime linking, it will
+    # prevent static linking of such archives. So we do filename-based
+    # shared library versioning with .so extension only, which is used
+    # when both runtime linking and shared linking is enabled.
+    # Unfortunately, runtime linking may impact performance, so we do
+    # not want this to be the default eventually. Also, we use the
+    # versioned .so libs for executables only if there is the -brtl
+    # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only.
+    # To allow for filename-based versioning support, we need to create
+    # libNAME.so.V as an archive file, containing:
+    # *) an Import File, referring to the versioned filename of the
+    #    archive as well as the shared archive member, telling the
+    #    bitwidth (32 or 64) of that shared object, and providing the
+    #    list of exported symbols of that shared object, eventually
+    #    decorated with the 'weak' keyword
+    # *) the shared object with the F_LOADONLY flag set, to really avoid
+    #    it being seen by the linker.
+    # At run time we better use the real file rather than another symlink,
+    # but for link time we create the symlink libNAME.so -> libNAME.so.V
+
+    case $with_aix_soname,$aix_use_runtimelinking in
+    # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct
     # soname into executable. Probably we can add versioning support to
     # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
+    aix,yes) # traditional libtool
+      dynamic_linker='AIX unversionable lib.so'
       # If using run time linking (on AIX 4.2 or later) use lib<name>.so
       # instead of lib<name>.a to let people know that these are not
       # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      ;;
+    aix,no) # traditional AIX only
+      dynamic_linker='AIX lib.a[(]lib.so.V[)]'
       # We preserve .a as extension for shared libraries through AIX4.2
       # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      ;;
+    svr4,*) # full svr4 only
+      dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,yes) # both, prefer svr4
+      dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]"
+      library_names_spec='$libname$release$shared_ext$major $libname$shared_ext'
+      # unpreferred sharedlib libNAME.a needs extra handling
+      postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"'
+      postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"'
+      # We do not specify a path in Import Files, so LIBPATH fires.
+      shlibpath_overrides_runpath=yes
+      ;;
+    *,no) # both, prefer aix
+      dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]"
+      library_names_spec='$libname$release.a $libname.a'
+      soname_spec='$libname$release$shared_ext$major'
+      # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling
+      postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)'
+      postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"'
+      ;;
+    esac
     shlibpath_var=LIBPATH
   fi
   ;;
@@ -2318,18 +2491,18 @@
   powerpc)
     # Since July 2007 AmigaOS4 officially supports .so libraries.
     # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
     ;;
   m68k)
     library_names_spec='$libname.ixlibrary $libname.a'
     # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
     ;;
   esac
   ;;
 
 beos*)
-  library_names_spec='${libname}${shared_ext}'
+  library_names_spec='$libname$shared_ext'
   dynamic_linker="$host_os ld.so"
   shlibpath_var=LIBRARY_PATH
   ;;
@@ -2337,8 +2510,8 @@
 bsdi[[45]]*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
@@ -2350,7 +2523,7 @@
 
 cygwin* | mingw* | pw32* | cegcc*)
   version_type=windows
-  shrext_cmds=".dll"
+  shrext_cmds=.dll
   need_version=no
   need_lib_prefix=no
 
@@ -2359,8 +2532,8 @@
     # gcc
     library_names_spec='$libname.dll.a'
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
       $install_prog $dir/$dlname \$dldir/$dlname~
@@ -2376,17 +2549,17 @@
     case $host_os in
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
 m4_if([$1], [],[
       sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
       ;;
     mingw* | cegcc*)
       # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
       ;;
     pw32*)
       # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
       ;;
     esac
     dynamic_linker='Win32 ld.exe'
@@ -2395,8 +2568,8 @@
   *,cl*)
     # Native MSVC
     libname_spec='$name'
-    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-    library_names_spec='${libname}.dll.lib'
+    soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext'
+    library_names_spec='$libname.dll.lib'
 
     case $build_os in
     mingw*)
@@ -2423,7 +2596,7 @@
       sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
       ;;
     *)
-      sys_lib_search_path_spec="$LIB"
+      sys_lib_search_path_spec=$LIB
       if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
         # It is most probably a Windows format PATH.
         sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
@@ -2436,8 +2609,8 @@
     esac
 
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+    postinstall_cmds='base_file=`basename \$file`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
       $install_prog $dir/$dlname \$dldir/$dlname'
@@ -2450,7 +2623,7 @@
 
   *)
     # Assume MSVC wrapper
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib'
     dynamic_linker='Win32 ld.exe'
     ;;
   esac
@@ -2463,8 +2636,8 @@
   version_type=darwin
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
+  library_names_spec='$libname$release$major$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$major$shared_ext'
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
@@ -2477,8 +2650,8 @@
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -2496,12 +2669,13 @@
   version_type=freebsd-$objformat
   case $version_type in
     freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
       need_version=no
       need_lib_prefix=no
       ;;
     freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
       need_version=yes
       ;;
   esac
@@ -2531,10 +2705,10 @@
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
+  shlibpath_overrides_runpath=no
   sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
   hardcode_into_libs=yes
   ;;
@@ -2552,14 +2726,15 @@
     dynamic_linker="$host_os dld.so"
     shlibpath_var=LD_LIBRARY_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
+    if test 32 = "$HPUX_IA64_MODE"; then
       sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
     else
       sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
     fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
   hppa*64*)
     shrext_cmds='.sl'
@@ -2567,8 +2742,8 @@
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
@@ -2577,8 +2752,8 @@
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=SHLIB_PATH
     shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     ;;
   esac
   # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
@@ -2591,8 +2766,8 @@
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
@@ -2603,7 +2778,7 @@
   case $host_os in
     nonstopux*) version_type=nonstopux ;;
     *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
+	if test yes = "$lt_cv_prog_gnu_ld"; then
 		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
@@ -2611,8 +2786,8 @@
   esac
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext'
   case $host_os in
   irix5* | nonstopux*)
     libsuff= shlibsuff=
@@ -2631,8 +2806,8 @@
   esac
   shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
   shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff"
+  sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff"
   hardcode_into_libs=yes
   ;;
 
@@ -2641,13 +2816,33 @@
   dynamic_linker=no
   ;;
 
+linux*android*)
+  version_type=none # Android doesn't support versioned libraries.
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='$libname$release$shared_ext'
+  soname_spec='$libname$release$shared_ext'
+  finish_cmds=
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  dynamic_linker='Android linker'
+  # Don't embed -rpath directories since the linker doesn't support them.
+  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+  ;;
+
 # This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
@@ -2672,7 +2867,12 @@
   # before this can be enabled.
   hardcode_into_libs=yes
 
-  # Append ld.so.conf contents to the search path
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
   if test -f /etc/ld.so.conf; then
     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
@@ -2704,12 +2904,12 @@
   need_lib_prefix=no
   need_version=no
   if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
     finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
     dynamic_linker='NetBSD (a.out) ld.so'
   else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
+    library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+    soname_spec='$libname$release$shared_ext$major'
     dynamic_linker='NetBSD ld.elf_so'
   fi
   shlibpath_var=LD_LIBRARY_PATH
@@ -2719,7 +2919,7 @@
 
 newsos6)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   ;;
@@ -2728,58 +2928,68 @@
   version_type=qnx
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   dynamic_linker='ldqnx.so'
   ;;
 
-openbsd*)
+openbsd* | bitrig*)
   version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
+  sys_lib_dlsearch_path_spec=/usr/lib
   need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
-    *)				need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
+    need_version=no
+  else
+    need_version=yes
+  fi
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
   shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[[89]] | openbsd2.[[89]].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
+  shlibpath_overrides_runpath=yes
   ;;
 
 os2*)
   libname_spec='$name'
-  shrext_cmds=".dll"
+  version_type=windows
+  shrext_cmds=.dll
+  need_version=no
   need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
+  # OS/2 can only load a DLL with a base name of 8 characters or less.
+  soname_spec='`test -n "$os2dllname" && libname="$os2dllname";
+    v=$($ECHO $release$versuffix | tr -d .-);
+    n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _);
+    $ECHO $n$v`$shared_ext'
+  library_names_spec='${libname}_dll.$libext'
   dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
+  shlibpath_var=BEGINLIBPATH
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+  postinstall_cmds='base_file=`basename \$file`~
+    dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~
+    dldir=$destdir/`dirname \$dlpath`~
+    test -d \$dldir || mkdir -p \$dldir~
+    $install_prog $dir/$dlname \$dldir/$dlname~
+    chmod a+x \$dldir/$dlname~
+    if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+      eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+    fi'
+  postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~
+    dlpath=$dir/\$dldll~
+    $RM \$dlpath'
   ;;
 
 osf3* | osf4* | osf5*)
   version_type=osf
   need_lib_prefix=no
   need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='$libname$release$shared_ext$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
   ;;
 
 rdos*)
@@ -2790,8 +3000,8 @@
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
@@ -2801,11 +3011,11 @@
 
 sunos4*)
   version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix'
   finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     need_lib_prefix=no
   fi
   need_version=yes
@@ -2813,8 +3023,8 @@
 
 sysv4 | sysv4.3*)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   case $host_vendor in
     sni)
@@ -2835,24 +3045,24 @@
   ;;
 
 sysv4*MP*)
-  if test -d /usr/nec ;then
+  if test -d /usr/nec; then
     version_type=linux # correct to gnu/linux during the next big refactor
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
+    library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext'
+    soname_spec='$libname$shared_ext.$major'
     shlibpath_var=LD_LIBRARY_PATH
   fi
   ;;
 
 sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
+  version_type=sco
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
   else
     sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
@@ -2870,7 +3080,7 @@
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
@@ -2878,8 +3088,8 @@
 
 uts4*)
   version_type=linux # correct to gnu/linux during the next big refactor
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext'
+  soname_spec='$libname$release$shared_ext$major'
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
@@ -2888,20 +3098,30 @@
   ;;
 esac
 AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
+test no = "$dynamic_linker" && can_build_shared=no
 
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
 
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
+  sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
 fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
+if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
+  sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
 fi
 
+# remember unaugmented sys_lib_dlsearch_path content for libtool script decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
 _LT_DECL([], [variables_saved_for_relink], [1],
     [Variables whose values should be saved in libtool wrapper scripts and
     restored at link time])
@@ -2934,39 +3154,41 @@
     [Whether we should hardcode library paths into libraries])
 _LT_DECL([], [sys_lib_search_path_spec], [2],
     [Compile-time system search path for libraries])
-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
-    [Run-time system search path for libraries])
+_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2],
+    [Detected run-time system search path for libraries])
+_LT_DECL([], [configure_time_lt_sys_library_path], [2],
+    [Explicit LT_SYS_LIBRARY_PATH set during ./configure time])
 ])# _LT_SYS_DYNAMIC_LINKER
 
 
 # _LT_PATH_TOOL_PREFIX(TOOL)
 # --------------------------
-# find a file program which can recognize shared library
+# find a file program that can recognize shared library
 AC_DEFUN([_LT_PATH_TOOL_PREFIX],
 [m4_require([_LT_DECL_EGREP])dnl
 AC_MSG_CHECKING([for $1])
 AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
 [case $MAGIC_CMD in
 [[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
   ;;
 *)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  lt_save_MAGIC_CMD=$MAGIC_CMD
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
 dnl $ac_dummy forces splitting on constant user-supplied paths.
 dnl POSIX.2 word splitting is done only on the output of word expansions,
 dnl not every word.  This closes a longstanding sh security hole.
   ac_dummy="m4_if([$2], , $PATH, [$2])"
   for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
     test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$1; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+    if test -f "$ac_dir/$1"; then
+      lt_cv_path_MAGIC_CMD=$ac_dir/"$1"
       if test -n "$file_magic_test_file"; then
 	case $deplibs_check_method in
 	"file_magic "*)
 	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
 	    $EGREP "$file_magic_regex" > /dev/null; then
 	    :
@@ -2989,11 +3211,11 @@
       break
     fi
   done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  IFS=$lt_save_ifs
+  MAGIC_CMD=$lt_save_MAGIC_CMD
   ;;
 esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+MAGIC_CMD=$lt_cv_path_MAGIC_CMD
 if test -n "$MAGIC_CMD"; then
   AC_MSG_RESULT($MAGIC_CMD)
 else
@@ -3011,7 +3233,7 @@
 
 # _LT_PATH_MAGIC
 # --------------
-# find a file program which can recognize a shared library
+# find a file program that can recognize a shared library
 m4_defun([_LT_PATH_MAGIC],
 [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
 if test -z "$lt_cv_path_MAGIC_CMD"; then
@@ -3038,16 +3260,16 @@
 AC_ARG_WITH([gnu-ld],
     [AS_HELP_STRING([--with-gnu-ld],
 	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test "$withval" = no || with_gnu_ld=yes],
+    [test no = "$withval" || with_gnu_ld=yes],
     [with_gnu_ld=no])dnl
 
 ac_prog=ld
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   # Check if gcc -print-prog-name=ld gives a path.
   AC_MSG_CHECKING([for ld used by $CC])
   case $host in
   *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
+    # gcc leaves a trailing carriage return, which upsets mingw
     ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
   *)
     ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
@@ -3061,7 +3283,7 @@
       while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
 	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
       done
-      test -z "$LD" && LD="$ac_prog"
+      test -z "$LD" && LD=$ac_prog
       ;;
   "")
     # If it fails, then pretend we aren't using GCC.
@@ -3072,37 +3294,37 @@
     with_gnu_ld=unknown
     ;;
   esac
-elif test "$with_gnu_ld" = yes; then
+elif test yes = "$with_gnu_ld"; then
   AC_MSG_CHECKING([for GNU ld])
 else
   AC_MSG_CHECKING([for non-GNU ld])
 fi
 AC_CACHE_VAL(lt_cv_path_LD,
 [if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
   for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
     test -z "$ac_dir" && ac_dir=.
     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
+      lt_cv_path_LD=$ac_dir/$ac_prog
       # Check to see if the program is GNU ld.  I'd rather use --version,
       # but apparently some variants of GNU ld only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
       case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
       *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
+	test no != "$with_gnu_ld" && break
 	;;
       *)
-	test "$with_gnu_ld" != yes && break
+	test yes != "$with_gnu_ld" && break
 	;;
       esac
     fi
   done
-  IFS="$lt_save_ifs"
+  IFS=$lt_save_ifs
 else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+  lt_cv_path_LD=$LD # Let the user override the test with a path.
 fi])
-LD="$lt_cv_path_LD"
+LD=$lt_cv_path_LD
 if test -n "$LD"; then
   AC_MSG_RESULT($LD)
 else
@@ -3156,13 +3378,13 @@
 reload_cmds='$LD$reload_flag -o $output$reload_objs'
 case $host_os in
   cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
+    if test yes != "$GCC"; then
       reload_cmds=false
     fi
     ;;
   darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    if test yes = "$GCC"; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs'
     else
       reload_cmds='$LD$reload_flag -o $output$reload_objs'
     fi
@@ -3173,6 +3395,43 @@
 ])# _LT_CMD_RELOAD
 
 
+# _LT_PATH_DD
+# -----------
+# find a working dd
+m4_defun([_LT_PATH_DD],
+[AC_CACHE_CHECK([for a working dd], [ac_cv_path_lt_DD],
+[printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+: ${lt_DD:=$DD}
+AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd],
+[if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=:
+fi])
+rm -f conftest.i conftest2.i conftest.out])
+])# _LT_PATH_DD
+
+
+# _LT_CMD_TRUNCATE
+# ----------------
+# find command to truncate a binary pipe
+m4_defun([_LT_CMD_TRUNCATE],
+[m4_require([_LT_PATH_DD])
+AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin],
+[printf 0123456789abcdef0123456789abcdef >conftest.i
+cat conftest.i conftest.i >conftest2.i
+lt_cv_truncate_bin=
+if "$ac_cv_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
+  cmp -s conftest.i conftest.out \
+  && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1"
+fi
+rm -f conftest.i conftest2.i conftest.out
+test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"])
+_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1],
+  [Command to truncate a binary pipe])
+])# _LT_CMD_TRUNCATE
+
+
 # _LT_CHECK_MAGIC_METHOD
 # ----------------------
 # how to check for library dependencies
@@ -3188,13 +3447,13 @@
 # Need to set the preceding variable on all platforms that support
 # interlibrary dependencies.
 # 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
+# 'unknown' -- same as none, but documents that we really don't know.
 # 'pass_all' -- all dependencies passed with no checks.
 # 'test_compile' -- check by making test program.
 # 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
+# that responds to the $file_magic_cmd with a given extended regex.
+# If you have 'file' or equivalent on your system and you're not sure
+# whether 'pass_all' will *always* work, you probably want this one.
 
 case $host_os in
 aix[[4-9]]*)
@@ -3221,8 +3480,7 @@
   # Base MSYS/MinGW do not provide the 'file' command needed by
   # func_win32_libid shell function, so use a weaker test based on 'objdump',
   # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+  if ( file / ) >/dev/null 2>&1; then
     lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
     lt_cv_file_magic_cmd='func_win32_libid'
   else
@@ -3318,8 +3576,8 @@
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+openbsd* | bitrig*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
     lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
   else
     lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
@@ -3372,6 +3630,9 @@
 tpf*)
   lt_cv_deplibs_check_method=pass_all
   ;;
+os2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 esac
 ])
 
@@ -3412,33 +3673,38 @@
 AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
 [if test -n "$NM"; then
   # Let the user override the test.
-  lt_cv_path_NM="$NM"
+  lt_cv_path_NM=$NM
 else
-  lt_nm_to_check="${ac_tool_prefix}nm"
+  lt_nm_to_check=${ac_tool_prefix}nm
   if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
     lt_nm_to_check="$lt_nm_to_check nm"
   fi
   for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
     for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      tmp_nm=$ac_dir/$lt_tmp_nm
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then
 	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	# Adding the 'sed 1q' prevents false positives on HP-UX, which says:
 	#   nm: unknown option "B" ignored
 	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
+	# MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty
+	case $build_os in
+	mingw*) lt_bad_file=conftest.nm/nofile ;;
+	*) lt_bad_file=/dev/null ;;
+	esac
+	case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in
+	*$lt_bad_file* | *'Invalid file or object type'*)
 	  lt_cv_path_NM="$tmp_nm -B"
-	  break
+	  break 2
 	  ;;
 	*)
 	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
 	  */dev/null*)
 	    lt_cv_path_NM="$tmp_nm -p"
-	    break
+	    break 2
 	    ;;
 	  *)
 	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
@@ -3449,21 +3715,21 @@
 	esac
       fi
     done
-    IFS="$lt_save_ifs"
+    IFS=$lt_save_ifs
   done
   : ${lt_cv_path_NM=no}
 fi])
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
+if test no != "$lt_cv_path_NM"; then
+  NM=$lt_cv_path_NM
 else
   # Didn't find any BSD compatible name lister, look for dumpbin.
   if test -n "$DUMPBIN"; then :
     # Let the user override the test.
   else
     AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in
     *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
+      DUMPBIN="$DUMPBIN -symbols -headers"
       ;;
     *)
       DUMPBIN=:
@@ -3471,8 +3737,8 @@
     esac
   fi
   AC_SUBST([DUMPBIN])
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
+  if test : != "$DUMPBIN"; then
+    NM=$DUMPBIN
   fi
 fi
 test -z "$NM" && NM=nm
@@ -3518,8 +3784,8 @@
 
 case $host_os in
 cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
+  # two different shell functions defined in ltmain.sh;
+  # decide which one to use based on capabilities of $DLLTOOL
   case `$DLLTOOL --help 2>&1` in
   *--identify-strict*)
     lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
@@ -3531,7 +3797,7 @@
   ;;
 *)
   # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  lt_cv_sharedlib_from_linklib_cmd=$ECHO
   ;;
 esac
 ])
@@ -3558,13 +3824,28 @@
     lt_cv_path_mainfest_tool=yes
   fi
   rm -f conftest*])
-if test "x$lt_cv_path_mainfest_tool" != xyes; then
+if test yes != "$lt_cv_path_mainfest_tool"; then
   MANIFEST_TOOL=:
 fi
 _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
 ])# _LT_PATH_MANIFEST_TOOL
 
 
+# _LT_DLL_DEF_P([FILE])
+# ---------------------
+# True iff FILE is a Windows DLL '.def' file.
+# Keep in sync with func_dll_def_p in the libtool script
+AC_DEFUN([_LT_DLL_DEF_P],
+[dnl
+  test DEF = "`$SED -n dnl
+    -e '\''s/^[[	 ]]*//'\'' dnl Strip leading whitespace
+    -e '\''/^\(;.*\)*$/d'\'' dnl      Delete empty lines and comments
+    -e '\''s/^\(EXPORTS\|LIBRARY\)\([[	 ]].*\)*$/DEF/p'\'' dnl
+    -e q dnl                          Only consider the first "real" line
+    $1`" dnl
+])# _LT_DLL_DEF_P
+
+
 # LT_LIB_M
 # --------
 # check for math library
@@ -3576,11 +3857,11 @@
   # These system don't have libm, or don't need it
   ;;
 *-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw)
   AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
   ;;
 *)
-  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  AC_CHECK_LIB(m, cos, LIBM=-lm)
   ;;
 esac
 AC_SUBST([LIBM])
@@ -3599,7 +3880,7 @@
 
 _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
 
-if test "$GCC" = yes; then
+if test yes = "$GCC"; then
   case $cc_basename in
   nvcc*)
     _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
@@ -3651,7 +3932,7 @@
   symcode='[[ABCDGISTW]]'
   ;;
 hpux*)
-  if test "$host_cpu" = ia64; then
+  if test ia64 = "$host_cpu"; then
     symcode='[[ABCDEGRST]]'
   fi
   ;;
@@ -3684,14 +3965,44 @@
   symcode='[[ABCDGIRSTW]]' ;;
 esac
 
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  # Gets list of data symbols to import.
+  lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'"
+  # Adjust the below global symbol transforms to fixup imported variables.
+  lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'"
+  lt_c_name_hook=" -e 's/^I .* \(.*\)$/  {\"\1\", (void *) 0},/p'"
+  lt_c_name_lib_hook="\
+  -e 's/^I .* \(lib.*\)$/  {\"\1\", (void *) 0},/p'\
+  -e 's/^I .* \(.*\)$/  {\"lib\1\", (void *) 0},/p'"
+else
+  # Disable hooks by default.
+  lt_cv_sys_global_symbol_to_import=
+  lt_cdecl_hook=
+  lt_c_name_hook=
+  lt_c_name_lib_hook=
+fi
+
 # Transform an extracted symbol line into a proper C declaration.
 # Some systems (esp. on ia64) link data and code symbols differently,
 # so use this general approach.
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+lt_cv_sys_global_symbol_to_cdecl="sed -n"\
+$lt_cdecl_hook\
+" -e 's/^T .* \(.*\)$/extern int \1();/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'"
 
 # Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address="sed -n"\
+$lt_c_name_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/p'"
+
+# Transform an extracted symbol line into symbol name with lib prefix and
+# symbol address.
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\
+$lt_c_name_lib_hook\
+" -e 's/^: \(.*\) .*$/  {\"\1\", (void *) 0},/p'"\
+" -e 's/^$symcode$symcode* .* \(lib.*\)$/  {\"\1\", (void *) \&\1},/p'"\
+" -e 's/^$symcode$symcode* .* \(.*\)$/  {\"lib\1\", (void *) \&\1},/p'"
 
 # Handle CRLF in mingw tool chain
 opt_cr=
@@ -3709,21 +4020,24 @@
 
   # Write the raw and C identifiers.
   if test "$lt_cv_nm_interface" = "MS dumpbin"; then
-    # Fake it for dumpbin and say T for any non-static function
-    # and D for any global variable.
+    # Fake it for dumpbin and say T for any non-static function,
+    # D for any global variable and I for any imported variable.
     # Also find C++ and __fastcall symbols from MSVC++,
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK ['"\
 "     {last_section=section; section=\$ 3};"\
 "     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\
+"     /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\
+"     /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
 "     {if(hide[section]) next};"\
-"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
-"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
-"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
-"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\
+"     {split(\$ 0,a,/\||\r/); split(a[2],s)};"\
+"     s[1]~/^[@?]/{print f,s[1],s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\
 "     ' prfx=^$ac_symprfx]"
   else
     lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
@@ -3763,11 +4077,11 @@
 	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
 	  cat <<_LT_EOF > conftest.$ac_ext
 /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
-/* DATA imports from DLLs on WIN32 con't be const, because runtime
+#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE
+/* DATA imports from DLLs on WIN32 can't be const, because runtime
    relocations are performed -- see ld's documentation on pseudo-relocs.  */
 # define LT@&t@_DLSYM_CONST
-#elif defined(__osf__)
+#elif defined __osf__
 /* This system does not cope well with relocations in const data.  */
 # define LT@&t@_DLSYM_CONST
 #else
@@ -3793,7 +4107,7 @@
 {
   { "@PROGRAM@", (void *) 0 },
 _LT_EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  $SED "s/^$symcode$symcode* .* \(.*\)$/  {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
 	  cat <<\_LT_EOF >> conftest.$ac_ext
   {0, (void *) 0}
 };
@@ -3813,9 +4127,9 @@
 	  mv conftest.$ac_objext conftstm.$ac_objext
 	  lt_globsym_save_LIBS=$LIBS
 	  lt_globsym_save_CFLAGS=$CFLAGS
-	  LIBS="conftstm.$ac_objext"
+	  LIBS=conftstm.$ac_objext
 	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+	  if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then
 	    pipe_works=yes
 	  fi
 	  LIBS=$lt_globsym_save_LIBS
@@ -3836,7 +4150,7 @@
   rm -rf conftest* conftst*
 
   # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
+  if test yes = "$pipe_works"; then
     break
   else
     lt_cv_sys_global_symbol_pipe=
@@ -3863,12 +4177,16 @@
     [Take the output of nm and produce a listing of raw symbols and C names])
 _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
     [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1],
+    [Transform the output of nm into a list of symbols to manually relocate])
 _LT_DECL([global_symbol_to_c_name_address],
     [lt_cv_sys_global_symbol_to_c_name_address], [1],
     [Transform the output of nm in a C name address pair])
 _LT_DECL([global_symbol_to_c_name_address_lib_prefix],
     [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
     [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([nm_interface], [lt_cv_nm_interface], [1],
+    [The name lister interface])
 _LT_DECL([], [nm_file_list_spec], [1],
     [Specify filename containing input files for $NM])
 ]) # _LT_CMD_GLOBAL_SYMBOLS
@@ -3884,17 +4202,18 @@
 
 m4_if([$1], [CXX], [
   # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
+  if test yes = "$GXX"; then
     _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
     _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
 
     case $host_os in
     aix*)
       # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       fi
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       ;;
 
     amigaos*)
@@ -3905,8 +4224,8 @@
         ;;
       m68k)
             # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
             _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
         ;;
       esac
@@ -3922,6 +4241,11 @@
       # (--disable-auto-import) libraries
       m4_if([$1], [GCJ], [],
 	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      case $host_os in
+      os2*)
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+	;;
+      esac
       ;;
     darwin* | rhapsody*)
       # PIC is the default on this platform
@@ -3971,7 +4295,7 @@
     case $host_os in
       aix[[4-9]]*)
 	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
+	if test ia64 = "$host_cpu"; then
 	  # AIX 5 now supports IA64 processor
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	else
@@ -4012,14 +4336,14 @@
 	case $cc_basename in
 	  CC*)
 	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
+	    if test ia64 != "$host_cpu"; then
 	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
 	    fi
 	    ;;
 	  aCC*)
 	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
 	    case $host_cpu in
 	    hppa*64*|ia64*)
 	      # +Z the default
@@ -4056,7 +4380,7 @@
 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
 	    ;;
 	  ecpc* )
-	    # old Intel C++ for x86_64 which still supported -KPIC.
+	    # old Intel C++ for x86_64, which still supported -KPIC.
 	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
@@ -4201,17 +4525,18 @@
   fi
 ],
 [
-  if test "$GCC" = yes; then
+  if test yes = "$GCC"; then
     _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
     _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
 
     case $host_os in
       aix*)
       # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       fi
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       ;;
 
     amigaos*)
@@ -4222,8 +4547,8 @@
         ;;
       m68k)
             # FIXME: we need at least 68020 code to build shared libraries, but
-            # adding the `-m68020' flag to GCC prevents building anything better,
-            # like `-m68040'.
+            # adding the '-m68020' flag to GCC prevents building anything better,
+            # like '-m68040'.
             _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
         ;;
       esac
@@ -4240,6 +4565,11 @@
       # (--disable-auto-import) libraries
       m4_if([$1], [GCJ], [],
 	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      case $host_os in
+      os2*)
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+	;;
+      esac
       ;;
 
     darwin* | rhapsody*)
@@ -4310,7 +4640,7 @@
     case $host_os in
     aix*)
       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# AIX 5 now supports IA64 processor
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       else
@@ -4318,11 +4648,30 @@
       fi
       ;;
 
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      case $cc_basename in
+      nagfor*)
+        # NAG Fortran compiler
+        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+        _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      esac
+      ;;
+
     mingw* | cygwin* | pw32* | os2* | cegcc*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
       m4_if([$1], [GCJ], [],
 	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      case $host_os in
+      os2*)
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static'
+	;;
+      esac
       ;;
 
     hpux9* | hpux10* | hpux11*)
@@ -4338,7 +4687,7 @@
 	;;
       esac
       # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive'
       ;;
 
     irix5* | irix6* | nonstopux*)
@@ -4349,7 +4698,7 @@
 
     linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
-      # old Intel for x86_64 which still supported -KPIC.
+      # old Intel for x86_64, which still supported -KPIC.
       ecc*)
 	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
@@ -4374,6 +4723,12 @@
 	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	;;
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	;;
       pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
         # Portland Group compilers (*not* the Pentium gcc compiler,
 	# which looks to be a dead project)
@@ -4471,7 +4826,7 @@
       ;;
 
     sysv4*MP*)
-      if test -d /usr/nec ;then
+      if test -d /usr/nec; then
 	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
 	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       fi
@@ -4500,7 +4855,7 @@
   fi
 ])
 case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
+  # For platforms that do not support PIC, -DPIC is meaningless:
   *djgpp*)
     _LT_TAGVAR(lt_prog_compiler_pic, $1)=
     ;;
@@ -4566,17 +4921,21 @@
   case $host_os in
   aix[[4-9]]*)
     # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    # Also, AIX nm treats weak defined symbols like other global defined
-    # symbols, whereas GNU nm marks them as "W".
+    # -C means demangle to GNU nm, but means don't demangle to AIX nm.
+    # Without the "-l" option, or with the "-B" option, AIX nm treats
+    # weak defined symbols like other global defined symbols, whereas
+    # GNU nm marks them as "W".
+    # While the 'weak' keyword is ignored in the Export File, we need
+    # it in the Import File for the 'aix-soname' feature, so we have
+    # to replace the "-B" option with "-P" for AIX nm.
     if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
     else
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+      _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
     fi
     ;;
   pw32*)
-    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+    _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds
     ;;
   cygwin* | mingw* | cegcc*)
     case $cc_basename in
@@ -4625,9 +4984,9 @@
   # included in the symbol list
   _LT_TAGVAR(include_expsyms, $1)=
   # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
+  # it will be wrapped by ' (' and ')$', so one must not match beginning or
+  # end of line.  Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc',
+  # as well as any symbol that contains 'd'.
   _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
   # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
   # platforms (ab)use it in PIC code, but their linkers get confused if
@@ -4643,7 +5002,7 @@
     # FIXME: the MSVC++ port hasn't been tested in a loooong time
     # When not using gcc, we currently assume that we are using
     # Microsoft Visual C++.
-    if test "$GCC" != yes; then
+    if test yes != "$GCC"; then
       with_gnu_ld=no
     fi
     ;;
@@ -4651,7 +5010,7 @@
     # we just hope/assume this is gcc and not c89 (= MSVC++)
     with_gnu_ld=yes
     ;;
-  openbsd*)
+  openbsd* | bitrig*)
     with_gnu_ld=no
     ;;
   linux* | k*bsd*-gnu | gnu*)
@@ -4664,7 +5023,7 @@
   # On some targets, GNU ld is compatible enough with the native linker
   # that we're better off using the native interface for both.
   lt_use_gnu_ld_interface=no
-  if test "$with_gnu_ld" = yes; then
+  if test yes = "$with_gnu_ld"; then
     case $host_os in
       aix*)
 	# The AIX port of GNU ld has always aspired to compatibility
@@ -4686,24 +5045,24 @@
     esac
   fi
 
-  if test "$lt_use_gnu_ld_interface" = yes; then
+  if test yes = "$lt_use_gnu_ld_interface"; then
     # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
+    wlarc='$wl'
 
     # Set some defaults for GNU ld with shared library support. These
     # are reset later if shared libraries are not supported. Putting them
     # here allows them to be overridden if necessary.
     runpath_var=LD_RUN_PATH
-    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
     # ancient GNU ld didn't support --whole-archive et. al.
     if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
     else
       _LT_TAGVAR(whole_archive_flag_spec, $1)=
     fi
     supports_anon_versioning=no
-    case `$LD -v 2>&1` in
+    case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in
       *GNU\ gold*) supports_anon_versioning=yes ;;
       *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
@@ -4716,7 +5075,7 @@
     case $host_os in
     aix[[3-9]]*)
       # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
+      if test ia64 != "$host_cpu"; then
 	_LT_TAGVAR(ld_shlibs, $1)=no
 	cat <<_LT_EOF 1>&2
 
@@ -4735,7 +5094,7 @@
       case $host_cpu in
       powerpc)
             # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
             _LT_TAGVAR(archive_expsym_cmds, $1)=''
         ;;
       m68k)
@@ -4751,7 +5110,7 @@
 	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
 	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
 	# support --undefined.  This deserves some investigation.  FIXME
-	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
       else
 	_LT_TAGVAR(ld_shlibs, $1)=no
       fi
@@ -4761,7 +5120,7 @@
       # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
       # as there is no search path for DLLs.
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       _LT_TAGVAR(always_export_symbols, $1)=no
       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
@@ -4769,61 +5128,89 @@
       _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
 
       if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file, use it as
+	# is; otherwise, prepend EXPORTS...
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+          cp $export_symbols $output_objdir/$soname.def;
+        else
+          echo EXPORTS > $output_objdir/$soname.def;
+          cat $export_symbols >> $output_objdir/$soname.def;
+        fi~
+        $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       else
 	_LT_TAGVAR(ld_shlibs, $1)=no
       fi
       ;;
 
     haiku*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
       _LT_TAGVAR(link_all_deplibs, $1)=yes
       ;;
 
+    os2*)
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      shrext_cmds=.dll
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
     interix[[3-9]]*)
       _LT_TAGVAR(hardcode_direct, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
       # Instead, shared libraries are loaded at an image base (0x10000000 by
       # default) and relocated if they conflict, which is a slow very memory
       # consuming and fragmenting process.  To avoid this, we pick a random,
       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
     gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
       tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
+      if test linux-dietlibc = "$host_os"; then
 	case $cc_basename in
 	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
 	esac
       fi
       if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-	 && test "$tmp_diet" = no
+	 && test no = "$tmp_diet"
       then
 	tmp_addflag=' $pic_flag'
 	tmp_sharedflag='-shared'
 	case $cc_basename,$host_cpu in
         pgcc*)				# Portland Group C compiler
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  tmp_addflag=' $pic_flag'
 	  ;;
 	pgf77* | pgf90* | pgf95* | pgfortran*)
 					# Portland Group f77 and f90 compilers
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  tmp_addflag=' $pic_flag -Mnomain' ;;
 	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
 	  tmp_addflag=' -i_dynamic' ;;
@@ -4834,42 +5221,47 @@
 	lf95*)				# Lahey Fortran 8.1
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
 	  tmp_sharedflag='--shared' ;;
+        nagfor*)                        # NAGFOR 5.3
+          tmp_sharedflag='-Wl,-shared' ;;
 	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
 	  tmp_sharedflag='-qmkshrobj'
 	  tmp_addflag= ;;
 	nvcc*)	# Cuda Compiler Driver 2.2
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  _LT_TAGVAR(compiler_needs_object, $1)=yes
 	  ;;
 	esac
 	case `$CC -V 2>&1 | sed 5q` in
 	*Sun\ C*)			# Sun C 5.9
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	  _LT_TAGVAR(compiler_needs_object, $1)=yes
 	  tmp_sharedflag='-G' ;;
 	*Sun\ F*)			# Sun Fortran 8.3
 	  tmp_sharedflag='-G' ;;
 	esac
-	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
 
-        if test "x$supports_anon_versioning" = xyes; then
+        if test yes = "$supports_anon_versioning"; then
           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	    echo "local: *; };" >> $output_objdir/$libname.ver~
-	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+            cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+            echo "local: *; };" >> $output_objdir/$libname.ver~
+            $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
         fi
 
 	case $cc_basename in
+	tcc*)
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic'
+	  ;;
 	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
 	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
-	  if test "x$supports_anon_versioning" = xyes; then
+	  if test yes = "$supports_anon_versioning"; then
 	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-	      echo "local: *; };" >> $output_objdir/$libname.ver~
-	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+              cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+              echo "local: *; };" >> $output_objdir/$libname.ver~
+              $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
 	  fi
 	  ;;
 	esac
@@ -4883,8 +5275,8 @@
 	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
       else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       fi
       ;;
 
@@ -4902,8 +5294,8 @@
 
 _LT_EOF
       elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	_LT_TAGVAR(ld_shlibs, $1)=no
       fi
@@ -4915,7 +5307,7 @@
 	_LT_TAGVAR(ld_shlibs, $1)=no
 	cat <<_LT_EOF 1>&2
 
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot
 *** reliably create shared libraries on SCO systems.  Therefore, libtool
 *** is disabling shared libraries support.  We urge you to upgrade GNU
 *** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
@@ -4930,9 +5322,9 @@
 	  # DT_RUNPATH tag from executables and libraries.  But doing so
 	  # requires that you compile everything twice, which is a pain.
 	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 	  else
 	    _LT_TAGVAR(ld_shlibs, $1)=no
 	  fi
@@ -4949,15 +5341,15 @@
 
     *)
       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	_LT_TAGVAR(ld_shlibs, $1)=no
       fi
       ;;
     esac
 
-    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+    if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then
       runpath_var=
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
       _LT_TAGVAR(export_dynamic_flag_spec, $1)=
@@ -4973,7 +5365,7 @@
       # Note: this linker hardcodes the directories in LIBPATH if there
       # are no directories specified by -L.
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+      if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then
 	# Neither direct hardcoding nor static linking is supported with a
 	# broken collect2.
 	_LT_TAGVAR(hardcode_direct, $1)=unsupported
@@ -4981,34 +5373,57 @@
       ;;
 
     aix[[4-9]]*)
-      if test "$host_cpu" = ia64; then
+      if test ia64 = "$host_cpu"; then
 	# On IA64, the linker does run time linking by default, so we don't
 	# have to do anything special.
 	aix_use_runtimelinking=no
 	exp_sym_flag='-Bexport'
-	no_entry_flag=""
+	no_entry_flag=
       else
 	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	# Also, AIX nm treats weak defined symbols like other global
-	# defined symbols, whereas GNU nm marks them as "W".
+	# -C means demangle to GNU nm, but means don't demangle to AIX nm.
+	# Without the "-l" option, or with the "-B" option, AIX nm treats
+	# weak defined symbols like other global defined symbols, whereas
+	# GNU nm marks them as "W".
+	# While the 'weak' keyword is ignored in the Export File, we need
+	# it in the Import File for the 'aix-soname' feature, so we have
+	# to replace the "-B" option with "-P" for AIX nm.
 	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols'
 	else
-	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	  _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols'
 	fi
 	aix_use_runtimelinking=no
 
 	# Test if we are trying to use run time linking or normal
 	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
+	# have runtime linking enabled, and use it for executables.
+	# For shared libraries, we enable/disable runtime linking
+	# depending on the kind of the shared library created -
+	# when "with_aix_soname,aix_use_runtimelinking" is:
+	# "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "aix,yes"  lib.so          shared, rtl:yes, for executables
+	#            lib.a           static archive
+	# "both,no"  lib.so.V(shr.o) shared, rtl:yes
+	#            lib.a(lib.so.V) shared, rtl:no,  for executables
+	# "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a(lib.so.V) shared, rtl:no
+	# "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+	#            lib.a           static archive
 	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
 	  for ld_flag in $LDFLAGS; do
-	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	  if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then
 	    aix_use_runtimelinking=yes
 	    break
 	  fi
 	  done
+	  if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	    # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	    # so we don't have lib.a shared libs to link our executables.
+	    # We have to force runtime linking in this case.
+	    aix_use_runtimelinking=yes
+	    LDFLAGS="$LDFLAGS -Wl,-brtl"
+	  fi
 	  ;;
 	esac
 
@@ -5027,13 +5442,21 @@
       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
       _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
       _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+      _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
+      case $with_aix_soname,$aix_use_runtimelinking in
+      aix,*) ;; # traditional, no import file
+      svr4,* | *,yes) # use import file
+	# The Import File defines what to hardcode.
+	_LT_TAGVAR(hardcode_direct, $1)=no
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+	;;
+      esac
 
-      if test "$GCC" = yes; then
+      if test yes = "$GCC"; then
 	case $host_os in aix4.[[012]]|aix4.[[012]].*)
 	# We only want to do this on AIX 4.2 and lower, the check
 	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
+	  collect2name=`$CC -print-prog-name=collect2`
 	  if test -f "$collect2name" &&
 	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
 	  then
@@ -5052,62 +5475,80 @@
 	  ;;
 	esac
 	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
+	if test yes = "$aix_use_runtimelinking"; then
+	  shared_flag="$shared_flag "'$wl-G'
 	fi
-	_LT_TAGVAR(link_all_deplibs, $1)=no
+	# Need to ensure runtime linking is disabled for the traditional
+	# shared library, or the linker may eventually find shared libraries
+	# /with/ Import File - we do not want to mix them.
+	shared_flag_aix='-shared'
+	shared_flag_svr4='-shared $wl-G'
       else
 	# not using gcc
-	if test "$host_cpu" = ia64; then
+	if test ia64 = "$host_cpu"; then
 	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
 	# chokes on -Wl,-G. The following line is correct:
 	  shared_flag='-G'
 	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag='$wl-G'
 	  else
-	    shared_flag='${wl}-bM:SRE'
+	    shared_flag='$wl-bM:SRE'
 	  fi
+	  shared_flag_aix='$wl-bM:SRE'
+	  shared_flag_svr4='$wl-G'
 	fi
       fi
 
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
       # It seems that -bexpall does not export symbols beginning with
       # underscore (_), so it is better to generate a list of symbols to export.
       _LT_TAGVAR(always_export_symbols, $1)=yes
-      if test "$aix_use_runtimelinking" = yes; then
+      if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
 	# Warning - without using the other runtime loading flags (-brtl),
 	# -berok will link without error, but may produce a broken library.
 	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
         # Determine the default libpath from the value encoded in an
         # empty executable.
         _LT_SYS_MODULE_PATH_AIX([$1])
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
       else
-	if test "$host_cpu" = ia64; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	if test ia64 = "$host_cpu"; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
 	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
 	else
 	 # Determine the default libpath from the value encoded in an
 	 # empty executable.
 	 _LT_SYS_MODULE_PATH_AIX([$1])
-	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
 	  # Warning - without using the other run time loading flags,
 	  # -berok will link without error, but may produce a broken library.
-	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	  if test "$with_gnu_ld" = yes; then
+	  _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+	  if test yes = "$with_gnu_ld"; then
 	    # We only use this code for GNU lds that support --whole-archive.
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
 	  else
 	    # Exported symbols can be pulled into shared objects from archives
 	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
 	  fi
 	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	  # -brtl affects multiple linker settings, -berok does not and is overridden later
+	  compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
+	  if test svr4 != "$with_aix_soname"; then
+	    # This is similar to how AIX traditionally builds its shared libraries.
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	  fi
+	  if test aix != "$with_aix_soname"; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
+	  else
+	    # used by -dlpreopen to get the symbols
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	  fi
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
 	fi
       fi
       ;;
@@ -5116,7 +5557,7 @@
       case $host_cpu in
       powerpc)
             # see comment about AmigaOS4 .so support
-            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
             _LT_TAGVAR(archive_expsym_cmds, $1)=''
         ;;
       m68k)
@@ -5146,16 +5587,17 @@
 	# Tell ltmain to make .lib files, not .a files.
 	libext=lib
 	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
+	shrext_cmds=.dll
 	# FIXME: Setting linknames here is a bad hack.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	  else
-	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	  fi~
-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	  linknames='
+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+            cp "$export_symbols" "$output_objdir/$soname.def";
+            echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+          else
+            $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+          fi~
+          $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+          linknames='
 	# The linker will not automatically build a static lib if we build a DLL.
 	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
 	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
@@ -5164,18 +5606,18 @@
 	# Don't use ranlib
 	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
 	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-	  lt_tool_outputfile="@TOOL_OUTPUT@"~
-	  case $lt_outputfile in
-	    *.exe|*.EXE) ;;
-	    *)
-	      lt_outputfile="$lt_outputfile.exe"
-	      lt_tool_outputfile="$lt_tool_outputfile.exe"
-	      ;;
-	  esac~
-	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	    $RM "$lt_outputfile.manifest";
-	  fi'
+          lt_tool_outputfile="@TOOL_OUTPUT@"~
+          case $lt_outputfile in
+            *.exe|*.EXE) ;;
+            *)
+              lt_outputfile=$lt_outputfile.exe
+              lt_tool_outputfile=$lt_tool_outputfile.exe
+              ;;
+          esac~
+          if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+            $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+            $RM "$lt_outputfile.manifest";
+          fi'
 	;;
       *)
 	# Assume MSVC wrapper
@@ -5184,7 +5626,7 @@
 	# Tell ltmain to make .lib files, not .a files.
 	libext=lib
 	# Tell ltmain to make .dll files, not .so files.
-	shrext_cmds=".dll"
+	shrext_cmds=.dll
 	# FIXME: Setting linknames here is a bad hack.
 	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
 	# The linker will automatically build a .lib file if we build a DLL.
@@ -5234,33 +5676,33 @@
       ;;
 
     hpux9*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
       else
-	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
       fi
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       _LT_TAGVAR(hardcode_direct, $1)=yes
 
       # hardcode_minus_L: Not really in the search PATH,
       # but as the default location of the library.
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
       ;;
 
     hpux10*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes,no = "$GCC,$with_gnu_ld"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       else
 	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
       fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      if test no = "$with_gnu_ld"; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
 	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
 	_LT_TAGVAR(hardcode_direct, $1)=yes
 	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
 	# hardcode_minus_L: Not really in the search PATH,
 	# but as the default location of the library.
 	_LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -5268,25 +5710,25 @@
       ;;
 
     hpux11*)
-      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+      if test yes,no = "$GCC,$with_gnu_ld"; then
 	case $host_cpu in
 	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       else
 	case $host_cpu in
 	hppa*64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
 	m4_if($1, [], [
@@ -5294,14 +5736,14 @@
 	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
 	  _LT_LINKER_OPTION([if $CC understands -b],
 	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
-	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
 	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
-	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
 	  ;;
 	esac
       fi
-      if test "$with_gnu_ld" = no; then
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      if test no = "$with_gnu_ld"; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
 	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
 
 	case $host_cpu in
@@ -5312,7 +5754,7 @@
 	*)
 	  _LT_TAGVAR(hardcode_direct, $1)=yes
 	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
 
 	  # hardcode_minus_L: Not really in the search PATH,
 	  # but as the default location of the library.
@@ -5323,16 +5765,16 @@
       ;;
 
     irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 	# Try to use the -exported_symbol ld option, if it does not
 	# work, assume that -exports_file does not work either and
 	# implicitly export all symbols.
 	# This should be the same for all languages, so no per-tag cache variable.
 	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
 	  [lt_cv_irix_exported_symbol],
-	  [save_LDFLAGS="$LDFLAGS"
-	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+	  [save_LDFLAGS=$LDFLAGS
+	   LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
 	   AC_LINK_IFELSE(
 	     [AC_LANG_SOURCE(
 	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
@@ -5345,21 +5787,32 @@
       end]])])],
 	      [lt_cv_irix_exported_symbol=yes],
 	      [lt_cv_irix_exported_symbol=no])
-           LDFLAGS="$save_LDFLAGS"])
-	if test "$lt_cv_irix_exported_symbol" = yes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+           LDFLAGS=$save_LDFLAGS])
+	if test yes = "$lt_cv_irix_exported_symbol"; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
 	fi
+	_LT_TAGVAR(link_all_deplibs, $1)=no
       else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
       fi
       _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       _LT_TAGVAR(inherit_rpath, $1)=yes
       _LT_TAGVAR(link_all_deplibs, $1)=yes
       ;;
 
+    linux*)
+      case $cc_basename in
+      tcc*)
+	# Fabrice Bellard et al's Tiny C Compiler
+	_LT_TAGVAR(ld_shlibs, $1)=yes
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      esac
+      ;;
+
     netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
@@ -5374,7 +5827,7 @@
     newsos6)
       _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       ;;
@@ -5382,27 +5835,19 @@
     *nto* | *qnx*)
       ;;
 
-    openbsd*)
+    openbsd* | bitrig*)
       if test -f /usr/libexec/ld.so; then
 	_LT_TAGVAR(hardcode_direct, $1)=yes
 	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
 	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
-	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then
 	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
 	else
-	  case $host_os in
-	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	     ;;
-	   *)
-	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	     ;;
-	  esac
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
 	fi
       else
 	_LT_TAGVAR(ld_shlibs, $1)=no
@@ -5413,33 +5858,53 @@
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      shrext_cmds=.dll
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	$ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	$ECHO EXPORTS >> $output_objdir/$libname.def~
+	prefix_cmds="$SED"~
+	if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	  prefix_cmds="$prefix_cmds -e 1d";
+	fi~
+	prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	$CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	emximp -o $lib $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       ;;
 
     osf3*)
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
       else
 	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
       fi
       _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=:
       ;;
 
     osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
       else
 	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+          $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp'
 
 	# Both c and cxx compiler support -rpath directly
 	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -5450,24 +5915,24 @@
 
     solaris*)
       _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	wlarc='$wl'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags'
 	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+          $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
       else
 	case `$CC -V 2>&1` in
 	*"Compilers 5.0"*)
 	  wlarc=''
-	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags'
 	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+            $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
 	  ;;
 	*)
-	  wlarc='${wl}'
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  wlarc='$wl'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags'
 	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+            $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
 	  ;;
 	esac
       fi
@@ -5477,11 +5942,11 @@
       solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
       *)
 	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but understands '-z linker_flag'.  GCC discards it without '$wl',
 	# but is careful enough not to reorder.
 	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	if test yes = "$GCC"; then
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
 	else
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
 	fi
@@ -5491,10 +5956,10 @@
       ;;
 
     sunos4*)
-      if test "x$host_vendor" = xsequent; then
+      if test sequent = "$host_vendor"; then
 	# Use $CC to link under sequent, because it throws in some extra .o
 	# files that make .init and .fini sections work.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags'
       else
 	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
       fi
@@ -5543,43 +6008,43 @@
       ;;
 
     sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       runpath_var='LD_RUN_PATH'
 
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
     sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
+      # Note: We CANNOT use -z defs as we might desire, because we do not
       # link with -lc, and that would cause any symbols used from libc to
       # always be unresolved, which means just about no library would
       # ever link correctly.  If we're not using GNU ld we use -z text
       # though, which does catch some bad symbols but isn't as heavy-handed
       # as -z defs.
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+      _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
       _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
       _LT_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
       runpath_var='LD_RUN_PATH'
 
-      if test "$GCC" = yes; then
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      if test yes = "$GCC"; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
@@ -5594,17 +6059,17 @@
       ;;
     esac
 
-    if test x$host_vendor = xsni; then
+    if test sni = "$host_vendor"; then
       case $host in
       sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym'
 	;;
       esac
     fi
   fi
 ])
 AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
 
 _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
 
@@ -5621,7 +6086,7 @@
   # Assume -lc should be added
   _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
 
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
+  if test yes,yes = "$GCC,$enable_shared"; then
     case $_LT_TAGVAR(archive_cmds, $1) in
     *'~'*)
       # FIXME: we may have to deal with multi-command sequences.
@@ -5701,12 +6166,12 @@
 _LT_TAGDECL([], [hardcode_libdir_separator], [1],
     [Whether we need a single "-rpath" flag with a separated argument])
 _LT_TAGDECL([], [hardcode_direct], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
     DIR into the resulting binary])
 _LT_TAGDECL([], [hardcode_direct_absolute], [0],
-    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes
     DIR into the resulting binary and the resulting library dependency is
-    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+    "absolute", i.e impossible to change by setting $shlibpath_var if the
     library is relocated])
 _LT_TAGDECL([], [hardcode_minus_L], [0],
     [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
@@ -5747,10 +6212,10 @@
 # ------------------------
 # Ensure that the configuration variables for a C compiler are suitably
 # defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
+# the compiler configuration to 'libtool'.
 m4_defun([_LT_LANG_C_CONFIG],
 [m4_require([_LT_DECL_EGREP])dnl
-lt_save_CC="$CC"
+lt_save_CC=$CC
 AC_LANG_PUSH(C)
 
 # Source file extension for C test sources.
@@ -5790,18 +6255,18 @@
   LT_SYS_DLOPEN_SELF
   _LT_CMD_STRIPLIB
 
-  # Report which library types will actually be built
+  # Report what library types will actually be built
   AC_MSG_CHECKING([if libtool supports shared libraries])
   AC_MSG_RESULT([$can_build_shared])
 
   AC_MSG_CHECKING([whether to build shared libraries])
-  test "$can_build_shared" = "no" && enable_shared=no
+  test no = "$can_build_shared" && enable_shared=no
 
   # On AIX, shared libraries and static libraries use the same namespace, and
   # are all built from PIC.
   case $host_os in
   aix3*)
-    test "$enable_shared" = yes && enable_static=no
+    test yes = "$enable_shared" && enable_static=no
     if test -n "$RANLIB"; then
       archive_cmds="$archive_cmds~\$RANLIB \$lib"
       postinstall_cmds='$RANLIB $lib'
@@ -5809,8 +6274,12 @@
     ;;
 
   aix[[4-9]]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
+    if test ia64 != "$host_cpu"; then
+      case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+      yes,aix,yes) ;;			# shared object as lib.so file only
+      yes,svr4,*) ;;			# shared object as lib.so archive member only
+      yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+      esac
     fi
     ;;
   esac
@@ -5818,13 +6287,13 @@
 
   AC_MSG_CHECKING([whether to build static libraries])
   # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
+  test yes = "$enable_shared" || enable_static=yes
   AC_MSG_RESULT([$enable_static])
 
   _LT_CONFIG($1)
 fi
 AC_LANG_POP
-CC="$lt_save_CC"
+CC=$lt_save_CC
 ])# _LT_LANG_C_CONFIG
 
 
@@ -5832,14 +6301,14 @@
 # --------------------------
 # Ensure that the configuration variables for a C++ compiler are suitably
 # defined.  These variables are subsequently used by _LT_CONFIG to write
-# the compiler configuration to `libtool'.
+# the compiler configuration to 'libtool'.
 m4_defun([_LT_LANG_CXX_CONFIG],
 [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_DECL_EGREP])dnl
 m4_require([_LT_PATH_MANIFEST_TOOL])dnl
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
+if test -n "$CXX" && ( test no != "$CXX" &&
+    ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) ||
+    (test g++ != "$CXX"))); then
   AC_PROG_CXXCPP
 else
   _lt_caught_CXX_error=yes
@@ -5881,7 +6350,7 @@
 # the CXX compiler isn't working.  Some variables (like enable_shared)
 # are currently assumed to apply to all compilers on this platform,
 # and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
+if test yes != "$_lt_caught_CXX_error"; then
   # Code to be used in simple compile tests
   lt_simple_compile_test_code="int some_variable = 0;"
 
@@ -5923,35 +6392,35 @@
   if test -n "$compiler"; then
     # We don't want -fno-exception when compiling C++ code, so set the
     # no_builtin_flag separately
-    if test "$GXX" = yes; then
+    if test yes = "$GXX"; then
       _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
     else
       _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
     fi
 
-    if test "$GXX" = yes; then
+    if test yes = "$GXX"; then
       # Set up default GNU C++ configuration
 
       LT_PATH_LD
 
       # Check if GNU C++ uses GNU ld as the underlying linker, since the
       # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      if test yes = "$with_gnu_ld"; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
 
         # If archive_cmds runs LD, not CC, wlarc should be empty
         # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
         #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
+        wlarc='$wl'
 
         # ancient GNU ld didn't support --whole-archive et. al.
         if eval "`$CC -print-prog-name=ld` --help 2>&1" |
 	  $GREP 'no-whole-archive' > /dev/null; then
-          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+          _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
         else
           _LT_TAGVAR(whole_archive_flag_spec, $1)=
         fi
@@ -5987,18 +6456,30 @@
         _LT_TAGVAR(ld_shlibs, $1)=no
         ;;
       aix[[4-9]]*)
-        if test "$host_cpu" = ia64; then
+        if test ia64 = "$host_cpu"; then
           # On IA64, the linker does run time linking by default, so we don't
           # have to do anything special.
           aix_use_runtimelinking=no
           exp_sym_flag='-Bexport'
-          no_entry_flag=""
+          no_entry_flag=
         else
           aix_use_runtimelinking=no
 
           # Test if we are trying to use run time linking or normal
           # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
+          # have runtime linking enabled, and use it for executables.
+          # For shared libraries, we enable/disable runtime linking
+          # depending on the kind of the shared library created -
+          # when "with_aix_soname,aix_use_runtimelinking" is:
+          # "aix,no"   lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "aix,yes"  lib.so          shared, rtl:yes, for executables
+          #            lib.a           static archive
+          # "both,no"  lib.so.V(shr.o) shared, rtl:yes
+          #            lib.a(lib.so.V) shared, rtl:no,  for executables
+          # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a(lib.so.V) shared, rtl:no
+          # "svr4,*"   lib.so.V(shr.o) shared, rtl:yes, for executables
+          #            lib.a           static archive
           case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
 	    for ld_flag in $LDFLAGS; do
 	      case $ld_flag in
@@ -6008,6 +6489,13 @@
 	        ;;
 	      esac
 	    done
+	    if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then
+	      # With aix-soname=svr4, we create the lib.so.V shared archives only,
+	      # so we don't have lib.a shared libs to link our executables.
+	      # We have to force runtime linking in this case.
+	      aix_use_runtimelinking=yes
+	      LDFLAGS="$LDFLAGS -Wl,-brtl"
+	    fi
 	    ;;
           esac
 
@@ -6026,13 +6514,21 @@
         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
         _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
         _LT_TAGVAR(link_all_deplibs, $1)=yes
-        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+        _LT_TAGVAR(file_list_spec, $1)='$wl-f,'
+        case $with_aix_soname,$aix_use_runtimelinking in
+        aix,*) ;;	# no import file
+        svr4,* | *,yes) # use import file
+          # The Import File defines what to hardcode.
+          _LT_TAGVAR(hardcode_direct, $1)=no
+          _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+          ;;
+        esac
 
-        if test "$GXX" = yes; then
+        if test yes = "$GXX"; then
           case $host_os in aix4.[[012]]|aix4.[[012]].*)
           # We only want to do this on AIX 4.2 and lower, the check
           # below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
+	  collect2name=`$CC -print-prog-name=collect2`
 	  if test -f "$collect2name" &&
 	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
 	  then
@@ -6050,64 +6546,84 @@
 	  fi
           esac
           shared_flag='-shared'
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag="$shared_flag "'${wl}-G'
+	  if test yes = "$aix_use_runtimelinking"; then
+	    shared_flag=$shared_flag' $wl-G'
 	  fi
+	  # Need to ensure runtime linking is disabled for the traditional
+	  # shared library, or the linker may eventually find shared libraries
+	  # /with/ Import File - we do not want to mix them.
+	  shared_flag_aix='-shared'
+	  shared_flag_svr4='-shared $wl-G'
         else
           # not using gcc
-          if test "$host_cpu" = ia64; then
+          if test ia64 = "$host_cpu"; then
 	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
 	  # chokes on -Wl,-G. The following line is correct:
 	  shared_flag='-G'
           else
-	    if test "$aix_use_runtimelinking" = yes; then
-	      shared_flag='${wl}-G'
+	    if test yes = "$aix_use_runtimelinking"; then
+	      shared_flag='$wl-G'
 	    else
-	      shared_flag='${wl}-bM:SRE'
+	      shared_flag='$wl-bM:SRE'
 	    fi
+	    shared_flag_aix='$wl-bM:SRE'
+	    shared_flag_svr4='$wl-G'
           fi
         fi
 
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall'
         # It seems that -bexpall does not export symbols beginning with
         # underscore (_), so it is better to generate a list of symbols to
 	# export.
         _LT_TAGVAR(always_export_symbols, $1)=yes
-        if test "$aix_use_runtimelinking" = yes; then
+	if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then
           # Warning - without using the other runtime loading flags (-brtl),
           # -berok will link without error, but may produce a broken library.
-          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+          # The "-G" linker flag allows undefined symbols.
+          _LT_TAGVAR(no_undefined_flag, $1)='-bernotok'
           # Determine the default libpath from the value encoded in an empty
           # executable.
           _LT_SYS_MODULE_PATH_AIX([$1])
-          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
 
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag
         else
-          if test "$host_cpu" = ia64; then
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+          if test ia64 = "$host_cpu"; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib'
 	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols"
           else
 	    # Determine the default libpath from the value encoded in an
 	    # empty executable.
 	    _LT_SYS_MODULE_PATH_AIX([$1])
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath"
 	    # Warning - without using the other run time loading flags,
 	    # -berok will link without error, but may produce a broken library.
-	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	    if test "$with_gnu_ld" = yes; then
+	    _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok'
+	    _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok'
+	    if test yes = "$with_gnu_ld"; then
 	      # We only use this code for GNU lds that support --whole-archive.
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
 	    else
 	      # Exported symbols can be pulled into shared objects from archives
 	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
 	    fi
 	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-	    # This is similar to how AIX traditionally builds its shared
-	    # libraries.
-	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d'
+	    # -brtl affects multiple linker settings, -berok does not and is overridden later
+	    compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`'
+	    if test svr4 != "$with_aix_soname"; then
+	      # This is similar to how AIX traditionally builds its shared
+	      # libraries. Need -bnortl late, we may have -brtl in LDFLAGS.
+	      _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname'
+	    fi
+	    if test aix != "$with_aix_soname"; then
+	      _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp'
+	    else
+	      # used by -dlpreopen to get the symbols
+	      _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV  $output_objdir/$realname.d/$soname $output_objdir'
+	    fi
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d'
           fi
         fi
         ;;
@@ -6117,7 +6633,7 @@
 	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
 	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
 	  # support --undefined.  This deserves some investigation.  FIXME
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
 	else
 	  _LT_TAGVAR(ld_shlibs, $1)=no
 	fi
@@ -6145,57 +6661,58 @@
 	  # Tell ltmain to make .lib files, not .a files.
 	  libext=lib
 	  # Tell ltmain to make .dll files, not .so files.
-	  shrext_cmds=".dll"
+	  shrext_cmds=.dll
 	  # FIXME: Setting linknames here is a bad hack.
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
-	    else
-	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
-	    fi~
-	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
-	    linknames='
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames='
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+              cp "$export_symbols" "$output_objdir/$soname.def";
+              echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp";
+            else
+              $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp;
+            fi~
+            $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+            linknames='
 	  # The linker will not automatically build a static lib if we build a DLL.
 	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
 	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
 	  # Don't use ranlib
 	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
 	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
-	    lt_tool_outputfile="@TOOL_OUTPUT@"~
-	    case $lt_outputfile in
-	      *.exe|*.EXE) ;;
-	      *)
-		lt_outputfile="$lt_outputfile.exe"
-		lt_tool_outputfile="$lt_tool_outputfile.exe"
-		;;
-	    esac~
-	    func_to_tool_file "$lt_outputfile"~
-	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
-	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
-	      $RM "$lt_outputfile.manifest";
-	    fi'
+            lt_tool_outputfile="@TOOL_OUTPUT@"~
+            case $lt_outputfile in
+              *.exe|*.EXE) ;;
+              *)
+                lt_outputfile=$lt_outputfile.exe
+                lt_tool_outputfile=$lt_tool_outputfile.exe
+                ;;
+            esac~
+            func_to_tool_file "$lt_outputfile"~
+            if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then
+              $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+              $RM "$lt_outputfile.manifest";
+            fi'
 	  ;;
 	*)
 	  # g++
 	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
 	  # as there is no search path for DLLs.
 	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols'
 	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
 	  _LT_TAGVAR(always_export_symbols, $1)=no
 	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
 
 	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	    # If the export-symbols file already is a .def file (1st line
-	    # is EXPORTS), use it as is; otherwise, prepend...
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	      cp $export_symbols $output_objdir/$soname.def;
-	    else
-	      echo EXPORTS > $output_objdir/$soname.def;
-	      cat $export_symbols >> $output_objdir/$soname.def;
-	    fi~
-	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    # If the export-symbols file already is a .def file, use it as
+	    # is; otherwise, prepend EXPORTS...
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then
+              cp $export_symbols $output_objdir/$soname.def;
+            else
+              echo EXPORTS > $output_objdir/$soname.def;
+              cat $export_symbols >> $output_objdir/$soname.def;
+            fi~
+            $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
 	  else
 	    _LT_TAGVAR(ld_shlibs, $1)=no
 	  fi
@@ -6206,6 +6723,34 @@
         _LT_DARWIN_LINKER_FEATURES($1)
 	;;
 
+      os2*)
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	_LT_TAGVAR(hardcode_minus_L, $1)=yes
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	shrext_cmds=.dll
+	_LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~
+	  $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~
+	  $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~
+	  $ECHO EXPORTS >> $output_objdir/$libname.def~
+	  prefix_cmds="$SED"~
+	  if test EXPORTS = "`$SED 1q $export_symbols`"; then
+	    prefix_cmds="$prefix_cmds -e 1d";
+	  fi~
+	  prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~
+	  cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~
+	  $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~
+	  emximp -o $lib $output_objdir/$libname.def'
+	_LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	;;
+
       dgux*)
         case $cc_basename in
           ec++*)
@@ -6241,14 +6786,14 @@
         ;;
 
       haiku*)
-        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
         _LT_TAGVAR(link_all_deplibs, $1)=yes
         ;;
 
       hpux9*)
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
-        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
         _LT_TAGVAR(hardcode_direct, $1)=yes
         _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
 				             # but as the default
@@ -6260,7 +6805,7 @@
             _LT_TAGVAR(ld_shlibs, $1)=no
             ;;
           aCC*)
-            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
             # Commands to make compiler produce verbose output that lists
             # what "hidden" libraries, object files and flags are used when
             # linking a shared library.
@@ -6269,11 +6814,11 @@
             # explicitly linking system object files so we need to strip them
             # from the output so that they don't get included in the library
             # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
             ;;
           *)
-            if test "$GXX" = yes; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            if test yes = "$GXX"; then
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib'
             else
               # FIXME: insert proper C++ library support
               _LT_TAGVAR(ld_shlibs, $1)=no
@@ -6283,15 +6828,15 @@
         ;;
 
       hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+        if test no = "$with_gnu_ld"; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir'
 	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
 
           case $host_cpu in
             hppa*64*|ia64*)
               ;;
             *)
-	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
               ;;
           esac
         fi
@@ -6317,13 +6862,13 @@
           aCC*)
 	    case $host_cpu in
 	      hppa*64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	        ;;
 	      ia64*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	        ;;
 	      *)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	        ;;
 	    esac
 	    # Commands to make compiler produce verbose output that lists
@@ -6334,20 +6879,20 @@
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 	    ;;
           *)
-	    if test "$GXX" = yes; then
-	      if test $with_gnu_ld = no; then
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
 	        case $host_cpu in
 	          hppa*64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	          ia64*)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	          *)
-	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	            ;;
 	        esac
 	      fi
@@ -6362,22 +6907,22 @@
       interix[[3-9]]*)
 	_LT_TAGVAR(hardcode_direct, $1)=no
 	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
 	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
 	# Instead, shared libraries are loaded at an image base (0x10000000 by
 	# default) and relocated if they conflict, which is a slow very memory
 	# consuming and fragmenting process.  To avoid this, we pick a random,
 	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
 	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
 	;;
       irix5* | irix6*)
         case $cc_basename in
           CC*)
 	    # SGI C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 
 	    # Archives containing C++ object files must be created using
 	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
@@ -6386,17 +6931,17 @@
 	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
 	    ;;
           *)
-	    if test "$GXX" = yes; then
-	      if test "$with_gnu_ld" = no; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	    if test yes = "$GXX"; then
+	      if test no = "$with_gnu_ld"; then
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 	      else
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib'
 	      fi
 	    fi
 	    _LT_TAGVAR(link_all_deplibs, $1)=yes
 	    ;;
         esac
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         _LT_TAGVAR(inherit_rpath, $1)=yes
         ;;
@@ -6409,8 +6954,8 @@
 	    # KCC will only create a shared library if the output file
 	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
 	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib'
 	    # Commands to make compiler produce verbose output that lists
 	    # what "hidden" libraries, object files and flags are used when
 	    # linking a shared library.
@@ -6419,10 +6964,10 @@
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
 
 	    # Archives containing C++ object files must be created using
 	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
@@ -6436,59 +6981,59 @@
 	    # earlier do not add the objects themselves.
 	    case `$CC -V 2>&1` in
 	      *"Version 7."*)
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 		;;
 	      *)  # Version 8.0 or newer
 	        tmp_idyn=
 	        case $host_cpu in
 		  ia64*) tmp_idyn=' -i_dynamic';;
 		esac
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 		;;
 	    esac
 	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive'
 	    ;;
           pgCC* | pgcpp*)
             # Portland Group C++ compiler
 	    case `$CC -V` in
 	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
 	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
 	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
-		$RANLIB $oldlib'
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+                $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+                $RANLIB $oldlib'
 	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
 	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
-		rm -rf $tpldir~
-		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+                rm -rf $tpldir~
+                $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+                $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 	      ;;
 	    *) # Version 6 and above use weak symbols
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib'
 	      ;;
 	    esac
 
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
             ;;
 	  cxx*)
 	    # Compaq C++
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname  -o $lib $wl-retain-symbols-file $wl$export_symbols'
 
 	    runpath_var=LD_RUN_PATH
 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -6502,18 +7047,18 @@
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
 	    ;;
 	  xl* | mpixl* | bgxl*)
 	    # IBM XL 8.0 on PPC, with GNU ld
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	    if test "x$supports_anon_versioning" = xyes; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib'
+	    if test yes = "$supports_anon_versioning"; then
 	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
-		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-		echo "local: *; };" >> $output_objdir/$libname.ver~
-		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+                cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+                echo "local: *; };" >> $output_objdir/$libname.ver~
+                $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib'
 	    fi
 	    ;;
 	  *)
@@ -6521,10 +7066,10 @@
 	    *Sun\ C*)
 	      # Sun C++ 5.9
 	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols'
 	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive'
 	      _LT_TAGVAR(compiler_needs_object, $1)=yes
 
 	      # Not sure whether something based on
@@ -6582,22 +7127,17 @@
         _LT_TAGVAR(ld_shlibs, $1)=yes
 	;;
 
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-	_LT_TAGVAR(ld_shlibs, $1)=no
-	;;
-
-      openbsd*)
+      openbsd* | bitrig*)
 	if test -f /usr/libexec/ld.so; then
 	  _LT_TAGVAR(hardcode_direct, $1)=yes
 	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
 	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
 	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive'
 	  fi
 	  output_verbose_link_cmd=func_echo_all
 	else
@@ -6613,9 +7153,9 @@
 	    # KCC will only create a shared library if the output file
 	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
 	    # to its proper name (with version) after linking.
-	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
 
-	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir'
 	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
 
 	    # Archives containing C++ object files must be created using
@@ -6633,17 +7173,17 @@
           cxx*)
 	    case $host in
 	      osf3*)
-	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
-	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	        _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
+	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
 		;;
 	      *)
 	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	          echo "-hidden">> $lib.exp~
-	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
-	          $RM $lib.exp'
+                  echo "-hidden">> $lib.exp~
+                  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~
+                  $RM $lib.exp'
 	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
 		;;
 	    esac
@@ -6658,21 +7198,21 @@
 	    # explicitly linking system object files so we need to strip them
 	    # from the output so that they don't get included in the library
 	    # dependencies.
-	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 	    ;;
 	  *)
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*'
 	      case $host in
 	        osf3*)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 		  ;;
 	        *)
-	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib'
 		  ;;
 	      esac
 
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir'
 	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
 
 	      # Commands to make compiler produce verbose output that lists
@@ -6718,9 +7258,9 @@
 	    # Sun C++ 4.2, 5.x and Centerline C++
             _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
 	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+              $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
 	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
 	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -6728,7 +7268,7 @@
 	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
 	      *)
 		# The compiler driver will combine and reorder linker options,
-		# but understands `-z linker_flag'.
+		# but understands '-z linker_flag'.
 	        # Supported since Solaris 2.6 (maybe 2.5.1?)
 		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
 	        ;;
@@ -6745,30 +7285,30 @@
 	    ;;
           gcx*)
 	    # Green Hills C++ Compiler
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
 
 	    # The C++ compiler must be used to create the archive.
 	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
 	    ;;
           *)
 	    # GNU C++ compiler with Solaris linker
-	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+	    if test yes,no = "$GXX,$with_gnu_ld"; then
+	      _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs'
 	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
 	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+                  $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
 	        # Commands to make compiler produce verbose output that lists
 	        # what "hidden" libraries, object files and flags are used when
 	        # linking a shared library.
 	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 	      else
-	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	        # g++ 2.7 appears to require '-G' NOT '-shared' on this
 	        # platform.
-	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib'
 	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+                  $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
 
 	        # Commands to make compiler produce verbose output that lists
 	        # what "hidden" libraries, object files and flags are used when
@@ -6776,11 +7316,11 @@
 	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 	      fi
 
-	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'
 	      case $host_os in
 		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
 		*)
-		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+		  _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract'
 		  ;;
 	      esac
 	    fi
@@ -6789,52 +7329,52 @@
         ;;
 
     sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       runpath_var='LD_RUN_PATH'
 
       case $cc_basename in
         CC*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
       esac
       ;;
 
       sysv5* | sco3.2v5* | sco5v6*)
-	# Note: We can NOT use -z defs as we might desire, because we do not
+	# Note: We CANNOT use -z defs as we might desire, because we do not
 	# link with -lc, and that would cause any symbols used from libc to
 	# always be unresolved, which means just about no library would
 	# ever link correctly.  If we're not using GNU ld we use -z text
 	# though, which does catch some bad symbols but isn't as heavy-handed
 	# as -z defs.
-	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+	_LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text'
+	_LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs'
 	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
 	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir'
 	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
 	_LT_TAGVAR(link_all_deplibs, $1)=yes
-	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport'
 	runpath_var='LD_RUN_PATH'
 
 	case $cc_basename in
           CC*)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
-	      '"$_LT_TAGVAR(old_archive_cmds, $1)"
+              '"$_LT_TAGVAR(old_archive_cmds, $1)"
 	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
-	      '"$_LT_TAGVAR(reload_cmds, $1)"
+              '"$_LT_TAGVAR(reload_cmds, $1)"
 	    ;;
 	  *)
-	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
 	    ;;
 	esac
       ;;
@@ -6865,10 +7405,10 @@
     esac
 
     AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
-    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+    test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no
 
-    _LT_TAGVAR(GCC, $1)="$GXX"
-    _LT_TAGVAR(LD, $1)="$LD"
+    _LT_TAGVAR(GCC, $1)=$GXX
+    _LT_TAGVAR(LD, $1)=$LD
 
     ## CAVEAT EMPTOR:
     ## There is no encapsulation within the following macros, do not change
@@ -6895,7 +7435,7 @@
   lt_cv_path_LD=$lt_save_path_LD
   lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
   lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
+fi # test yes != "$_lt_caught_CXX_error"
 
 AC_LANG_POP
 ])# _LT_LANG_CXX_CONFIG
@@ -6917,13 +7457,14 @@
 AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
 func_stripname_cnf ()
 {
-  case ${2} in
-  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
-  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  case @S|@2 in
+  .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;;
+  *)  func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;;
   esac
 } # func_stripname_cnf
 ])# _LT_FUNC_STRIPNAME_CNF
 
+
 # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
 # ---------------------------------
 # Figure out "hidden" library dependencies from verbose
@@ -7007,13 +7548,13 @@
   pre_test_object_deps_done=no
 
   for p in `eval "$output_verbose_link_cmd"`; do
-    case ${prev}${p} in
+    case $prev$p in
 
     -L* | -R* | -l*)
        # Some compilers place space between "-{L,R}" and the path.
        # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
+       if test x-L = "$p" ||
+          test x-R = "$p"; then
 	 prev=$p
 	 continue
        fi
@@ -7029,16 +7570,16 @@
        case $p in
        =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
        esac
-       if test "$pre_test_object_deps_done" = no; then
-	 case ${prev} in
+       if test no = "$pre_test_object_deps_done"; then
+	 case $prev in
 	 -L | -R)
 	   # Internal compiler library paths should come after those
 	   # provided the user.  The postdeps already come after the
 	   # user supplied libs so there is no need to process them.
 	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+	     _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p
 	   else
-	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p"
 	   fi
 	   ;;
 	 # The "-l" case would never come before the object being
@@ -7046,9 +7587,9 @@
 	 esac
        else
 	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
-	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+	   _LT_TAGVAR(postdeps, $1)=$prev$p
 	 else
-	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p"
 	 fi
        fi
        prev=
@@ -7063,15 +7604,15 @@
 	 continue
        fi
 
-       if test "$pre_test_object_deps_done" = no; then
+       if test no = "$pre_test_object_deps_done"; then
 	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
-	   _LT_TAGVAR(predep_objects, $1)="$p"
+	   _LT_TAGVAR(predep_objects, $1)=$p
 	 else
 	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
 	 fi
        else
 	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
-	   _LT_TAGVAR(postdep_objects, $1)="$p"
+	   _LT_TAGVAR(postdep_objects, $1)=$p
 	 else
 	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
 	 fi
@@ -7102,51 +7643,6 @@
   _LT_TAGVAR(postdep_objects,$1)=
   _LT_TAGVAR(postdeps,$1)=
   ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC* | sunCC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
 esac
 ])
 
@@ -7155,7 +7651,7 @@
 esac
  _LT_TAGVAR(compiler_lib_search_dirs, $1)=
 if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'`
 fi
 _LT_TAGDECL([], [compiler_lib_search_dirs], [1],
     [The directories searched by this compiler when creating a shared library])
@@ -7175,10 +7671,10 @@
 # --------------------------
 # Ensure that the configuration variables for a Fortran 77 compiler are
 # suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
 m4_defun([_LT_LANG_F77_CONFIG],
 [AC_LANG_PUSH(Fortran 77)
-if test -z "$F77" || test "X$F77" = "Xno"; then
+if test -z "$F77" || test no = "$F77"; then
   _lt_disable_F77=yes
 fi
 
@@ -7215,7 +7711,7 @@
 # the F77 compiler isn't working.  Some variables (like enable_shared)
 # are currently assumed to apply to all compilers on this platform,
 # and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_F77" != yes; then
+if test yes != "$_lt_disable_F77"; then
   # Code to be used in simple compile tests
   lt_simple_compile_test_code="\
       subroutine t
@@ -7237,7 +7733,7 @@
   _LT_LINKER_BOILERPLATE
 
   # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
+  lt_save_CC=$CC
   lt_save_GCC=$GCC
   lt_save_CFLAGS=$CFLAGS
   CC=${F77-"f77"}
@@ -7251,21 +7747,25 @@
     AC_MSG_RESULT([$can_build_shared])
 
     AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
+    test no = "$can_build_shared" && enable_shared=no
 
     # On AIX, shared libraries and static libraries use the same namespace, and
     # are all built from PIC.
     case $host_os in
       aix3*)
-        test "$enable_shared" = yes && enable_static=no
+        test yes = "$enable_shared" && enable_static=no
         if test -n "$RANLIB"; then
           archive_cmds="$archive_cmds~\$RANLIB \$lib"
           postinstall_cmds='$RANLIB $lib'
         fi
         ;;
       aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
+	if test ia64 != "$host_cpu"; then
+	  case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+	  yes,aix,yes) ;;		# shared object as lib.so file only
+	  yes,svr4,*) ;;		# shared object as lib.so archive member only
+	  yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+	  esac
 	fi
         ;;
     esac
@@ -7273,11 +7773,11 @@
 
     AC_MSG_CHECKING([whether to build static libraries])
     # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
+    test yes = "$enable_shared" || enable_static=yes
     AC_MSG_RESULT([$enable_static])
 
-    _LT_TAGVAR(GCC, $1)="$G77"
-    _LT_TAGVAR(LD, $1)="$LD"
+    _LT_TAGVAR(GCC, $1)=$G77
+    _LT_TAGVAR(LD, $1)=$LD
 
     ## CAVEAT EMPTOR:
     ## There is no encapsulation within the following macros, do not change
@@ -7294,9 +7794,9 @@
   fi # test -n "$compiler"
 
   GCC=$lt_save_GCC
-  CC="$lt_save_CC"
-  CFLAGS="$lt_save_CFLAGS"
-fi # test "$_lt_disable_F77" != yes
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+fi # test yes != "$_lt_disable_F77"
 
 AC_LANG_POP
 ])# _LT_LANG_F77_CONFIG
@@ -7306,11 +7806,11 @@
 # -------------------------
 # Ensure that the configuration variables for a Fortran compiler are
 # suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
 m4_defun([_LT_LANG_FC_CONFIG],
 [AC_LANG_PUSH(Fortran)
 
-if test -z "$FC" || test "X$FC" = "Xno"; then
+if test -z "$FC" || test no = "$FC"; then
   _lt_disable_FC=yes
 fi
 
@@ -7347,7 +7847,7 @@
 # the FC compiler isn't working.  Some variables (like enable_shared)
 # are currently assumed to apply to all compilers on this platform,
 # and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_disable_FC" != yes; then
+if test yes != "$_lt_disable_FC"; then
   # Code to be used in simple compile tests
   lt_simple_compile_test_code="\
       subroutine t
@@ -7369,7 +7869,7 @@
   _LT_LINKER_BOILERPLATE
 
   # Allow CC to be a program name with arguments.
-  lt_save_CC="$CC"
+  lt_save_CC=$CC
   lt_save_GCC=$GCC
   lt_save_CFLAGS=$CFLAGS
   CC=${FC-"f95"}
@@ -7385,21 +7885,25 @@
     AC_MSG_RESULT([$can_build_shared])
 
     AC_MSG_CHECKING([whether to build shared libraries])
-    test "$can_build_shared" = "no" && enable_shared=no
+    test no = "$can_build_shared" && enable_shared=no
 
     # On AIX, shared libraries and static libraries use the same namespace, and
     # are all built from PIC.
     case $host_os in
       aix3*)
-        test "$enable_shared" = yes && enable_static=no
+        test yes = "$enable_shared" && enable_static=no
         if test -n "$RANLIB"; then
           archive_cmds="$archive_cmds~\$RANLIB \$lib"
           postinstall_cmds='$RANLIB $lib'
         fi
         ;;
       aix[[4-9]]*)
-	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-	  test "$enable_shared" = yes && enable_static=no
+	if test ia64 != "$host_cpu"; then
+	  case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in
+	  yes,aix,yes) ;;		# shared object as lib.so file only
+	  yes,svr4,*) ;;		# shared object as lib.so archive member only
+	  yes,*) enable_static=no ;;	# shared object in lib.a archive as well
+	  esac
 	fi
         ;;
     esac
@@ -7407,11 +7911,11 @@
 
     AC_MSG_CHECKING([whether to build static libraries])
     # Make sure either enable_shared or enable_static is yes.
-    test "$enable_shared" = yes || enable_static=yes
+    test yes = "$enable_shared" || enable_static=yes
     AC_MSG_RESULT([$enable_static])
 
-    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
-    _LT_TAGVAR(LD, $1)="$LD"
+    _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu
+    _LT_TAGVAR(LD, $1)=$LD
 
     ## CAVEAT EMPTOR:
     ## There is no encapsulation within the following macros, do not change
@@ -7431,7 +7935,7 @@
   GCC=$lt_save_GCC
   CC=$lt_save_CC
   CFLAGS=$lt_save_CFLAGS
-fi # test "$_lt_disable_FC" != yes
+fi # test yes != "$_lt_disable_FC"
 
 AC_LANG_POP
 ])# _LT_LANG_FC_CONFIG
@@ -7441,7 +7945,7 @@
 # --------------------------
 # Ensure that the configuration variables for the GNU Java Compiler compiler
 # are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
 m4_defun([_LT_LANG_GCJ_CONFIG],
 [AC_REQUIRE([LT_PROG_GCJ])dnl
 AC_LANG_SAVE
@@ -7475,7 +7979,7 @@
 CFLAGS=$GCJFLAGS
 compiler=$CC
 _LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
+_LT_TAGVAR(LD, $1)=$LD
 _LT_CC_BASENAME([$compiler])
 
 # GCJ did not exist at the time GCC didn't implicitly link libc in.
@@ -7512,7 +8016,7 @@
 # --------------------------
 # Ensure that the configuration variables for the GNU Go compiler
 # are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
 m4_defun([_LT_LANG_GO_CONFIG],
 [AC_REQUIRE([LT_PROG_GO])dnl
 AC_LANG_SAVE
@@ -7546,7 +8050,7 @@
 CFLAGS=$GOFLAGS
 compiler=$CC
 _LT_TAGVAR(compiler, $1)=$CC
-_LT_TAGVAR(LD, $1)="$LD"
+_LT_TAGVAR(LD, $1)=$LD
 _LT_CC_BASENAME([$compiler])
 
 # Go did not exist at the time GCC didn't implicitly link libc in.
@@ -7583,7 +8087,7 @@
 # -------------------------
 # Ensure that the configuration variables for the Windows resource compiler
 # are suitably defined.  These variables are subsequently used by _LT_CONFIG
-# to write the compiler configuration to `libtool'.
+# to write the compiler configuration to 'libtool'.
 m4_defun([_LT_LANG_RC_CONFIG],
 [AC_REQUIRE([LT_PROG_RC])dnl
 AC_LANG_SAVE
@@ -7599,7 +8103,7 @@
 lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
 
 # Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
+lt_simple_link_test_code=$lt_simple_compile_test_code
 
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 _LT_TAG_COMPILER
@@ -7609,7 +8113,7 @@
 _LT_LINKER_BOILERPLATE
 
 # Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
+lt_save_CC=$CC
 lt_save_CFLAGS=$CFLAGS
 lt_save_GCC=$GCC
 GCC=
@@ -7638,7 +8142,7 @@
 [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
   [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
     [AC_CHECK_TOOL(GCJ, gcj,)
-      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+      test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2"
       AC_SUBST(GCJFLAGS)])])[]dnl
 ])
 
@@ -7749,7 +8253,7 @@
 # Add /usr/xpg4/bin/sed as it is typically found on Solaris
 # along with /bin/sed that truncates output.
 for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && continue
+  test ! -f "$lt_ac_sed" && continue
   cat /dev/null > conftest.in
   lt_ac_count=0
   echo $ECHO_N "0123456789$ECHO_C" >conftest.in
@@ -7766,9 +8270,9 @@
     $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
     cmp -s conftest.out conftest.nl || break
     # 10000 chars as input seems more than enough
-    test $lt_ac_count -gt 10 && break
+    test 10 -lt "$lt_ac_count" && break
     lt_ac_count=`expr $lt_ac_count + 1`
-    if test $lt_ac_count -gt $lt_ac_max; then
+    if test "$lt_ac_count" -gt "$lt_ac_max"; then
       lt_ac_max=$lt_ac_count
       lt_cv_path_SED=$lt_ac_sed
     fi
@@ -7792,27 +8296,7 @@
 # Find out whether the shell is Bourne or XSI compatible,
 # or has some other useful features.
 m4_defun([_LT_CHECK_SHELL_FEATURES],
-[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-AC_MSG_RESULT([$xsi_shell])
-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-
-AC_MSG_CHECKING([whether the shell understands "+="])
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-AC_MSG_RESULT([$lt_shell_append])
-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
-
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
   lt_unset=unset
 else
   lt_unset=false
@@ -7836,102 +8320,9 @@
 ])# _LT_CHECK_SHELL_FEATURES
 
 
-# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
-# ------------------------------------------------------
-# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
-# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
-m4_defun([_LT_PROG_FUNCTION_REPLACE],
-[dnl {
-sed -e '/^$1 ()$/,/^} # $1 /c\
-$1 ()\
-{\
-m4_bpatsubsts([$2], [$], [\\], [^\([	 ]\)], [\\\1])
-} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-])
-
-
-# _LT_PROG_REPLACE_SHELLFNS
-# -------------------------
-# Replace existing portable implementations of several shell functions with
-# equivalent extended shell implementations where those features are available..
-m4_defun([_LT_PROG_REPLACE_SHELLFNS],
-[if test x"$xsi_shell" = xyes; then
-  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac])
-
-  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
-    func_basename_result="${1##*/}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
-    case ${1} in
-      */*) func_dirname_result="${1%/*}${2}" ;;
-      *  ) func_dirname_result="${3}" ;;
-    esac
-    func_basename_result="${1##*/}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
-    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-    # positional parameters, so assign one to ordinary parameter first.
-    func_stripname_result=${3}
-    func_stripname_result=${func_stripname_result#"${1}"}
-    func_stripname_result=${func_stripname_result%"${2}"}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
-    func_split_long_opt_name=${1%%=*}
-    func_split_long_opt_arg=${1#*=}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
-    func_split_short_opt_arg=${1#??}
-    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
-
-  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
-    case ${1} in
-      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
-      *)    func_lo2o_result=${1} ;;
-    esac])
-
-  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
-
-  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
-
-  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
-fi
-
-if test x"$lt_shell_append" = xyes; then
-  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
-
-  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
-    func_quote_for_eval "${2}"
-dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
-    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
-
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
-
-if test x"$_lt_function_replace_fail" = x":"; then
-  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
-fi
-])
-
 # _LT_PATH_CONVERSION_FUNCTIONS
 # -----------------------------
-# Determine which file name conversion functions should be used by
+# Determine what file name conversion functions should be used by
 # func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
 # for certain cross-compile configurations and native mingw.
 m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
index 5d9acd8..94b0829 100644
--- a/m4/ltoptions.m4
+++ b/m4/ltoptions.m4
@@ -1,14 +1,14 @@
 # Helper functions for option handling.                    -*- Autoconf -*-
 #
-#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
-#   Inc.
+#   Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software
+#   Foundation, Inc.
 #   Written by Gary V. Vaughan, 2004
 #
 # This file is free software; the Free Software Foundation gives
 # unlimited permission to copy and/or distribute it, with or without
 # modifications, as long as this notice is preserved.
 
-# serial 7 ltoptions.m4
+# serial 8 ltoptions.m4
 
 # This is to help aclocal find these macros, as it can't see m4_define.
 AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
@@ -29,7 +29,7 @@
 [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
 m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
         _LT_MANGLE_DEFUN([$1], [$2]),
-    [m4_warning([Unknown $1 option `$2'])])[]dnl
+    [m4_warning([Unknown $1 option '$2'])])[]dnl
 ])
 
 
@@ -75,13 +75,15 @@
   dnl
   dnl If no reference was made to various pairs of opposing options, then
   dnl we run the default mode handler for the pair.  For example, if neither
-  dnl `shared' nor `disable-shared' was passed, we enable building of shared
+  dnl 'shared' nor 'disable-shared' was passed, we enable building of shared
   dnl archives by default:
   _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
   _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
   _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
   _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
-  		   [_LT_ENABLE_FAST_INSTALL])
+		   [_LT_ENABLE_FAST_INSTALL])
+  _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4],
+		   [_LT_WITH_AIX_SONAME([aix])])
   ])
 ])# _LT_SET_OPTIONS
 
@@ -112,7 +114,7 @@
 [_LT_SET_OPTION([LT_INIT], [dlopen])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `dlopen' option into LT_INIT's first parameter.])
+put the 'dlopen' option into LT_INIT's first parameter.])
 ])
 
 dnl aclocal-1.4 backwards compatibility:
@@ -148,7 +150,7 @@
 _LT_SET_OPTION([LT_INIT], [win32-dll])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `win32-dll' option into LT_INIT's first parameter.])
+put the 'win32-dll' option into LT_INIT's first parameter.])
 ])
 
 dnl aclocal-1.4 backwards compatibility:
@@ -157,9 +159,9 @@
 
 # _LT_ENABLE_SHARED([DEFAULT])
 # ----------------------------
-# implement the --enable-shared flag, and supports the `shared' and
-# `disable-shared' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+# implement the --enable-shared flag, and supports the 'shared' and
+# 'disable-shared' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
 m4_define([_LT_ENABLE_SHARED],
 [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
 AC_ARG_ENABLE([shared],
@@ -172,14 +174,14 @@
     *)
       enable_shared=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for pkg in $enableval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$pkg" = "X$p"; then
 	  enable_shared=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac],
     [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
@@ -211,9 +213,9 @@
 
 # _LT_ENABLE_STATIC([DEFAULT])
 # ----------------------------
-# implement the --enable-static flag, and support the `static' and
-# `disable-static' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+# implement the --enable-static flag, and support the 'static' and
+# 'disable-static' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
 m4_define([_LT_ENABLE_STATIC],
 [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
 AC_ARG_ENABLE([static],
@@ -226,14 +228,14 @@
     *)
      enable_static=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for pkg in $enableval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$pkg" = "X$p"; then
 	  enable_static=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac],
     [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
@@ -265,9 +267,9 @@
 
 # _LT_ENABLE_FAST_INSTALL([DEFAULT])
 # ----------------------------------
-# implement the --enable-fast-install flag, and support the `fast-install'
-# and `disable-fast-install' LT_INIT options.
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+# implement the --enable-fast-install flag, and support the 'fast-install'
+# and 'disable-fast-install' LT_INIT options.
+# DEFAULT is either 'yes' or 'no'.  If omitted, it defaults to 'yes'.
 m4_define([_LT_ENABLE_FAST_INSTALL],
 [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
 AC_ARG_ENABLE([fast-install],
@@ -280,14 +282,14 @@
     *)
       enable_fast_install=no
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for pkg in $enableval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$pkg" = "X$p"; then
 	  enable_fast_install=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac],
     [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
@@ -304,14 +306,14 @@
 [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `fast-install' option into LT_INIT's first parameter.])
+the 'fast-install' option into LT_INIT's first parameter.])
 ])
 
 AU_DEFUN([AC_DISABLE_FAST_INSTALL],
 [_LT_SET_OPTION([LT_INIT], [disable-fast-install])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-fast-install' option into LT_INIT's first parameter.])
+the 'disable-fast-install' option into LT_INIT's first parameter.])
 ])
 
 dnl aclocal-1.4 backwards compatibility:
@@ -319,11 +321,64 @@
 dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
 
 
+# _LT_WITH_AIX_SONAME([DEFAULT])
+# ----------------------------------
+# implement the --with-aix-soname flag, and support the `aix-soname=aix'
+# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT
+# is either `aix', `both' or `svr4'.  If omitted, it defaults to `aix'.
+m4_define([_LT_WITH_AIX_SONAME],
+[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl
+shared_archive_member_spec=
+case $host,$enable_shared in
+power*-*-aix[[5-9]]*,yes)
+  AC_MSG_CHECKING([which variant of shared library versioning to provide])
+  AC_ARG_WITH([aix-soname],
+    [AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
+      [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])],
+    [case $withval in
+    aix|svr4|both)
+      ;;
+    *)
+      AC_MSG_ERROR([Unknown argument to --with-aix-soname])
+      ;;
+    esac
+    lt_cv_with_aix_soname=$with_aix_soname],
+    [AC_CACHE_VAL([lt_cv_with_aix_soname],
+      [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT)
+    with_aix_soname=$lt_cv_with_aix_soname])
+  AC_MSG_RESULT([$with_aix_soname])
+  if test aix != "$with_aix_soname"; then
+    # For the AIX way of multilib, we name the shared archive member
+    # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
+    # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File.
+    # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag,
+    # the AIX toolchain works better with OBJECT_MODE set (default 32).
+    if test 64 = "${OBJECT_MODE-32}"; then
+      shared_archive_member_spec=shr_64
+    else
+      shared_archive_member_spec=shr
+    fi
+  fi
+  ;;
+*)
+  with_aix_soname=aix
+  ;;
+esac
+
+_LT_DECL([], [shared_archive_member_spec], [0],
+    [Shared archive member basename, for filename based shared library versioning on AIX])dnl
+])# _LT_WITH_AIX_SONAME
+
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])])
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])])
+LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])])
+
+
 # _LT_WITH_PIC([MODE])
 # --------------------
-# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# implement the --with-pic flag, and support the 'pic-only' and 'no-pic'
 # LT_INIT options.
-# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+# MODE is either 'yes' or 'no'.  If omitted, it defaults to 'both'.
 m4_define([_LT_WITH_PIC],
 [AC_ARG_WITH([pic],
     [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
@@ -334,19 +389,17 @@
     *)
       pic_mode=default
       # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR,
       for lt_pkg in $withval; do
-	IFS="$lt_save_ifs"
+	IFS=$lt_save_ifs
 	if test "X$lt_pkg" = "X$lt_p"; then
 	  pic_mode=yes
 	fi
       done
-      IFS="$lt_save_ifs"
+      IFS=$lt_save_ifs
       ;;
     esac],
-    [pic_mode=default])
-
-test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+    [pic_mode=m4_default([$1], [default])])
 
 _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
 ])# _LT_WITH_PIC
@@ -359,7 +412,7 @@
 [_LT_SET_OPTION([LT_INIT], [pic-only])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `pic-only' option into LT_INIT's first parameter.])
+put the 'pic-only' option into LT_INIT's first parameter.])
 ])
 
 dnl aclocal-1.4 backwards compatibility:
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
index 9000a05..48bc934 100644
--- a/m4/ltsugar.m4
+++ b/m4/ltsugar.m4
@@ -1,6 +1,7 @@
 # ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
 #
-# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
+# Foundation, Inc.
 # Written by Gary V. Vaughan, 2004
 #
 # This file is free software; the Free Software Foundation gives
@@ -33,7 +34,7 @@
 # ------------
 # Manipulate m4 lists.
 # These macros are necessary as long as will still need to support
-# Autoconf-2.59 which quotes differently.
+# Autoconf-2.59, which quotes differently.
 m4_define([lt_car], [[$1]])
 m4_define([lt_cdr],
 [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
@@ -44,7 +45,7 @@
 
 # lt_append(MACRO-NAME, STRING, [SEPARATOR])
 # ------------------------------------------
-# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'.
 # Note that neither SEPARATOR nor STRING are expanded; they are appended
 # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
 # No SEPARATOR is output if MACRO-NAME was previously undefined (different
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
index 07a8602..fa04b52 100644
--- a/m4/ltversion.m4
+++ b/m4/ltversion.m4
@@ -1,6 +1,6 @@
 # ltversion.m4 -- version numbers			-*- Autoconf -*-
 #
-#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc.
 #   Written by Scott James Remnant, 2004
 #
 # This file is free software; the Free Software Foundation gives
@@ -9,15 +9,15 @@
 
 # @configure_input@
 
-# serial 3337 ltversion.m4
+# serial 4179 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.4.2])
-m4_define([LT_PACKAGE_REVISION], [1.3337])
+m4_define([LT_PACKAGE_VERSION], [2.4.6])
+m4_define([LT_PACKAGE_REVISION], [2.4.6])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.2'
-macro_revision='1.3337'
+[macro_version='2.4.6'
+macro_revision='2.4.6'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
index c573da9..c6b26f8 100644
--- a/m4/lt~obsolete.m4
+++ b/m4/lt~obsolete.m4
@@ -1,6 +1,7 @@
 # lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
 #
-#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+#   Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
+#   Foundation, Inc.
 #   Written by Scott James Remnant, 2004.
 #
 # This file is free software; the Free Software Foundation gives
@@ -11,7 +12,7 @@
 
 # These exist entirely to fool aclocal when bootstrapping libtool.
 #
-# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN),
 # which have later been changed to m4_define as they aren't part of the
 # exported API, or moved to Autoconf or Automake where they belong.
 #
@@ -25,7 +26,7 @@
 # included after everything else.  This provides aclocal with the
 # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
 # because those macros already exist, or will be overwritten later.
-# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
 #
 # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
 # Yes, that means every name once taken will need to remain here until
diff --git a/pkgconfig/Makefile.am b/pkgconfig/Makefile.am
index c75ec36..88c7e52 100644
--- a/pkgconfig/Makefile.am
+++ b/pkgconfig/Makefile.am
@@ -5,14 +5,20 @@
 	gstreamer-codecparsers-@GST_API_VERSION@.pc \
 	gstreamer-insertbin-@GST_API_VERSION@.pc \
 	gstreamer-mpegts-@GST_API_VERSION@.pc \
-	gstreamer-player-@GST_API_VERSION@.pc
+	gstreamer-player-@GST_API_VERSION@.pc \
+	gstreamer-bad-base-@GST_API_VERSION@.pc \
+	gstreamer-bad-audio-@GST_API_VERSION@.pc \
+	gstreamer-bad-video-@GST_API_VERSION@.pc
 
 pcverfiles_uninstalled = \
 	gstreamer-plugins-bad-@GST_API_VERSION@-uninstalled.pc \
 	gstreamer-codecparsers-@GST_API_VERSION@-uninstalled.pc \
 	gstreamer-insertbin-@GST_API_VERSION@-uninstalled.pc \
 	gstreamer-mpegts-@GST_API_VERSION@-uninstalled.pc \
-	gstreamer-player-@GST_API_VERSION@-uninstalled.pc
+	gstreamer-player-@GST_API_VERSION@-uninstalled.pc \
+	gstreamer-bad-base-@GST_API_VERSION@-uninstalled.pc \
+	gstreamer-bad-audio-@GST_API_VERSION@-uninstalled.pc \
+	gstreamer-bad-video-@GST_API_VERSION@-uninstalled.pc
 
 if HAVE_GST_GL
 pcverfiles += gstreamer-gl-@GST_API_VERSION@.pc
@@ -41,7 +47,10 @@
            gstreamer-gl.pc.in gstreamer-gl-uninstalled.pc.in \
            gstreamer-insertbin.pc.in gstreamer-insertbin-uninstalled.pc.in \
            gstreamer-mpegts.pc.in gstreamer-mpegts-uninstalled.pc.in \
-           gstreamer-player.pc.in gstreamer-player-uninstalled.pc.in
+           gstreamer-player.pc.in gstreamer-player-uninstalled.pc.in \
+           gstreamer-bad-audio.pc.in gstreamer-bad-audio-uninstalled.pc.in \
+           gstreamer-bad-video.pc.in gstreamer-bad-video-uninstalled.pc.in \
+           gstreamer-bad-base.pc.in gstreamer-bad-base-uninstalled.pc.in
 
 DISTCLEANFILES = $(pcinfiles:.in=)
 EXTRA_DIST = $(pcinfiles)
diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in
index d495ae9..571e119 100644
--- a/pkgconfig/Makefile.in
+++ b/pkgconfig/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -141,7 +140,8 @@
 	gstreamer-player-uninstalled.pc gstreamer-wayland.pc \
 	gstreamer-wayland-uninstalled.pc gstreamer-bad-base.pc \
 	gstreamer-bad-base-uninstalled.pc gstreamer-bad-video.pc \
-	gstreamer-bad-video-uninstalled.pc
+	gstreamer-bad-video-uninstalled.pc gstreamer-bad-audio.pc \
+	gstreamer-bad-audio-uninstalled.pc
 CONFIG_CLEAN_VPATH_FILES =
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
@@ -193,6 +193,8 @@
 DATA = $(pkgconfig_DATA)
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 am__DIST_COMMON = $(srcdir)/Makefile.in \
+	$(srcdir)/gstreamer-bad-audio-uninstalled.pc.in \
+	$(srcdir)/gstreamer-bad-audio.pc.in \
 	$(srcdir)/gstreamer-bad-base-uninstalled.pc.in \
 	$(srcdir)/gstreamer-bad-base.pc.in \
 	$(srcdir)/gstreamer-bad-video-uninstalled.pc.in \
@@ -296,7 +298,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -318,7 +319,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -340,9 +340,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -504,6 +501,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -517,8 +515,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -605,8 +601,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -658,6 +652,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -678,6 +673,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -715,7 +712,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -761,13 +757,19 @@
 	gstreamer-codecparsers-@GST_API_VERSION@.pc \
 	gstreamer-insertbin-@GST_API_VERSION@.pc \
 	gstreamer-mpegts-@GST_API_VERSION@.pc \
-	gstreamer-player-@GST_API_VERSION@.pc $(am__append_1)
+	gstreamer-player-@GST_API_VERSION@.pc \
+	gstreamer-bad-base-@GST_API_VERSION@.pc \
+	gstreamer-bad-audio-@GST_API_VERSION@.pc \
+	gstreamer-bad-video-@GST_API_VERSION@.pc $(am__append_1)
 pcverfiles_uninstalled =  \
 	gstreamer-plugins-bad-@GST_API_VERSION@-uninstalled.pc \
 	gstreamer-codecparsers-@GST_API_VERSION@-uninstalled.pc \
 	gstreamer-insertbin-@GST_API_VERSION@-uninstalled.pc \
 	gstreamer-mpegts-@GST_API_VERSION@-uninstalled.pc \
 	gstreamer-player-@GST_API_VERSION@-uninstalled.pc \
+	gstreamer-bad-base-@GST_API_VERSION@-uninstalled.pc \
+	gstreamer-bad-audio-@GST_API_VERSION@-uninstalled.pc \
+	gstreamer-bad-video-@GST_API_VERSION@-uninstalled.pc \
 	$(am__append_2)
 cp_verbose = $(cp_verbose_$(V))
 cp_verbose_ = $(cp_verbose_$(AM_DEFAULT_VERBOSITY))
@@ -781,7 +783,10 @@
            gstreamer-gl.pc.in gstreamer-gl-uninstalled.pc.in \
            gstreamer-insertbin.pc.in gstreamer-insertbin-uninstalled.pc.in \
            gstreamer-mpegts.pc.in gstreamer-mpegts-uninstalled.pc.in \
-           gstreamer-player.pc.in gstreamer-player-uninstalled.pc.in
+           gstreamer-player.pc.in gstreamer-player-uninstalled.pc.in \
+           gstreamer-bad-audio.pc.in gstreamer-bad-audio-uninstalled.pc.in \
+           gstreamer-bad-video.pc.in gstreamer-bad-video-uninstalled.pc.in \
+           gstreamer-bad-base.pc.in gstreamer-bad-base-uninstalled.pc.in
 
 DISTCLEANFILES = $(pcinfiles:.in=)
 EXTRA_DIST = $(pcinfiles)
@@ -853,6 +858,10 @@
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 gstreamer-bad-video-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/gstreamer-bad-video-uninstalled.pc.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+gstreamer-bad-audio.pc: $(top_builddir)/config.status $(srcdir)/gstreamer-bad-audio.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+gstreamer-bad-audio-uninstalled.pc: $(top_builddir)/config.status $(srcdir)/gstreamer-bad-audio-uninstalled.pc.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 
 mostlyclean-libtool:
 	-rm -f *.lo
diff --git a/pkgconfig/gstreamer-bad-audio-uninstalled.pc.in b/pkgconfig/gstreamer-bad-audio-uninstalled.pc.in
new file mode 100644
index 0000000..6b95364
--- /dev/null
+++ b/pkgconfig/gstreamer-bad-audio-uninstalled.pc.in
@@ -0,0 +1,12 @@
+prefix=
+exec_prefix=
+libdir=@abs_top_builddir@/gst-libs/gst/audio/.libs
+includedir=@abs_top_srcdir@/gst-libs
+
+Name: GStreamer bad audio library, uninstalled
+Description: Bad audio library for GStreamer, Not Installed
+Version: @VERSION@
+Requires: gstreamer-@GST_API_VERSION@ gstreamer-bad-base-@GST_API_VERSION@
+
+Libs: -L${libdir} -lgstbadaudio-@GST_API_VERSION@
+Cflags: -I@abs_top_srcdir@/gst-libs -I@abs_top_builddir@/gst-libs
diff --git a/pkgconfig/gstreamer-bad-audio.pc.in b/pkgconfig/gstreamer-bad-audio.pc.in
new file mode 100644
index 0000000..be90d67
--- /dev/null
+++ b/pkgconfig/gstreamer-bad-audio.pc.in
@@ -0,0 +1,13 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@/gstreamer-@GST_API_VERSION@
+pluginsdir=@libdir@/gstreamer-@GST_API_VERSION@
+
+Name: GStreamer bad audio library, uninstalled
+Description: Bad audio library for GStreamer elements, Not Installed
+Version: @VERSION@
+Requires: gstreamer-@GST_API_VERSION@ gstreamer-bad-base-@GST_API_VERSION@
+
+Libs: -L${libdir} ${libdir}/libgstbadaudio-@GST_API_VERSION@.la
+Cflags: -I${includedir}
diff --git a/pkgconfig/gstreamer-bad-base-uninstalled.pc.in b/pkgconfig/gstreamer-bad-base-uninstalled.pc.in
index 560eb13..e11a01b 100644
--- a/pkgconfig/gstreamer-bad-base-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-bad-base-uninstalled.pc.in
@@ -1,15 +1,14 @@
 prefix=
 exec_prefix=
-libdir=${pcfiledir}/../gst-libs/gst/base
-includedir=${pcfiledir}/../gst-libs
-pluginsdir=${pcfiledir}/..
+libdir=@abs_top_builddir@/gst-libs/gst/base/.libs
+includedir=@abs_top_builddir@/gst-libs
+girdir=@abs_top_builddir@/gst-libs/gst/base
+typelibdir=@abs_top_builddir@/gst-libs/gst/base
 
 Name: GStreamer bad base classes, uninstalled
 Description: Bad base classes for GStreamer elements, Not Installed
 Version: @VERSION@
 Requires: gstreamer-@GST_API_VERSION@
 
-Libs: -L${libdir} ${libdir}/libgstbadbase-@GST_API_VERSION@.la @BADBASE_LIBS@
-Cflags: -I${includedir} -I@srcdir@/.. @BADBASE_CFLAGS@
-
-libraries=badbase
+Libs: -L${libdir} -lgstbadbase-@GST_API_VERSION@
+Cflags: -I@abs_top_srcdir@/gst-libs -I@abs_top_builddir@/gst-libs
diff --git a/pkgconfig/gstreamer-bad-base.pc.in b/pkgconfig/gstreamer-bad-base.pc.in
index a03013b..10afe0e 100644
--- a/pkgconfig/gstreamer-bad-base.pc.in
+++ b/pkgconfig/gstreamer-bad-base.pc.in
@@ -2,14 +2,15 @@
 exec_prefix=@exec_prefix@
 libdir=@libdir@
 includedir=@includedir@/gstreamer-@GST_API_VERSION@
-pluginsdir=@libdir@/gstreamer-@GST_API_VERSION@
+datarootdir=${prefix}/share
+datadir=${datarootdir}
+girdir=${datadir}/gir-1.0
+typelibdir=${libdir}/girepository-1.0
 
-Name: GStreamer bad base classes, uninstalled
-Description: Bad base classes for GStreamer elements, Not Installed
+Name: GStreamer bad base classes
+Description: Bad base classes for GStreamer elements
 Version: @VERSION@
 Requires: gstreamer-@GST_API_VERSION@
 
-Libs: -L${libdir} ${libdir}/libgstbadbase-@GST_API_VERSION@.la @BADBASE_LIBS@
-Cflags: -I${includedir} -I@srcdir@/.. @BADBASE_CFLAGS@
-
-libraries=badbase
+Libs: -L${libdir} ${libdir}/libgstbadbase-@GST_API_VERSION@.la
+Cflags: -I${includedir}
diff --git a/pkgconfig/gstreamer-bad-video-uninstalled.pc.in b/pkgconfig/gstreamer-bad-video-uninstalled.pc.in
index 6a2a206..f9ae7bf 100644
--- a/pkgconfig/gstreamer-bad-video-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-bad-video-uninstalled.pc.in
@@ -1,15 +1,14 @@
 prefix=
 exec_prefix=
-libdir=${pcfiledir}/../gst-libs/gst/video
-includedir=${pcfiledir}/../gst-libs
-pluginsdir=${pcfiledir}/..
+libdir=@abs_top_builddir@/gst-libs/gst/video/.libs
+includedir=@abs_top_builddir@/gst-libs
+girdir=@abs_top_builddir@/gst-libs/gst/video
+typelibdir=@abs_top_builddir@/gst-libs/gst/video
 
 Name: GStreamer bad video library, uninstalled
-Description: Bad video library for GStreamer, Not Installed
+Description: Bad video library for GStreamer elements, Not Installed
 Version: @VERSION@
-Requires: gstreamer-@GST_API_VERSION@
+Requires: gstreamer-@GST_API_VERSION@ gstreamer-bad-base-@GST_API_VERSION@
 
-Libs: -L${libdir} ${libdir}/libgstbadvideo-@GST_API_VERSION@.la @BADBASE_LIBS@
-Cflags: -I${includedir} -I@srcdir@/.. @BADBASE_CFLAGS@
-
-libraries=badvideo
+Libs: -L${libdir} -lgstbadvideo-@GST_API_VERSION@
+Cflags: -I@abs_top_srcdir@/gst-libs -I@abs_top_builddir@/gst-libs
diff --git a/pkgconfig/gstreamer-bad-video.pc.in b/pkgconfig/gstreamer-bad-video.pc.in
index 4fdf889..40127be 100644
--- a/pkgconfig/gstreamer-bad-video.pc.in
+++ b/pkgconfig/gstreamer-bad-video.pc.in
@@ -2,14 +2,15 @@
 exec_prefix=@exec_prefix@
 libdir=@libdir@
 includedir=@includedir@/gstreamer-@GST_API_VERSION@
-pluginsdir=@libdir@/gstreamer-@GST_API_VERSION@
+datarootdir=${prefix}/share
+datadir=${datarootdir}
+girdir=${datadir}/gir-1.0
+typelibdir=${libdir}/girepository-1.0
 
-Name: GStreamer bad video library, uninstalled
-Description: Bad video library for GStreamer elements, Not Installed
+Name: GStreamer bad video library
+Description: Bad video library for GStreamer elements
 Version: @VERSION@
-Requires: gstreamer-@GST_API_VERSION@
+Requires: gstreamer-@GST_API_VERSION@ gstreamer-bad-base-@GST_API_VERSION@
 
-Libs: -L${libdir} ${libdir}/libgstbadvideo-@GST_API_VERSION@.la @BADBASE_LIBS@
-Cflags: -I${includedir} -I@srcdir@/.. @BADBASE_CFLAGS@
-
-libraries=badvideo
+Libs: -L${libdir} ${libdir}/libgstbadvideo-@GST_API_VERSION@.la
+Cflags: -I${includedir}
diff --git a/pkgconfig/gstreamer-codecparsers-uninstalled.pc.in b/pkgconfig/gstreamer-codecparsers-uninstalled.pc.in
index d1bb9b0..71ed771 100644
--- a/pkgconfig/gstreamer-codecparsers-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-codecparsers-uninstalled.pc.in
@@ -1,12 +1,12 @@
 prefix=
 exec_prefix=
-libdir=${pcfiledir}/../gst-libs/gst/codecparsers
+libdir=${pcfiledir}/../gst-libs/gst/codecparsers/.libs
 includedir=${pcfiledir}/../gst-libs
 
 Name: GStreamer codec parsers, Uninstalled
 Description: Bitstream parsers for GStreamer elements, uninstalled
 Requires: gstreamer-@GST_API_VERSION@ gstreamer-base-@GST_API_VERSION@
 Version: @VERSION@
-Libs: -L${libdir} ${libdir}/libgstcodecparsers-@GST_API_VERSION@.la
+Libs: -L${libdir} -lgstcodecparsers-@GST_API_VERSION@
 Cflags: -I${includedir}
 
diff --git a/pkgconfig/gstreamer-gl-uninstalled.pc.in b/pkgconfig/gstreamer-gl-uninstalled.pc.in
index 76eefb9..dac4cda 100644
--- a/pkgconfig/gstreamer-gl-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-gl-uninstalled.pc.in
@@ -1,15 +1,15 @@
 prefix=
 exec_prefix=
-libdir=${pcfiledir}/../gst-libs/gst/gl
-includedir=${pcfiledir}/../gst-libs
-pluginsdir=${pcfiledir}/..
+libdir=@abs_top_builddir@/gst-libs/gst/gl/.libs
+includedir=@abs_top_builddir@/gst-libs
+girdir=@abs_top_builddir@/gst-libs/gst/base
+typelibdir=@abs_top_builddir@/gst-libs/gst/base
 
 Name: GStreamer OpenGL Plugins Libraries, Uninstalled
 Description: Streaming media framework, OpenGL plugins libraries, uninstalled
 Version: @VERSION@
-Requires: gstreamer-@GST_API_VERSION@
+Requires: gstreamer-base-@GST_API_VERSION@ gstreamer-@GST_API_VERSION@
 
-Libs: -L${libdir} ${libdir}/libgstgl-@GST_API_VERSION@.la @GL_LIBS@
-Cflags: -I${includedir} -I@srcdir@/.. @GL_CFLAGS@
+Libs: -L${libdir} -lgstgl-@GST_API_VERSION@ @GL_LIBS@
+Cflags: -I@abs_top_srcdir@/gst-libs -I@abs_top_builddir@/gst-libs
 
-libraries=gl
diff --git a/pkgconfig/gstreamer-gl.pc.in b/pkgconfig/gstreamer-gl.pc.in
index 1b98762..5589e2a 100644
--- a/pkgconfig/gstreamer-gl.pc.in
+++ b/pkgconfig/gstreamer-gl.pc.in
@@ -6,8 +6,8 @@
 
 Name: GStreamer OpenGL Plugins Libraries
 Description: Streaming media framework, OpenGL plugins libraries
-Requires: gstreamer-@GST_API_VERSION@ gstreamer-base-@GST_API_VERSION@
 Version: @VERSION@
-Libs: -L${libdir} -lgstgl-@GST_API_VERSION@ @GL_LIBS@
-Cflags: -I${includedir} -I${libdir}/gstreamer-@GST_API_VERSION@/include @GL_CFLAGS@
+Requires: gstreamer-base-@GST_API_VERSION@ gstreamer-@GST_API_VERSION@
 
+Libs: -L${libdir} -lgstgl-@GST_API_VERSION@ @GL_LIBS@
+Cflags: -I${includedir} @GL_CFLAGS@
diff --git a/pkgconfig/gstreamer-insertbin-uninstalled.pc.in b/pkgconfig/gstreamer-insertbin-uninstalled.pc.in
index 0a01e79..1a535aa 100644
--- a/pkgconfig/gstreamer-insertbin-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-insertbin-uninstalled.pc.in
@@ -1,12 +1,12 @@
 prefix=
 exec_prefix=
-libdir=${pcfiledir}/../gst-libs/gst/insertbin
+libdir=${pcfiledir}/../gst-libs/gst/insertbin/.libs
 includedir=${pcfiledir}/../gst-libs
 
 Name: GStreamer Insert Bin, Uninstalled
 Description: Bin to automatically and insertally link elements, uninstalled
 Requires: gstreamer-@GST_API_VERSION@
 Version: @VERSION@
-Libs: -L${libdir} ${libdir}/libgstinsertbin-@GST_API_VERSION@.la
+Libs: -L${libdir} -lgstinsertbin-@GST_API_VERSION@
 Cflags: -I${includedir}
 
diff --git a/pkgconfig/gstreamer-mpegts-uninstalled.pc.in b/pkgconfig/gstreamer-mpegts-uninstalled.pc.in
index e9aa261..179996c 100644
--- a/pkgconfig/gstreamer-mpegts-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-mpegts-uninstalled.pc.in
@@ -1,12 +1,12 @@
 prefix=
 exec_prefix=
-libdir=${pcfiledir}/../gst-libs/gst/mpegts
+libdir=${pcfiledir}/../gst-libs/gst/mpegts/.libs
 includedir=${pcfiledir}/../gst-libs
 
 Name: GStreamer MPEG-TS, Uninstalled
 Description: GStreamer MPEG-TS support, uninstalled
 Requires: gstreamer-@GST_API_VERSION@ gstreamer-base-@GST_API_VERSION@
 Version: @VERSION@
-Libs: -L${libdir} ${libdir}/libgstmpegts-@GST_API_VERSION@.la
+Libs: -L${libdir} -lgstmpegts-@GST_API_VERSION@
 Cflags: -I${includedir}
 
diff --git a/pkgconfig/gstreamer-player-uninstalled.pc.in b/pkgconfig/gstreamer-player-uninstalled.pc.in
index 82e6ee6..5a495f4 100644
--- a/pkgconfig/gstreamer-player-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-player-uninstalled.pc.in
@@ -1,12 +1,12 @@
 prefix=
 exec_prefix=
-libdir=${pcfiledir}/../gst-libs/gst/player
+libdir=${pcfiledir}/../gst-libs/gst/player/.libs
 includedir=${pcfiledir}/../gst-libs
 
 Name: GStreamer Player, Uninstalled
 Description: GStreamer Player convenience library, uninstalled
 Requires: gstreamer-@GST_API_VERSION@
 Version: @VERSION@
-Libs: -L${libdir} ${libdir}/libgstplayer-@GST_API_VERSION@.la
+Libs: -L${libdir} -lgstplayer-@GST_API_VERSION@
 Cflags: -I${includedir}
 
diff --git a/pkgconfig/gstreamer-plugins-bad-uninstalled.pc.in b/pkgconfig/gstreamer-plugins-bad-uninstalled.pc.in
index 6fcf773..df9a9c5 100644
--- a/pkgconfig/gstreamer-plugins-bad-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-plugins-bad-uninstalled.pc.in
@@ -10,5 +10,5 @@
 Description: Streaming media framework, bad plugins libraries, uninstalled
 Version: @VERSION@
 Requires: gstreamer-@GST_API_VERSION@
-Libs: -L@abs_top_builddir@/gst-libs/gst/basecamerabinsrc -L@abs_top_builddir@/gst-libs/gst/codecparsers -L@abs_top_builddir@/gst-libs/gst/egl -L@abs_top_builddir@/gst-libs/gst/insertbin -L@abs_top_builddir@/gst-libs/gst/interfaces -L@abs_top_builddir@/gst-libs/gst/mpegts -L@abs_top_builddir@/gst-libs/gst/signalprocessor -L@abs_top_builddir@/gst-libs/gst/video
+Libs: -L@abs_top_builddir@/gst-libs/gst/audio/.libs -L@abs_top_builddir@/gst-libs/gst/basecamerabinsrc/.libs -L@abs_top_builddir@/gst-libs/gst/codecparsers/.libs -L@abs_top_builddir@/gst-libs/gst/gl/.libs -L@abs_top_builddir@/gst-libs/gst/insertbin/.libs -L@abs_top_builddir@/gst-libs/gst/interfaces/.libs -L@abs_top_builddir@/gst-libs/gst/mpegts/.libs -L@abs_top_builddir@/gst-libs/gst/player/.libs -L@abs_top_builddir@/gst-libs/gst/signalprocessor/.libs -L@abs_top_builddir@/gst-libs/gst/video/.libs -L@abs_top_builddir@/gst-libs/gst/wayland/.libs
 Cflags: -I@abs_top_srcdir@/gst-libs -I@abs_top_builddir@/gst-libs
diff --git a/pkgconfig/gstreamer-wayland-uninstalled.pc.in b/pkgconfig/gstreamer-wayland-uninstalled.pc.in
index fe01de6..80d6e1b 100644
--- a/pkgconfig/gstreamer-wayland-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-wayland-uninstalled.pc.in
@@ -1,12 +1,12 @@
 prefix=
 exec_prefix=
-libdir=${pcfiledir}/../gst-libs/gst/wayland
+libdir=${pcfiledir}/../gst-libs/gst/wayland/.libs
 includedir=${pcfiledir}/../gst-libs
 
 Name: GStreamer Wayland, Uninstalled
 Description: GStreamer Wayland support, uninstalled
 Requires: gstreamer-@GST_API_VERSION@ gstreamer-video-@GST_API_VERSION@
 Version: @VERSION@
-Libs: -L${libdir} ${libdir}/libgstwayland-@GST_API_VERSION@.la
+Libs: -L${libdir} -lgstwayland-@GST_API_VERSION@
 Cflags: -I${includedir}
 
diff --git a/po/POTFILES.in b/po/POTFILES.in
index ddfa7d0..03d603f 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,6 +1,5 @@
 ext/dash/gstdashdemux.c
 ext/gl/gstgltestsrc.c
-ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in
 ext/opencv/gsttemplatematch.cpp
 ext/resindvd/resindvdsrc.c
 ext/smoothstreaming/gstmssdemux.c
diff --git a/po/af.gmo b/po/af.gmo
index 87fe849..b99fec0 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index d331c90..cae9a7b 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -19,95 +19,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/az.gmo b/po/az.gmo
index 195e8df..43a8bbd 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index 5df1b5e..5ef1a69 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -20,95 +20,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/bg.gmo b/po/bg.gmo
index fed9ab7..6a42045 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 15a8265..bcd454e 100644
--- a/po/bg.po
+++ b/po/bg.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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\n"
 "PO-Revision-Date: 2011-04-26 22:30+0300\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
@@ -21,95 +21,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/ca.gmo b/po/ca.gmo
index a1233e0..22c39f9 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index fde5beb..108ebf4 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -22,95 +22,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/cs.gmo b/po/cs.gmo
index ed35eed..ec219a0 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 4f8e12d..0501f5e 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -25,113 +25,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "formát nebyl vyjednán před získáním funkce"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "výchozí zvukový cíl GStreamer pro zvukové události"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer umí přehrávat zvuk pomocí mnoha výstupních prvků. Možné volby jsou "
-"osssink, pulsesink a alsasink. Zvukovým cílem může být namísto jednoho "
-"elementu i částečná roura."
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr "popis výchozího zvukového cíle pro zvukové události GStreamer"
-
-msgid "Describes the selected audiosink element."
-msgstr "Popisuje vybraný element sloužící jako cíl pro zvuk."
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "výchozí zvukový cíl GStreamer pro hlasové konference a videokonference"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-"popis výchozího zvukového cíle GStreamer pro hlasové konference a "
-"videokonference"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "výchozí zvukový cíl GStreamer pro hudbu a filmy"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr "popis výchozího zvukového cíle GStreamer pro hudbu a filmy"
-
-msgid "default GStreamer videosink"
-msgstr "výchozí cíl videa GStreamer"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"GStreamer umí přehrávat video pomocí mnoha výstupních prvků. Možné volby "
-"jsou xvimagesink, ximagesink, sdlvideosink a aasink. Cílem videa může být "
-"namísto právě jednoho elementu i částečná roura."
-
-msgid "description for default GStreamer videosink"
-msgstr "popis výchozího cíle videa GStreamer"
-
-msgid "Describes the selected videosink element."
-msgstr "Popisuje vybraný element sloužící jako cíl pro video."
-
-msgid "default GStreamer audiosrc"
-msgstr "výchozí zdroj zvuku GStreamer"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer umí nahrávat zvuk pomocí mnoha vstupních prvků. Možné volby jsou "
-"osssrc, pulsesrc a alsasrc. Zvukovým zdrojem může být namísto právě jednoho "
-"elementu i částečná roura."
-
-msgid "description for default GStreamer audiosrc"
-msgstr "popis pro výchozí zdroj zvuku GStreamer"
-
-msgid "Describes the selected audiosrc element."
-msgstr "Popisuje vybraný element sloužící jako zdroj zvuku."
-
-msgid "default GStreamer videosrc"
-msgstr "výchozí zdroj videa GStreamer"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"GStreamer umí nahrávat video pomocí mnoha vstupních prvků. Možné volby jsou "
-"v4lsrc, v4l2src a videotestsrc. Zdrojem videa může být namísto právě jednoho "
-"elementu i částečná roura."
-
-msgid "description for default GStreamer videosrc"
-msgstr "popis pro výchozí zdroj videa GStreamer"
-
-msgid "Describes the selected videosrc element."
-msgstr "Popisuje vybraný element sloužící jako zdroj videa."
-
-msgid "default GStreamer visualization"
-msgstr "výchozí vizualizace GStreamer"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"GStreamer umí do roury vložit vizualizační zásuvný modul, aby prováděl změny "
-"zvukových proudů ve snímcích videa. Možné volby jsou goom, goom2k1 a "
-"synaesthesia. Vizualizačním zásuvným modulem může být namísto právě jednoho "
-"elementu i částečná roura."
-
-msgid "description for default GStreamer visualization"
-msgstr "popis pro výchozí vizualizaci GStreamer"
-
-msgid "Describes the selected visualization element."
-msgstr "Popisuje vybraný vizualizační element."
-
 msgid "OpenCV failed to load template image"
 msgstr "OpenCV selhalo při načítání obrazu šablony"
 
@@ -251,3 +144,111 @@
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Nelze najít podrobnosti ke kanálu DVB %s"
+
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "výchozí zvukový cíl GStreamer pro zvukové události"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer umí přehrávat zvuk pomocí mnoha výstupních prvků. Možné volby "
+#~ "jsou osssink, pulsesink a alsasink. Zvukovým cílem může být namísto "
+#~ "jednoho elementu i částečná roura."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr "popis výchozího zvukového cíle pro zvukové události GStreamer"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "Popisuje vybraný element sloužící jako cíl pro zvuk."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "výchozí zvukový cíl GStreamer pro hlasové konference a videokonference"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "popis výchozího zvukového cíle GStreamer pro hlasové konference a "
+#~ "videokonference"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "výchozí zvukový cíl GStreamer pro hudbu a filmy"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr "popis výchozího zvukového cíle GStreamer pro hudbu a filmy"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "výchozí cíl videa GStreamer"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer umí přehrávat video pomocí mnoha výstupních prvků. Možné volby "
+#~ "jsou xvimagesink, ximagesink, sdlvideosink a aasink. Cílem videa může být "
+#~ "namísto právě jednoho elementu i částečná roura."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "popis výchozího cíle videa GStreamer"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Popisuje vybraný element sloužící jako cíl pro video."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "výchozí zdroj zvuku GStreamer"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer umí nahrávat zvuk pomocí mnoha vstupních prvků. Možné volby "
+#~ "jsou osssrc, pulsesrc a alsasrc. Zvukovým zdrojem může být namísto právě "
+#~ "jednoho elementu i částečná roura."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "popis pro výchozí zdroj zvuku GStreamer"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Popisuje vybraný element sloužící jako zdroj zvuku."
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "výchozí zdroj videa GStreamer"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer umí nahrávat video pomocí mnoha vstupních prvků. Možné volby "
+#~ "jsou v4lsrc, v4l2src a videotestsrc. Zdrojem videa může být namísto právě "
+#~ "jednoho elementu i částečná roura."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "popis pro výchozí zdroj videa GStreamer"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Popisuje vybraný element sloužící jako zdroj videa."
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "výchozí vizualizace GStreamer"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "GStreamer umí do roury vložit vizualizační zásuvný modul, aby prováděl "
+#~ "změny zvukových proudů ve snímcích videa. Možné volby jsou goom, goom2k1 "
+#~ "a synaesthesia. Vizualizačním zásuvným modulem může být namísto právě "
+#~ "jednoho elementu i částečná roura."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "popis pro výchozí vizualizaci GStreamer"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Popisuje vybraný vizualizační element."
diff --git a/po/da.gmo b/po/da.gmo
index 662c13f..bfd0636 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 5016f54..c865922 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -20,111 +20,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "format blev ikke forhandlet før hent funktion"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "standardlydkanal for GStreamers lydhændelser"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer kan afspille lyd via et antal udgangselementer. Nogle mulige valg "
-"er osssink, pulsesink og alsasink. Lydudgangen kan være en delvis datakanal "
-"i stedet for bare et element."
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr "beskrivelse af standardlydkanal for GStreamers lydhændelser"
-
-msgid "Describes the selected audiosink element."
-msgstr "Beskriver det valge lydkanalelement."
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "standardlydkanal til GStreamers lyd/video-konference"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "beskrivelse for standardlydkanal til GStreamers lyd/video-konference"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "standardlydkanal til GStreamers musik og film"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr "beskrivelse for standardlydkanal til GStreamers musik og film"
-
-msgid "default GStreamer videosink"
-msgstr "standardlydkanal for GStreamer"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"GStreamer kan afspille video via et antal udgangselementer. Nogle mulige "
-"valg er xvimagesink, ximagesink, sdlvideosink og aasink. Videoudgangen kan "
-"være en delvis datakanal i stedet for bare et element."
-
-msgid "description for default GStreamer videosink"
-msgstr "beskrivelse for standardvideokanal for GStreamer"
-
-msgid "Describes the selected videosink element."
-msgstr "Beskriver den valgte videokanalselement."
-
-msgid "default GStreamer audiosrc"
-msgstr "standardlydoptagelse for GStreamer"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer kan optage lyd via et antal indgangselementer. Nogle mulige valg "
-"er osssrc, pulsesrc og alsasrc. Lydkilden kan være en delvis datakanal i "
-"stedet for bare et element."
-
-msgid "description for default GStreamer audiosrc"
-msgstr "beskrivelse for standardlydoptagelsen til GStreamer"
-
-msgid "Describes the selected audiosrc element."
-msgstr "Beskriver det valgte lydoptagelseselement."
-
-msgid "default GStreamer videosrc"
-msgstr "standardvideooptager for GStreamer"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"GStreamer kan optage video via et antal indgangselementer. Nogle mulige valg "
-"er v4lsrc, v4l2src og videotestsrc. Videokilden kan være en delvis datakanal "
-"i stedet for bare et element."
-
-msgid "description for default GStreamer videosrc"
-msgstr "beskrivelse for standardvideooptageren til GStreamer"
-
-msgid "Describes the selected videosrc element."
-msgstr "Beskriver det valgte videooptagerelement."
-
-msgid "default GStreamer visualization"
-msgstr "Standardvisualisering for GStreamer"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"GStreamer kan placere visualiseringsudvidelsesmoduler i en datakanal for at "
-"transformere lydstrømme i videobilleder. Nogle mulige valg er goom, goom2k1 "
-"og synaesthesia. Visualiseringsudvidelsesmodulerne kan være en delvis "
-"datakanal i stedet for bare et element."
-
-msgid "description for default GStreamer visualization"
-msgstr "beskrivelse for standardvisualisering til GStreamer"
-
-msgid "Describes the selected visualization element."
-msgstr "Beskriver det valgte visualiseringselement."
-
 msgid "OpenCV failed to load template image"
 msgstr "OpenCV mislykkedes i at indlæse skabelonaftryk"
 
@@ -242,6 +137,112 @@
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Kunne ikke finde detaljer for DVB-kanalen %s"
 
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "standardlydkanal for GStreamers lydhændelser"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan afspille lyd via et antal udgangselementer. Nogle mulige "
+#~ "valg er osssink, pulsesink og alsasink. Lydudgangen kan være en delvis "
+#~ "datakanal i stedet for bare et element."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr "beskrivelse af standardlydkanal for GStreamers lydhændelser"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "Beskriver det valge lydkanalelement."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "standardlydkanal til GStreamers lyd/video-konference"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "beskrivelse for standardlydkanal til GStreamers lyd/video-konference"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "standardlydkanal til GStreamers musik og film"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr "beskrivelse for standardlydkanal til GStreamers musik og film"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "standardlydkanal for GStreamer"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan afspille video via et antal udgangselementer. Nogle mulige "
+#~ "valg er xvimagesink, ximagesink, sdlvideosink og aasink. Videoudgangen "
+#~ "kan være en delvis datakanal i stedet for bare et element."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "beskrivelse for standardvideokanal for GStreamer"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Beskriver den valgte videokanalselement."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "standardlydoptagelse for GStreamer"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan optage lyd via et antal indgangselementer. Nogle mulige "
+#~ "valg er osssrc, pulsesrc og alsasrc. Lydkilden kan være en delvis "
+#~ "datakanal i stedet for bare et element."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "beskrivelse for standardlydoptagelsen til GStreamer"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Beskriver det valgte lydoptagelseselement."
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "standardvideooptager for GStreamer"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan optage video via et antal indgangselementer. Nogle mulige "
+#~ "valg er v4lsrc, v4l2src og videotestsrc. Videokilden kan være en delvis "
+#~ "datakanal i stedet for bare et element."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "beskrivelse for standardvideooptageren til GStreamer"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Beskriver det valgte videooptagerelement."
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "Standardvisualisering for GStreamer"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "GStreamer kan placere visualiseringsudvidelsesmoduler i en datakanal for "
+#~ "at transformere lydstrømme i videobilleder. Nogle mulige valg er goom, "
+#~ "goom2k1 og synaesthesia. Visualiseringsudvidelsesmodulerne kan være en "
+#~ "delvis datakanal i stedet for bare et element."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "beskrivelse for standardvisualisering til GStreamer"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Beskriver det valgte visualiseringselement."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Kunne ikke indhente Manifestens adresse"
 
diff --git a/po/de.gmo b/po/de.gmo
index 379f68f..50fe833 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 7be2b92..7c95651 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -22,118 +22,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "das Format wurde vor der get-Funktion nicht ausgehandelt"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "Voreingestellte GStreamer Tonereignis-Audioziel"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer kann Ton mit einer beliebigen Anzahl an Ausgabeelementen "
-"wiedergeben. Einige Wahlmöglichkeiten sind »osssink«, »pulsesink« und "
-"»alsasink«. Das Audioziel kann eine teilweise Weiterleitung anstelle nur "
-"eines einzigen Elements sein."
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr "Beschreibung des voreingestellten GStreamer Tonereignis-Audioziel"
-
-msgid "Describes the selected audiosink element."
-msgstr "Beschreibt das gewählte Audioziel-Element."
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "Voreingestelltes GStreamer-Audioziel für Ton- und Videokonferenzen"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-"Beschreibung des voreingestellten GStreamer-Audioziel für Ton- und "
-"Videokonferenzen"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "Voreingestelltes GStreamer-Audioziel für Musik und Filme"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-"Beschreibung des voreingestellten GStreamer-Audioziel für Musik und Filme"
-
-msgid "default GStreamer videosink"
-msgstr "Voreingestelltes GStreamer-Videoziel"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"GStreamer kann Video mit einer beliebigen Anzahl an Ausgabeelementen "
-"wiedergeben. Einige Wahlmöglichkeiten sind »xvimagesink«, »ximagesink«, "
-"»sdlvideosink« und »aasink«. Das Videoziel kann eine anteilige Weiterleitung "
-"anstelle eines einzigen Elements sein."
-
-msgid "description for default GStreamer videosink"
-msgstr "Beschreibung des voreingestellten GStreamer-Videoziel"
-
-msgid "Describes the selected videosink element."
-msgstr "Beschreibt das gewählte Videoziel-Element."
-
-msgid "default GStreamer audiosrc"
-msgstr "Voreingestelltes GStreamer-audiosrc"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer kann Ton mit einer beliebigen Anzahl an Eingabeelementen "
-"aufzeichnen. Einige Wahlmöglichkeiten sind »osssrc«, »pulsesrc« und "
-"»alsasrc«. Die Audioquelle kann eine anteilige Weiterleitung anstelle eines "
-"einzigen Elements sein."
-
-msgid "description for default GStreamer audiosrc"
-msgstr "Beschreibung des voreingestellten GStreamer-audiosrc"
-
-msgid "Describes the selected audiosrc element."
-msgstr "Beschreibt das gewählte audiosrc-Element."
-
-msgid "default GStreamer videosrc"
-msgstr "Voreingestelltes GStreamer-videosrc"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"GStreamer kann Video mit einer beliebigen Anzahl an Eingabeelementen "
-"aufzeichnen. Einige Wahlmöglichkeiten sind »v4lsrc«, »v4l2src« und "
-"»videotestsrc«. Die Videoquelle kann eine anteilige Weiterleitung anstelle "
-"eines einzigen Elements sein."
-
-msgid "description for default GStreamer videosrc"
-msgstr "Beschreibung des voreingestellten GStreamer-videosrc"
-
-msgid "Describes the selected videosrc element."
-msgstr "Beschreibt das gewählte videosrc-Element."
-
-msgid "default GStreamer visualization"
-msgstr "Voreingestellte GStreamer-Visualisierung"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"GStreamer kann Visualisierungs-Plugins in eine Weiterleitung integrieren, um "
-"Audioströme in Videobilder umzuwandeln. Einige Wahlmöglichkeiten sind "
-"»goom«, »goom2k1« und »synaesthesia«. Das Visualisierungs-Plugin kann eine "
-"anteilige Weiterleitung anstelle eines einzigen Elements sein."
-
-msgid "description for default GStreamer visualization"
-msgstr "Beschreibung der voreingestellten GStreamer-Visualisierung"
-
-msgid "Describes the selected visualization element."
-msgstr "Beschreibt das gewählte Visualisierungselement."
-
 # OpenCV ist eine freie Programmbibliothek mit Algorithmen für die Bildverarbeitung und maschinelles Sehen.
 msgid "OpenCV failed to load template image"
 msgstr "OpenCV konnte nicht die Bildvorlage laden"
@@ -259,6 +147,118 @@
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Details zu DVB-Kanal %s konnten nicht gefunden werden"
 
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "Voreingestellte GStreamer Tonereignis-Audioziel"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kann Ton mit einer beliebigen Anzahl an Ausgabeelementen "
+#~ "wiedergeben. Einige Wahlmöglichkeiten sind »osssink«, »pulsesink« und "
+#~ "»alsasink«. Das Audioziel kann eine teilweise Weiterleitung anstelle nur "
+#~ "eines einzigen Elements sein."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr "Beschreibung des voreingestellten GStreamer Tonereignis-Audioziel"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "Beschreibt das gewählte Audioziel-Element."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "Voreingestelltes GStreamer-Audioziel für Ton- und Videokonferenzen"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "Beschreibung des voreingestellten GStreamer-Audioziel für Ton- und "
+#~ "Videokonferenzen"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "Voreingestelltes GStreamer-Audioziel für Musik und Filme"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr ""
+#~ "Beschreibung des voreingestellten GStreamer-Audioziel für Musik und Filme"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "Voreingestelltes GStreamer-Videoziel"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kann Video mit einer beliebigen Anzahl an Ausgabeelementen "
+#~ "wiedergeben. Einige Wahlmöglichkeiten sind »xvimagesink«, »ximagesink«, "
+#~ "»sdlvideosink« und »aasink«. Das Videoziel kann eine anteilige "
+#~ "Weiterleitung anstelle eines einzigen Elements sein."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "Beschreibung des voreingestellten GStreamer-Videoziel"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Beschreibt das gewählte Videoziel-Element."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "Voreingestelltes GStreamer-audiosrc"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kann Ton mit einer beliebigen Anzahl an Eingabeelementen "
+#~ "aufzeichnen. Einige Wahlmöglichkeiten sind »osssrc«, »pulsesrc« und "
+#~ "»alsasrc«. Die Audioquelle kann eine anteilige Weiterleitung anstelle "
+#~ "eines einzigen Elements sein."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "Beschreibung des voreingestellten GStreamer-audiosrc"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Beschreibt das gewählte audiosrc-Element."
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "Voreingestelltes GStreamer-videosrc"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kann Video mit einer beliebigen Anzahl an Eingabeelementen "
+#~ "aufzeichnen. Einige Wahlmöglichkeiten sind »v4lsrc«, »v4l2src« und "
+#~ "»videotestsrc«. Die Videoquelle kann eine anteilige Weiterleitung "
+#~ "anstelle eines einzigen Elements sein."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "Beschreibung des voreingestellten GStreamer-videosrc"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Beschreibt das gewählte videosrc-Element."
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "Voreingestellte GStreamer-Visualisierung"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "GStreamer kann Visualisierungs-Plugins in eine Weiterleitung integrieren, "
+#~ "um Audioströme in Videobilder umzuwandeln. Einige Wahlmöglichkeiten sind "
+#~ "»goom«, »goom2k1« und »synaesthesia«. Das Visualisierungs-Plugin kann "
+#~ "eine anteilige Weiterleitung anstelle eines einzigen Elements sein."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "Beschreibung der voreingestellten GStreamer-Visualisierung"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Beschreibt das gewählte Visualisierungselement."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Adresse der Frachtliste konnte nicht ermittelt werden"
 
diff --git a/po/el.gmo b/po/el.gmo
index 59a59b0..6b2564b 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index 9998a20..8b914d2 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -22,95 +22,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index 85983e2..367daf5 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 98f9629..d67f39f 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -18,95 +18,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/eo.gmo b/po/eo.gmo
index 8de5054..0750b67 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index 35cecb6..a77747e 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -20,95 +20,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/es.gmo b/po/es.gmo
index 9c35661..345902b 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index a158c10..6b47627 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -20,95 +20,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/eu.gmo b/po/eu.gmo
index 0a57839..d305b96 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 40efb54..d32bfcf 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -22,95 +22,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/fi.gmo b/po/fi.gmo
index d2b19ae..48218a8 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index eb2ff58..6a536ff 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -25,95 +25,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/fr.gmo b/po/fr.gmo
index dbd6ad1..bd5f011 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index d041434..da97e73 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,10 +7,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-bad 1.4.1\n"
+"Project-Id-Version: gst-plugins-bad 1.7.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-12-24 13:55+0100\n"
-"PO-Revision-Date: 2015-04-26 19:24+0200\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\n"
+"PO-Revision-Date: 2015-12-27 01:51+0100\n"
 "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "Language: fr\n"
@@ -21,104 +21,15 @@
 msgid "format wasn't negotiated before get function"
 msgstr "Format non négocié avant l'appel de la fonction get"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "sons par défaut audiosink des événements GStreamer"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr "description des sons par défaut audiosink des événements GStreamer"
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr "videosink GStreamer par défaut"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr "audiosrc GStreamer par défaut"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr "videosrc GStreamer par défaut"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr "aperçu GStreamer par défaut"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr "description de l’aperçu GStreamer par défaut"
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
-msgstr ""
+msgstr "OpenCV n’a pas pu charger l’image modèle"
 
 msgid "Could not read title information for DVD."
 msgstr "Impossible de lire les informations de titre du DVD."
 
 #, c-format
 msgid "Failed to open DVD device '%s'."
-msgstr "Impossible d'ouvrir le périphérique du DVD « %s »."
+msgstr "Impossible d’ouvrir le périphérique du DVD « %s »."
 
 msgid "Failed to set PGC based seeking."
 msgstr "Impossible de définir la recherche basée sur PGC."
@@ -127,23 +38,23 @@
 "Could not read DVD. This may be because the DVD is encrypted and a DVD "
 "decryption library is not installed."
 msgstr ""
-"Impossible de lire le DVD. Il se peut que le DVD soit chiffré et qu'aucune "
-"bibliothèque de déchiffrement DVD ne soit disponible."
+"Impossible de lire le DVD. Il se peut qu’il soit chiffré et qu’aucune "
+"bibliothèque de déchiffrement DVD ne soit installée."
 
 msgid "Could not read DVD."
 msgstr "Impossible de lire le DVD."
 
 msgid "This file contains no playable streams."
-msgstr ""
+msgstr "Ce fichier ne contient aucun flux exploitable."
 
 msgid "Could not open sndfile stream for reading."
-msgstr "Impossible d'ouvrir le fichier snd en lecture."
+msgstr "Impossible d’ouvrir le fichier snd en lecture."
 
 msgid "Could not establish connection to sndio"
 msgstr "Impossible de se connecter à sndio"
 
 msgid "Failed to query sndio capabilities"
-msgstr "Impossible d’interroger les capacités sndio"
+msgstr "Impossible d’interroger les capacités de sndio"
 
 msgid "Could not configure sndio"
 msgstr "Impossible de configurer sndio"
@@ -152,26 +63,29 @@
 msgstr "Impossible de démarrer sndio"
 
 msgid "Internal data flow error."
-msgstr "Erreur interne de flux de données."
+msgstr "Erreur du flux de données interne."
 
 msgid "Generated file has a larger preroll time than its streams duration"
 msgstr ""
+"Le fichier généré a un temps de lancement plus long que la durée du flux"
 
 #, c-format
 msgid "Missing element '%s' - check your GStreamer installation."
-msgstr ""
+msgstr "Élément « %s » manquant — Vérifiez votre installation de GStreamer."
 
 msgid "File location is set to NULL, please set it to a valid filename"
 msgstr ""
+"L’emplacement du fichier est inconnu (NULL), veuillez choisir un nom de "
+"fichier valide"
 
 msgid "Digitalzoom element couldn't be created"
-msgstr ""
+msgstr "L’élément Digitalzoom n’a pu être créé"
 
 msgid "Subpicture format was not configured before data flow"
-msgstr ""
+msgstr "Le format de sous-image n’était pas configuré avant le flux de données"
 
 msgid "Failed to get fragment URL."
-msgstr ""
+msgstr "Échec de la récupération de l’URL de fragment."
 
 msgid "Internal data stream error."
 msgstr "Erreur interne de flux de données."
@@ -180,49 +94,164 @@
 msgstr "Impossible de télécharger les fragments"
 
 msgid "No file name specified for writing."
-msgstr "Aucun nom de fichier indiqué pour l'écriture."
+msgstr "Aucun nom de fichier indiqué en écriture."
 
 #, c-format
 msgid "Given file name \"%s\" can't be converted to local file name encoding."
 msgstr ""
+"Le nom de fichier indiqué « %s » ne peut pas être converti dans l’encodage "
+"local au système de fichier."
 
 #, c-format
 msgid "Could not open file \"%s\" for writing."
-msgstr "Impossible d'ouvrir le fichier « %s » pour l'écriture."
+msgstr "Impossible d’ouvrir le fichier « %s » en écriture."
 
 #, c-format
 msgid "Device \"%s\" does not exist."
-msgstr "Le périphérique « %s » n'existe pas."
+msgstr "Le périphérique « %s » n’existe pas."
 
 #, c-format
 msgid "Could not open frontend device \"%s\"."
-msgstr "Impossible d'ouvrir le périphérique frontal « %s »."
+msgstr "Impossible d’ouvrir le périphérique frontal « %s »."
 
 #, c-format
 msgid "Could not get settings from frontend device \"%s\"."
-msgstr "Impossible d'obtenir les paramètres du périphérique frontal « %s »."
+msgstr "Impossible d’obtenir les paramètres du périphérique frontal « %s »."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Cannot enumerate delivery systems from frontend device \"%s\"."
-msgstr "Impossible d'obtenir les paramètres du périphérique frontal « %s »."
+msgstr ""
+"Impossible d'énumérer les systèmes d’émission du périphérique frontal « %s »."
 
 #, c-format
 msgid "Could not open file \"%s\" for reading."
-msgstr "Impossible d'ouvrir le fichier « %s » en lecture."
+msgstr "Impossible d’ouvrir le fichier « %s » en lecture."
 
 msgid "Couldn't find DVB channel configuration file"
-msgstr ""
+msgstr "Impossible de trouver le fichier de configuration de canal DVB"
 
 #, c-format
 msgid "Couldn't load DVB channel configuration file: %s"
-msgstr ""
+msgstr "Impossible de charger le fichier de configuration de canal DVB : %s"
 
 msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
+msgstr "Le fichier de configuration de canal DVB ne contient aucun canal"
 
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
-msgstr ""
+msgstr "Impossible de trouver des informations sur le canal DVB %s"
 
-#~ msgid "Could not write to file \"%s\"."
-#~ msgstr "Impossible d'écrire dans le fichier « %s »."
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "récepteur audio GStreamer par défaut pour les événements sonores"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer peut lire des sons depuis un nombre quelconque d’éléments en "
+#~ "entrée. Les choix possibles sont osssink, pulsesink et alsasink. Le "
+#~ "source audio peut être un pipeline partiel au lieu d’un élément unique."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr ""
+#~ "description du récepteur audio GStreamer par défaut pour les événements "
+#~ "sonores"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "Décrit le récepteur audio sélectionné."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "récepteur audio GStreamer par défaut pour les confèrences audiovisuelles"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "description du récepteur audio GStreamer par défaut pour les confèrences "
+#~ "audiovisuelles"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "récepteur audio GStreamer par défaut pour la musique et les films"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr ""
+#~ "description du récepteur audio GStreamer par défaut pour la musique et "
+#~ "les films"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "récepteur vidéo GStreamer par défaut"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer peut lire une vidéo depuis un nombre quelconque d’éléments en "
+#~ "entrée. Les choix possibles sont xvimagesink, ximagesink, sdlvideosink et "
+#~ "aasink. Le source vidéo peut être un pipeline partiel au lieu d’un "
+#~ "élément unique."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "description du récepteur vidéo GStreamer par défaut"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Décrit le récepteur vidéo sélectionné."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "source audio GStreamer par défaut"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer peut enregistrer des sons depuis un nombre quelconque "
+#~ "d’éléments en entrée. Les choix possibles sont osssrc, pulsesrc et "
+#~ "alsasrc. Le source audio peut être un pipeline partiel au lieu d’un "
+#~ "élément unique."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "description de la source audio GStreamer par défaut"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Décrit la source audio sélectionnée."
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "source vidéo GStreamer par défaut"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer peut enregistrer une vidéo depuis un nombre quelconque "
+#~ "d’éléments en entrée. Les choix possibles sont v4lsrc, v4l2src et "
+#~ "videotestsrc. Le source vidéo peut être un pipeline partiel au lieu d’un "
+#~ "élément unique."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "description de la source vidéo GStreamer par défaut"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Décrit la source vidéo sélectionnée."
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "aperçu GStreamer par défaut"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "GStreamer peut mettre les extensions d’aperçu dans un pipeline pour "
+#~ "transformer les flux audios en frames vidéo. Les choix possibles sont "
+#~ "goom, goom2k1 et synaesthesia. L’extension d’aperçu peut être un pipeline "
+#~ "partiel au lieu d’un élément unique."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "description de l’aperçu GStreamer par défaut"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Décrit l’élément d’aperçu sélectionné."
diff --git a/po/gl.gmo b/po/gl.gmo
index 76fc086..be28107 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index b6e1cf6..6783468 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -22,95 +22,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/gst-plugins-bad-1.0.pot b/po/gst-plugins-bad-1.0.pot
index 48b7ad4..ebb7c84 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.7.1\n"
+"Project-Id-Version: gst-plugins-bad 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -20,123 +20,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:5
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:6
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:19
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:32
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:13
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:14
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:27
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:40
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:18
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:26
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:31
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:39
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:44
-msgid "default GStreamer videosink"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:45
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:52
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:53
-msgid "Describes the selected videosink element."
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:57
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:58
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:65
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:66
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:70
-msgid "default GStreamer videosrc"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:71
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:77
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:78
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:82
-msgid "default GStreamer visualization"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:83
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:90
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-#: ext/gsettings/org.freedesktop.gstreamer.default-elements.gschema.xml.in:91
-msgid "Describes the selected visualization element."
-msgstr ""
-
 #: ext/opencv/gsttemplatematch.cpp:188
 msgid "OpenCV failed to load template image"
 msgstr ""
@@ -164,8 +47,8 @@
 msgid "Could not read DVD."
 msgstr ""
 
-#: ext/smoothstreaming/gstmssdemux.c:403
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:619
+#: ext/smoothstreaming/gstmssdemux.c:405
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:633
 msgid "This file contains no playable streams."
 msgstr ""
 
@@ -215,18 +98,18 @@
 msgid "Subpicture format was not configured before data flow"
 msgstr ""
 
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:2531
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:2646
 msgid "Failed to get fragment URL."
 msgstr ""
 
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:2761
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:2955
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:2881
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3075
 #: gst/mpegtsdemux/mpegtsbase.c:1371 gst/mpegtsdemux/mpegtsbase.c:1375
 #: gst/nuvdemux/gstnuvdemux.c:736
 msgid "Internal data stream error."
 msgstr ""
 
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:2873
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:2993
 msgid "Couldn't download fragments"
 msgstr ""
 
@@ -244,27 +127,27 @@
 msgid "Could not open file \"%s\" for writing."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1565 sys/dvb/gstdvbsrc.c:1754
+#: sys/dvb/gstdvbsrc.c:1564 sys/dvb/gstdvbsrc.c:1753
 #, c-format
 msgid "Device \"%s\" does not exist."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1569
+#: sys/dvb/gstdvbsrc.c:1568
 #, c-format
 msgid "Could not open frontend device \"%s\"."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1583
+#: sys/dvb/gstdvbsrc.c:1582
 #, c-format
 msgid "Could not get settings from frontend device \"%s\"."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1600
+#: sys/dvb/gstdvbsrc.c:1599
 #, c-format
 msgid "Cannot enumerate delivery systems from frontend device \"%s\"."
 msgstr ""
 
-#: sys/dvb/gstdvbsrc.c:1758
+#: sys/dvb/gstdvbsrc.c:1757
 #, c-format
 msgid "Could not open file \"%s\" for reading."
 msgstr ""
diff --git a/po/hr.gmo b/po/hr.gmo
index 9f4cf77..585c17c 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index 6526564..ae7ada7 100644
--- a/po/hr.po
+++ b/po/hr.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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\n"
 "PO-Revision-Date: 2012-04-16 02:06+0200\n"
 "Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
@@ -20,95 +20,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/hu.gmo b/po/hu.gmo
index e8c1730..eafabd6 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index bea72b9..9de15df 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -22,117 +22,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "a formátum nem lett egyeztetve a függvény lekérése előtt"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "alapértelmezett GStreamer hangesemények audiosink"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"A GStreamer képes hangot lejátszani bármilyen számú kimeneti elem "
-"használatával. Néhány lehetséges választás a következő lehet: osssink, "
-"pulsesink és alsasink. Az audiosink lehet egy részleges adatcsatorna is "
-"egyetlen elem helyett."
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr "az alapértelmezett GStreamer hangesemények audiosink leírása"
-
-msgid "Describes the selected audiosink element."
-msgstr "Leírja a kiválasztott audiosink elemet."
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "alapértelmezett GStreamer audiosink a hang/videó konferenciához"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-"az alapértelmezett GStreamer audiosink leírása a hang/videó konferenciához"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "alapértelmezett GStreamer audiosink zenékhez és filmekhez"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr "az alapértelmezett GStreamer audiosink leírása zenékhez és filmekhez"
-
-msgid "default GStreamer videosink"
-msgstr "alapértelmezett GStreamer videosink"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"A GStreamer képes videót lejátszani bármilyen számú kimeneti elem "
-"használatával. Néhány lehetséges választás a következő lehet: xvimagesink, "
-"ximagesink, sdlvideosink és aasink. Az videosink lehet egy részleges "
-"adatcsatorna is egyetlen elem helyett."
-
-msgid "description for default GStreamer videosink"
-msgstr "az alapértelmezett GStreamer videosink leírása"
-
-msgid "Describes the selected videosink element."
-msgstr "Leírja a kiválasztott videosink elemet."
-
-msgid "default GStreamer audiosrc"
-msgstr "alapértelmezett GStreamer audiosrc"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"A GStreamer képes hangot felvenni bármilyen számú bemeneti elem "
-"használatával. Néhány lehetséges választás a következő lehet: osssrc, "
-"pulsesrc és alsasrc. A hangforrás lehet egy részleges adatcsatorna is "
-"egyetlen elem helyett."
-
-msgid "description for default GStreamer audiosrc"
-msgstr "az alapértelmezett GStreamer audiosrc leírása"
-
-msgid "Describes the selected audiosrc element."
-msgstr "Leírja a kiválasztott audiosrc elemet."
-
-msgid "default GStreamer videosrc"
-msgstr "alapértelmezett GStreamer videosrc"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"A GStreamer képes videót felvenni bármilyen számú bemeneti elem "
-"használatával. Néhány lehetséges választás a következő lehet: v4lsrc, "
-"v4l2src és videotestsrc. A videoforrás lehet egy részleges adatcsatorna is "
-"egyetlen elem helyett."
-
-msgid "description for default GStreamer videosrc"
-msgstr "az alapértelmezett GStreamer videosrc leírása"
-
-msgid "Describes the selected videosrc element."
-msgstr "Leírja a kiválasztott videosrc elemet."
-
-msgid "default GStreamer visualization"
-msgstr "alapértelmezett GStreamer képi megjelenítés"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"A GStreamer képes képi megjelenítő bővítményeket elhelyezni egy "
-"adatcsatornába a videoképkockákban lévő hangfolyamok átalakításához. Néhány "
-"lehetséges választás a következő lehet: goom, goom2k1 és synaesthesia. A "
-"képi megjelenítő bővítmény lehet egy részleges adatcsatorna is egyetlen elem "
-"helyett."
-
-msgid "description for default GStreamer visualization"
-msgstr "az alapértelmezett GStreamer képi megjelenítés leírása"
-
-msgid "Describes the selected visualization element."
-msgstr "Leírja a kiválasztott képi megjelenítés elemet."
-
 msgid "OpenCV failed to load template image"
 msgstr "Az OpenCV-nek nem sikerült betöltenie a sablonképet"
 
@@ -253,6 +142,118 @@
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Nem találhatók a(z) %s DVB-csatorna részletei"
 
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "alapértelmezett GStreamer hangesemények audiosink"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "A GStreamer képes hangot lejátszani bármilyen számú kimeneti elem "
+#~ "használatával. Néhány lehetséges választás a következő lehet: osssink, "
+#~ "pulsesink és alsasink. Az audiosink lehet egy részleges adatcsatorna is "
+#~ "egyetlen elem helyett."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr "az alapértelmezett GStreamer hangesemények audiosink leírása"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "Leírja a kiválasztott audiosink elemet."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "alapértelmezett GStreamer audiosink a hang/videó konferenciához"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "az alapértelmezett GStreamer audiosink leírása a hang/videó konferenciához"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "alapértelmezett GStreamer audiosink zenékhez és filmekhez"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr ""
+#~ "az alapértelmezett GStreamer audiosink leírása zenékhez és filmekhez"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "alapértelmezett GStreamer videosink"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "A GStreamer képes videót lejátszani bármilyen számú kimeneti elem "
+#~ "használatával. Néhány lehetséges választás a következő lehet: "
+#~ "xvimagesink, ximagesink, sdlvideosink és aasink. Az videosink lehet egy "
+#~ "részleges adatcsatorna is egyetlen elem helyett."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "az alapértelmezett GStreamer videosink leírása"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Leírja a kiválasztott videosink elemet."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "alapértelmezett GStreamer audiosrc"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "A GStreamer képes hangot felvenni bármilyen számú bemeneti elem "
+#~ "használatával. Néhány lehetséges választás a következő lehet: osssrc, "
+#~ "pulsesrc és alsasrc. A hangforrás lehet egy részleges adatcsatorna is "
+#~ "egyetlen elem helyett."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "az alapértelmezett GStreamer audiosrc leírása"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Leírja a kiválasztott audiosrc elemet."
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "alapértelmezett GStreamer videosrc"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "A GStreamer képes videót felvenni bármilyen számú bemeneti elem "
+#~ "használatával. Néhány lehetséges választás a következő lehet: v4lsrc, "
+#~ "v4l2src és videotestsrc. A videoforrás lehet egy részleges adatcsatorna "
+#~ "is egyetlen elem helyett."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "az alapértelmezett GStreamer videosrc leírása"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Leírja a kiválasztott videosrc elemet."
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "alapértelmezett GStreamer képi megjelenítés"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "A GStreamer képes képi megjelenítő bővítményeket elhelyezni egy "
+#~ "adatcsatornába a videoképkockákban lévő hangfolyamok átalakításához. "
+#~ "Néhány lehetséges választás a következő lehet: goom, goom2k1 és "
+#~ "synaesthesia. A képi megjelenítő bővítmény lehet egy részleges "
+#~ "adatcsatorna is egyetlen elem helyett."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "az alapértelmezett GStreamer képi megjelenítés leírása"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Leírja a kiválasztott képi megjelenítés elemet."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Nem kérhető le a Manifest URL-e"
 
diff --git a/po/id.gmo b/po/id.gmo
index bb3fbc1..7ec8ad1 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index 6c99ddb..572663e 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -20,95 +20,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/it.gmo b/po/it.gmo
index 9530649..5ce94da 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 8e0efd2..b94c6ab 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -19,95 +19,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/ja.gmo b/po/ja.gmo
index 7bec83b..57b83e3 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 8eb9643..96b4de5 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -20,95 +20,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/ky.gmo b/po/ky.gmo
index 26103e3..a658378 100644
--- a/po/ky.gmo
+++ b/po/ky.gmo
Binary files differ
diff --git a/po/ky.po b/po/ky.po
index 980cec0..c415a6e 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -20,95 +20,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/lt.gmo b/po/lt.gmo
index ac49d8d..3fc5ba1 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index c745c81..6d02a85 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -21,95 +21,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/lv.gmo b/po/lv.gmo
index a1c82eb..3220b06 100644
--- a/po/lv.gmo
+++ b/po/lv.gmo
Binary files differ
diff --git a/po/lv.po b/po/lv.po
index d84f5df..7b7795a 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -25,95 +25,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/mt.gmo b/po/mt.gmo
index 9b1b4b1..431942e 100644
--- a/po/mt.gmo
+++ b/po/mt.gmo
Binary files differ
diff --git a/po/mt.po b/po/mt.po
index 963e919..1a00f39 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -21,95 +21,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/nb.gmo b/po/nb.gmo
index 8fe2d8d..57476b7 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 34fcae3..60d87ed 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -21,111 +21,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "formatet ble ikke forhandlet før get-funksjon"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "standard GStreamer lydhendelser-audiosink"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer kan spille av lyd ved hjelp av en rekke utgangselementer. Noen "
-"mulige valg er osssink, pulsesink og alsasink. Audiosinken kan være en "
-"delvis kommandokø i stedet for bare ett element."
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr "beskrivelse for standard GStreamer lydhendelser-audiosink"
-
-msgid "Describes the selected audiosink element."
-msgstr "beskriver standard audiosinkelement."
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "Standard GStreamer-audiosink for Lyd/Video-konferanser"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "beskrivelse for standard GStreamer-audiosink for musikk og filmer"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "standard GStreamer-audiosink for musikk og filmer"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr "beskrivelse for standard GStreamer-audiosink for musikk og filmer"
-
-msgid "default GStreamer videosink"
-msgstr "standard GStreamer-videosink"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"GStreamer kan spille video ved hjelp av en rekke utgangselementer. Noen "
-"mulige valg er xvimagesink, ximagesink, sdlvideosink og aasink. Videosinken "
-"kan være en delvis kommandokø i stedet for bare ett element."
-
-msgid "description for default GStreamer videosink"
-msgstr "beskrivelse for standard GStreamer-videosink"
-
-msgid "Describes the selected videosink element."
-msgstr "Beskriver det valgte videosink-element."
-
-msgid "default GStreamer audiosrc"
-msgstr "standard GStreamer-audiosrc"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer kan ta opp lyd ved hjelp av en rekke dataobjekter. Noen mulige "
-"valg er osssrc, pulsesrc og alsasrc. Lydkilden kan være en delvis kommandokø "
-"i stedet for bare ett element."
-
-msgid "description for default GStreamer audiosrc"
-msgstr "beskrivelse for standard GStreamer-audiosrc"
-
-msgid "Describes the selected audiosrc element."
-msgstr "Beskriver det valgte audiosrc-elementet"
-
-msgid "default GStreamer videosrc"
-msgstr "standard GStreamer-videosrc"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"GStreamer kan ta opp video fra en rekke dataobjekter. Noen mulige valg er "
-"v4lsrc, v4l2src og videotestsrc. Videokilden kan være en delvis kommandokø i "
-"stedet for bare ett element."
-
-msgid "description for default GStreamer videosrc"
-msgstr "beskrivelse for standard GStreamer-videosrc"
-
-msgid "Describes the selected videosrc element."
-msgstr "Beskriver det valgte videosrc-elementet"
-
-msgid "default GStreamer visualization"
-msgstr "standard GStreamer-visualisering"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"GStreamer kan sette visualiseringsplugins i en rørledning til å forvandle "
-"lydstrømmer i videobilder. Noen mulige valg er goom, goom2k1 og "
-"synaesthesia. Visualiseringsplugin kan være en delvis kommandokø i stedet "
-"for bare ett element."
-
-msgid "description for default GStreamer visualization"
-msgstr "beskrivelse for standard GStreamer-visualisering"
-
-msgid "Describes the selected visualization element."
-msgstr "Beskriver valgt visualiseringselement."
-
 msgid "OpenCV failed to load template image"
 msgstr "OpenCV kunne ikke laste mal-bilde"
 
@@ -241,6 +136,111 @@
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Kunne ikke finne detaljer for DVB-kanal %s"
 
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "standard GStreamer lydhendelser-audiosink"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan spille av lyd ved hjelp av en rekke utgangselementer. Noen "
+#~ "mulige valg er osssink, pulsesink og alsasink. Audiosinken kan være en "
+#~ "delvis kommandokø i stedet for bare ett element."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr "beskrivelse for standard GStreamer lydhendelser-audiosink"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "beskriver standard audiosinkelement."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "Standard GStreamer-audiosink for Lyd/Video-konferanser"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "beskrivelse for standard GStreamer-audiosink for musikk og filmer"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "standard GStreamer-audiosink for musikk og filmer"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr "beskrivelse for standard GStreamer-audiosink for musikk og filmer"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "standard GStreamer-videosink"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan spille video ved hjelp av en rekke utgangselementer. Noen "
+#~ "mulige valg er xvimagesink, ximagesink, sdlvideosink og aasink. "
+#~ "Videosinken kan være en delvis kommandokø i stedet for bare ett element."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "beskrivelse for standard GStreamer-videosink"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Beskriver det valgte videosink-element."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "standard GStreamer-audiosrc"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan ta opp lyd ved hjelp av en rekke dataobjekter. Noen mulige "
+#~ "valg er osssrc, pulsesrc og alsasrc. Lydkilden kan være en delvis "
+#~ "kommandokø i stedet for bare ett element."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "beskrivelse for standard GStreamer-audiosrc"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Beskriver det valgte audiosrc-elementet"
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "standard GStreamer-videosrc"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan ta opp video fra en rekke dataobjekter. Noen mulige valg er "
+#~ "v4lsrc, v4l2src og videotestsrc. Videokilden kan være en delvis "
+#~ "kommandokø i stedet for bare ett element."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "beskrivelse for standard GStreamer-videosrc"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Beskriver det valgte videosrc-elementet"
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "standard GStreamer-visualisering"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "GStreamer kan sette visualiseringsplugins i en rørledning til å forvandle "
+#~ "lydstrømmer i videobilder. Noen mulige valg er goom, goom2k1 og "
+#~ "synaesthesia. Visualiseringsplugin kan være en delvis kommandokø i stedet "
+#~ "for bare ett element."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "beskrivelse for standard GStreamer-visualisering"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Beskriver valgt visualiseringselement."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Kunne ikke hente Manifest-nettadressen."
 
diff --git a/po/nl.gmo b/po/nl.gmo
index 1819eb4..0791235 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 3542833..0e6d120 100644
--- a/po/nl.po
+++ b/po/nl.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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\n"
 "PO-Revision-Date: 2015-10-17 12:35+0200\n"
 "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
@@ -21,113 +21,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "formaat is niet onderhandeld vóór get-functie"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "standaard GStreamer audiosink voor geluidsgebeurtenissen"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer kan geluid afspelen met elk aantal uitvoerelementen. Enige "
-"mogelijke keuzes zijn osssink, pulsesink en alsasink. De audiosink kan een "
-"gedeeltelijke pipeline zijn in plaats van gewoon één element."
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-"beschrijving van standaard GStreamer audiosink voor geluidsgebeurtenissen"
-
-msgid "Describes the selected audiosink element."
-msgstr "Beschrijft het geselecteerde audiosink-element."
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "standaard GStreamer audiosink voor audio/videoconferenties"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-"beschrijving van standaard GStreamer audiosink voor audio/videoconferenties"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "standaard GStreamer audiosink voor muziek en film"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr "beschrijving van standaard GStreamer audiosink voor muziek en film"
-
-msgid "default GStreamer videosink"
-msgstr "standaard GStreamer videosink"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"GStreamer kan video afspelen met elk aantal uitvoerelementen Enige mogelijke "
-"keuzes zijn xvimagesink, ximagesink, sdlvideosink en aasink. De videosink "
-"kan een gedeeltelijke pipeline zijn in plaats van gewoon één element."
-
-msgid "description for default GStreamer videosink"
-msgstr "beschrijving van standaard GStreamer videosink"
-
-msgid "Describes the selected videosink element."
-msgstr "Beschrijft het geselecteerde videosink-element."
-
-msgid "default GStreamer audiosrc"
-msgstr "standaard GStreamer audiobron"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer kan geluid opnemen met elk aantal invoerelementen. Enige mogelijke "
-"keuzes zijn osssrc, pulsesrc en alsasrc. De audiobron kan een gedeeltelijke "
-"pipeline zijn in plaats van gewoon één element."
-
-msgid "description for default GStreamer audiosrc"
-msgstr "beschrijving van standaard GStreamer audiobron"
-
-msgid "Describes the selected audiosrc element."
-msgstr "Beschrijft het geselecteerde audiobron-element."
-
-msgid "default GStreamer videosrc"
-msgstr "standaard GStreamer videobron"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"GStreamer kan video opnemen met elk aantal invoerelementen. Enige mogelijke "
-"keuzes zijn v4lsrc, v4l2src en videotestsrc. De videobron kan een "
-"gedeeltelijke pipeline zijn in plaats van gewoon één element."
-
-msgid "description for default GStreamer videosrc"
-msgstr "beschrijving van standaard GStreamer videobron"
-
-msgid "Describes the selected videosrc element."
-msgstr "Beschrijft het geselecteerde videobron-element."
-
-msgid "default GStreamer visualization"
-msgstr "standaard GStreamer visualisatie"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"GStreamer kan visualisatieplug-ins in een pipeline stoppen om audiostreams "
-"te transformeren in videoframes. Enige mogelijke keuzes zijn goom, goom2k1 "
-"en synaesthesia. De visualisatieplug-in kan een gedeeltelijke pipeline zijn "
-"in plaats van gewoon één element."
-
-msgid "description for default GStreamer visualization"
-msgstr "beschrijving van standaard GStreamer visualisatie"
-
-msgid "Describes the selected visualization element."
-msgstr "Beschrijft het geselecteerde visualisatie-element."
-
 msgid "OpenCV failed to load template image"
 msgstr "OpenCV kon sjabloonafbeelding niet laden"
 
@@ -248,6 +141,115 @@
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Kon de details voor het DVB-kanaal %s niet vinden"
 
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "standaard GStreamer audiosink voor geluidsgebeurtenissen"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan geluid afspelen met elk aantal uitvoerelementen. Enige "
+#~ "mogelijke keuzes zijn osssink, pulsesink en alsasink. De audiosink kan "
+#~ "een gedeeltelijke pipeline zijn in plaats van gewoon één element."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr ""
+#~ "beschrijving van standaard GStreamer audiosink voor geluidsgebeurtenissen"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "Beschrijft het geselecteerde audiosink-element."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "standaard GStreamer audiosink voor audio/videoconferenties"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "beschrijving van standaard GStreamer audiosink voor audio/"
+#~ "videoconferenties"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "standaard GStreamer audiosink voor muziek en film"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr "beschrijving van standaard GStreamer audiosink voor muziek en film"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "standaard GStreamer videosink"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan video afspelen met elk aantal uitvoerelementen Enige "
+#~ "mogelijke keuzes zijn xvimagesink, ximagesink, sdlvideosink en aasink. De "
+#~ "videosink kan een gedeeltelijke pipeline zijn in plaats van gewoon één "
+#~ "element."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "beschrijving van standaard GStreamer videosink"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Beschrijft het geselecteerde videosink-element."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "standaard GStreamer audiobron"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan geluid opnemen met elk aantal invoerelementen. Enige "
+#~ "mogelijke keuzes zijn osssrc, pulsesrc en alsasrc. De audiobron kan een "
+#~ "gedeeltelijke pipeline zijn in plaats van gewoon één element."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "beschrijving van standaard GStreamer audiobron"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Beschrijft het geselecteerde audiobron-element."
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "standaard GStreamer videobron"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan video opnemen met elk aantal invoerelementen. Enige "
+#~ "mogelijke keuzes zijn v4lsrc, v4l2src en videotestsrc. De videobron kan "
+#~ "een gedeeltelijke pipeline zijn in plaats van gewoon één element."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "beschrijving van standaard GStreamer videobron"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Beschrijft het geselecteerde videobron-element."
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "standaard GStreamer visualisatie"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "GStreamer kan visualisatieplug-ins in een pipeline stoppen om "
+#~ "audiostreams te transformeren in videoframes. Enige mogelijke keuzes zijn "
+#~ "goom, goom2k1 en synaesthesia. De visualisatieplug-in kan een "
+#~ "gedeeltelijke pipeline zijn in plaats van gewoon één element."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "beschrijving van standaard GStreamer visualisatie"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Beschrijft het geselecteerde visualisatie-element."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "De URI van het manifest verkrijgen lukt niet"
 
diff --git a/po/or.gmo b/po/or.gmo
index 462c25a..faa4725 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index 57025b6..91c6f6d 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -20,95 +20,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/pl.gmo b/po/pl.gmo
index 97f6848..4c6312c 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 87f3a71..d46fdb3 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -18,117 +18,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "format nie został wynegocjowany przed funkcją pobrania"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "domyślny element GStreamera pochłaniający zdarzenia dźwiękowe"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer może odtwarzać dźwięk przy użyciu dowolnej liczby elementów "
-"wyjściowych. Niektóre z możliwości to osssink, pulsesink oraz alsasink. "
-"Wyjście dźwięku może być częściowym potokiem zamiast pojedynczego elementu."
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-"opis domyślnego elementu GStreamera pochłaniającego zdarzenia dźwiękowe"
-
-msgid "Describes the selected audiosink element."
-msgstr "Opisuje wybrany element wyjściowy dźwięku."
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-"domyślny element GStreamera pochłaniający dźwięk dla konferencji audio/video"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-"opis domyślnego elementu wyjściowego dźwięku GStreamera dla konferencji "
-"audio/video"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "domyślny element wyjściowy dźwięku GStreamera dla muzyki i filmów"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-"opis domyślnego elementu wyjściowego dźwięku GStreamera dla muzyki i filmów"
-
-msgid "default GStreamer videosink"
-msgstr "domyślny element GStreamera pochłaniający obraz"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"GStreamer może odtwarzać obraz przy użyciu dowolnej liczby elementów "
-"wyjściowych. Niektóre z możliwości to xvimagesink, ximagesink, sdlvideosink "
-"oraz aasink. Wyjście obrazu może być częściowym potokiem zamiast "
-"pojedynczego elementu."
-
-msgid "description for default GStreamer videosink"
-msgstr "opis domyślnego elementu GStreamera pochłaniającego obraz"
-
-msgid "Describes the selected videosink element."
-msgstr "Opisuje wybrany element wyjściowy obrazu."
-
-msgid "default GStreamer audiosrc"
-msgstr "domyślne źródło dźwięku GStreamera"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer może nagrywać dźwięk z dowolnej liczby elementów wejściowych. "
-"Niektóre możliwości to osssrc, pulsesrc oraz alsasrc. Źródło dźwięku może "
-"być częściowym potokiem zamiast pojedynczego elementu."
-
-msgid "description for default GStreamer audiosrc"
-msgstr "opis domyślnego źródła dźwięku GStreamera"
-
-msgid "Describes the selected audiosrc element."
-msgstr "Opisuje wybrany element źródłowy dźwięku."
-
-msgid "default GStreamer videosrc"
-msgstr "domyślne źródło obrazu GStreamera"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"GStreamer może nagrywać obraz z dowolnej liczby elementów wejściowych. "
-"Niektóre możliwości to v4lsrc, v4l2src oraz videotestsrc. Źródło obrazu może "
-"być częściowym potokiem zamiast pojedynczego elementu."
-
-msgid "description for default GStreamer videosrc"
-msgstr "opis domyślnego źródła obrazu GStreamera"
-
-msgid "Describes the selected videosrc element."
-msgstr "Opisuje wybrany element źródłowy obrazu."
-
-msgid "default GStreamer visualization"
-msgstr "domyślna wizualizacja GStreamera"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"GStreamer może umieszczać wtyczki wizualizujące w potoku w celu "
-"przekształcania strumieni dźwiękowych na klatki obrazu. Niektóre możliwości "
-"to goom, goom2k1 oraz synaesthesia. Wtyczka wizualizująca może być "
-"częściowym potokiem zamiast pojedynczego elementu."
-
-msgid "description for default GStreamer visualization"
-msgstr "opis domyślego elementu wizualizującego GStreamera"
-
-msgid "Describes the selected visualization element."
-msgstr "Opisuje wybrany element wizualizujący."
-
 msgid "OpenCV failed to load template image"
 msgstr "Odczyt obrazu wzorca przez OpenCV nie powiódł się"
 
@@ -247,3 +136,117 @@
 #, c-format
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Nie udało się odnaleźć szczegółów dla kanału DVB %s"
+
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "domyślny element GStreamera pochłaniający zdarzenia dźwiękowe"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer może odtwarzać dźwięk przy użyciu dowolnej liczby elementów "
+#~ "wyjściowych. Niektóre z możliwości to osssink, pulsesink oraz alsasink. "
+#~ "Wyjście dźwięku może być częściowym potokiem zamiast pojedynczego "
+#~ "elementu."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr ""
+#~ "opis domyślnego elementu GStreamera pochłaniającego zdarzenia dźwiękowe"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "Opisuje wybrany element wyjściowy dźwięku."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "domyślny element GStreamera pochłaniający dźwięk dla konferencji audio/"
+#~ "video"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "opis domyślnego elementu wyjściowego dźwięku GStreamera dla konferencji "
+#~ "audio/video"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "domyślny element wyjściowy dźwięku GStreamera dla muzyki i filmów"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr ""
+#~ "opis domyślnego elementu wyjściowego dźwięku GStreamera dla muzyki i "
+#~ "filmów"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "domyślny element GStreamera pochłaniający obraz"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer może odtwarzać obraz przy użyciu dowolnej liczby elementów "
+#~ "wyjściowych. Niektóre z możliwości to xvimagesink, ximagesink, "
+#~ "sdlvideosink oraz aasink. Wyjście obrazu może być częściowym potokiem "
+#~ "zamiast pojedynczego elementu."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "opis domyślnego elementu GStreamera pochłaniającego obraz"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Opisuje wybrany element wyjściowy obrazu."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "domyślne źródło dźwięku GStreamera"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer może nagrywać dźwięk z dowolnej liczby elementów wejściowych. "
+#~ "Niektóre możliwości to osssrc, pulsesrc oraz alsasrc. Źródło dźwięku może "
+#~ "być częściowym potokiem zamiast pojedynczego elementu."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "opis domyślnego źródła dźwięku GStreamera"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Opisuje wybrany element źródłowy dźwięku."
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "domyślne źródło obrazu GStreamera"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer może nagrywać obraz z dowolnej liczby elementów wejściowych. "
+#~ "Niektóre możliwości to v4lsrc, v4l2src oraz videotestsrc. Źródło obrazu "
+#~ "może być częściowym potokiem zamiast pojedynczego elementu."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "opis domyślnego źródła obrazu GStreamera"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Opisuje wybrany element źródłowy obrazu."
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "domyślna wizualizacja GStreamera"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "GStreamer może umieszczać wtyczki wizualizujące w potoku w celu "
+#~ "przekształcania strumieni dźwiękowych na klatki obrazu. Niektóre "
+#~ "możliwości to goom, goom2k1 oraz synaesthesia. Wtyczka wizualizująca może "
+#~ "być częściowym potokiem zamiast pojedynczego elementu."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "opis domyślego elementu wizualizującego GStreamera"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Opisuje wybrany element wizualizujący."
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 301e4c3..2b04a4f 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 a3d9a46..9e5671a 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -6,10 +6,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gst-plugins-bad-1.4.1\n"
+"Project-Id-Version: gst-plugins-bad-1.7.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2015-12-24 13:55+0100\n"
-"PO-Revision-Date: 2015-02-01 18:24-0200\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\n"
+"PO-Revision-Date: 2015-12-28 17:03-0200\n"
 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
 "net>\n"
@@ -22,122 +22,8 @@
 msgid "format wasn't negotiated before get function"
 msgstr "O formato não foi negociado antes da chamada da função"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "audiosink do GStreamer pré-definido para eventos de som"
-
-#, fuzzy
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"O GStreamer pode reproduzir áudio utilizando qualquer quantidade de "
-"elementos de saída. Algumas das opções possíveis são osssink, pulsesink e "
-"alsasink. O audiosink pode ser uma fila de processamento parcial em vez de "
-"apenas um elemento."
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-"descrição para o audiosink do GStreamer pré-definido para eventos de som"
-
-msgid "Describes the selected audiosink element."
-msgstr "Descreve o elemento audiosink selecionado."
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "audiosink do GStreamer pré-definido para Conferência de Áudio e Vídeo"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-"descrição do audiosink do GStreamer pré-definido para Conferência de Áudio e "
-"Vídeo"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "audiosink do GStreamer pré-definido para Músicas e Filmes"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-"descrição para o audiosink do GStreamer pré-definido para Músicas e Filmes"
-
-msgid "default GStreamer videosink"
-msgstr "videosink do GStreamer pré-definido"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"O GStreamer pode reproduzir vídeo utilizando qualquer quantidade de "
-"elementos de saída. Algumas das opções possíveis são xvimagesink, "
-"ximagesink, sdlvideosink e aasink. O videosink pode ser uma fila de "
-"processamento parcial em vez de apenas um elemento."
-
-msgid "description for default GStreamer videosink"
-msgstr "descrição para o videosink do GStreamer pré-definido"
-
-msgid "Describes the selected videosink element."
-msgstr "Descreve o elemento videosink selecionado."
-
-msgid "default GStreamer audiosrc"
-msgstr "audiosrc do GStreamer pré-definido"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"O GStreamer pode gravar áudio utilizando qualquer quantidade de elementos de "
-"entrada. Algumas das opções possíveis são osssrc, pulsesrc e alsasrc. A "
-"fonte de áudio pode ser uma fila de processamento parcial em vez de apenas "
-"um elemento."
-
-msgid "description for default GStreamer audiosrc"
-msgstr "descrição para o audiosrc do GStreamer pré-definido"
-
-msgid "Describes the selected audiosrc element."
-msgstr "Descreve o elemento audiosrc selecionado."
-
-msgid "default GStreamer videosrc"
-msgstr "videosrc do GStreamer pré-definido"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"O GStreamer pode gravar vídeo de qualquer quantidade de elementos de "
-"entrada. Algumas das opções possíveis são v4lsrc, v4l2src e videotestsrc. A "
-"fonte de vídeo pode ser uma fila de processamento parcial em vez de apenas "
-"um elemento."
-
-msgid "description for default GStreamer videosrc"
-msgstr "descrição para o videosrc do GStreamer pré-definido"
-
-msgid "Describes the selected videosrc element."
-msgstr "Descreve o elemento videosrc selecionado."
-
-msgid "default GStreamer visualization"
-msgstr "visualização do GStreamer pré-definida"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"O GStreamer pode colocar plugins de visualização numa fila de processamento "
-"para transformar fluxos de áudio em quadros de vídeo. Algumas das opções "
-"possíveis são goom, goom2k1 e synaesthesia. O plugin de visualização pode "
-"ser uma fila de processamento parcial em vez de apenas um elemento."
-
-msgid "description for default GStreamer visualization"
-msgstr "descrição da visualização do GStreamer pré-definida"
-
-msgid "Describes the selected visualization element."
-msgstr "Descreve o elemento de visualização selecionado."
-
 msgid "OpenCV failed to load template image"
-msgstr ""
+msgstr "O OpenCV falhou ao carregar a imagem modelo"
 
 msgid "Could not read title information for DVD."
 msgstr "Não foi possível ler as informações de título do DVD."
@@ -194,7 +80,7 @@
 "A localização do arquivo está NULA, favor definir um nome de arquivo válido"
 
 msgid "Digitalzoom element couldn't be created"
-msgstr ""
+msgstr "O elemento Digitalzoom não pôde ser criado"
 
 msgid "Subpicture format was not configured before data flow"
 msgstr "O formato de subimagem não foi configurado antes do fluxo de dados"
@@ -258,6 +144,121 @@
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Não foi possível encontrar detalhes para o canal DVB %s"
 
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "audiosink do GStreamer pré-definido para eventos de som"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "O GStreamer pode reproduzir áudio utilizando qualquer quantidade de "
+#~ "elementos de saída. Algumas das opções possíveis são osssink, pulsesink e "
+#~ "alsasink. O audiosink pode ser uma fila de processamento parcial em vez "
+#~ "de apenas um elemento."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr ""
+#~ "descrição para o audiosink do GStreamer pré-definido para eventos de som"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "Descreve o elemento audiosink selecionado."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "audiosink do GStreamer pré-definido para Conferência de Áudio e Vídeo"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "descrição do audiosink do GStreamer pré-definido para Conferência de "
+#~ "Áudio e Vídeo"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "audiosink do GStreamer pré-definido para Músicas e Filmes"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr ""
+#~ "descrição para o audiosink do GStreamer pré-definido para Músicas e Filmes"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "videosink do GStreamer pré-definido"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "O GStreamer pode reproduzir vídeo utilizando qualquer quantidade de "
+#~ "elementos de saída. Algumas das opções possíveis são xvimagesink, "
+#~ "ximagesink, sdlvideosink e aasink. O videosink pode ser uma fila de "
+#~ "processamento parcial em vez de apenas um elemento."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "descrição para o videosink do GStreamer pré-definido"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Descreve o elemento videosink selecionado."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "audiosrc do GStreamer pré-definido"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "O GStreamer pode gravar áudio utilizando qualquer quantidade de elementos "
+#~ "de entrada. Algumas das opções possíveis são osssrc, pulsesrc e alsasrc. "
+#~ "A fonte de áudio pode ser uma fila de processamento parcial em vez de "
+#~ "apenas um elemento."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "descrição para o audiosrc do GStreamer pré-definido"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Descreve o elemento audiosrc selecionado."
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "videosrc do GStreamer pré-definido"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "O GStreamer pode gravar vídeo de qualquer quantidade de elementos de "
+#~ "entrada. Algumas das opções possíveis são v4lsrc, v4l2src e videotestsrc. "
+#~ "A fonte de vídeo pode ser uma fila de processamento parcial em vez de "
+#~ "apenas um elemento."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "descrição para o videosrc do GStreamer pré-definido"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Descreve o elemento videosrc selecionado."
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "visualização do GStreamer pré-definida"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "O GStreamer pode colocar plugins de visualização numa fila de "
+#~ "processamento para transformar fluxos de áudio em quadros de vídeo. "
+#~ "Algumas das opções possíveis são goom, goom2k1 e synaesthesia. O plugin "
+#~ "de visualização pode ser uma fila de processamento parcial em vez de "
+#~ "apenas um elemento."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "descrição da visualização do GStreamer pré-definida"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Descreve o elemento de visualização selecionado."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Não foi possível obter a URI do manifesto"
 
diff --git a/po/ro.gmo b/po/ro.gmo
index 6e65672..5d8a0b7 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index d415301..7195b80 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -20,95 +20,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/ru.gmo b/po/ru.gmo
index 0e19c79..3bc83b7 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index d77accc..ce3683a 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -23,110 +23,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "перед функцией получения не был согласован формат"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "GStreamer audiosink по умолчанию для звуковых событий"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer может воспроизводить аудио через любое количество выходных "
-"элементов. Некоторые варианты: osssink, pulsesink и alsasink. Audiosink "
-"может быть конвейером, а не одиночным элементом."
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr "описание GStreamer audiosink по умолчанию для звуковых событий"
-
-msgid "Describes the selected audiosink element."
-msgstr "Описывает выбранный элемент audiosink."
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "GStreamer audiosink по умолчанию для аудио-видео конференций"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "описание GStreamer audiosink по умолчанию для аудио-видео конференций"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "GStreamer audiosink по умолчанию для музыки и фильмов"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr "описание GStreamer audiosink по умолчанию для музыки и фильмов"
-
-msgid "default GStreamer videosink"
-msgstr "GStreamer videosink по умолчанию"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"GStreamer может воспроизводить видео через любой выходной элемент. Некоторые "
-"варианты: xvimagesink, ximagesink, sdlvideosink и aasink. Videosink может "
-"быть конвейером, а не одиночным элементом."
-
-msgid "description for default GStreamer videosink"
-msgstr "описание GStreamer videosink по умолчанию"
-
-msgid "Describes the selected videosink element."
-msgstr "Описывает выбранный элемент videosink."
-
-msgid "default GStreamer audiosrc"
-msgstr "GStreamer audiosrc по умолчанию"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer может записывать аудио с любого входного элемента. Некоторые "
-"варианты: osssrc, pulsesrc и alsasrc. Источником аудио может быть конвейер, "
-"а не одиночный элемент."
-
-msgid "description for default GStreamer audiosrc"
-msgstr "описание GStreamer audiosrc по умолчанию"
-
-msgid "Describes the selected audiosrc element."
-msgstr "Описывает выбранный элемент audiosrc."
-
-msgid "default GStreamer videosrc"
-msgstr "GStreamer videosrc по умолчанию"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"GStreamer может записывать видео с любого входного элемента. Некоторые "
-"варианты: v4lsrc, v4l2src и videotestsrc. Источником видео может быть "
-"конвейер, а не одиночный элемент."
-
-msgid "description for default GStreamer videosrc"
-msgstr "описание GStreamer videosrc по умолчанию"
-
-msgid "Describes the selected videosrc element."
-msgstr "Описывает выбранный элемент videosrc."
-
-msgid "default GStreamer visualization"
-msgstr "GStreamer visualization по умолчанию"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"GStreamer может помещать модули визуализации для преобразования аудио "
-"потоков видео фрагментов. Некоторые варианты: goom, goom2k1 и synaesthesia. "
-"Модуль визуализации может быть конвейером, а не одиночным элементом."
-
-msgid "description for default GStreamer visualization"
-msgstr "описание GStreamer visualization по умолчанию"
-
-msgid "Describes the selected visualization element."
-msgstr "Описывает выбранный элемент visualization."
-
 msgid "OpenCV failed to load template image"
 msgstr "Ошибка OpenCV при загрузке шаблона изображения"
 
@@ -245,6 +141,112 @@
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Не удалось найти настройки DVB-канала %s"
 
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "GStreamer audiosink по умолчанию для звуковых событий"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer может воспроизводить аудио через любое количество выходных "
+#~ "элементов. Некоторые варианты: osssink, pulsesink и alsasink. Audiosink "
+#~ "может быть конвейером, а не одиночным элементом."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr "описание GStreamer audiosink по умолчанию для звуковых событий"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "Описывает выбранный элемент audiosink."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "GStreamer audiosink по умолчанию для аудио-видео конференций"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "описание GStreamer audiosink по умолчанию для аудио-видео конференций"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "GStreamer audiosink по умолчанию для музыки и фильмов"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr "описание GStreamer audiosink по умолчанию для музыки и фильмов"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "GStreamer videosink по умолчанию"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer может воспроизводить видео через любой выходной элемент. "
+#~ "Некоторые варианты: xvimagesink, ximagesink, sdlvideosink и aasink. "
+#~ "Videosink может быть конвейером, а не одиночным элементом."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "описание GStreamer videosink по умолчанию"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Описывает выбранный элемент videosink."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "GStreamer audiosrc по умолчанию"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer может записывать аудио с любого входного элемента. Некоторые "
+#~ "варианты: osssrc, pulsesrc и alsasrc. Источником аудио может быть "
+#~ "конвейер, а не одиночный элемент."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "описание GStreamer audiosrc по умолчанию"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Описывает выбранный элемент audiosrc."
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "GStreamer videosrc по умолчанию"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer может записывать видео с любого входного элемента. Некоторые "
+#~ "варианты: v4lsrc, v4l2src и videotestsrc. Источником видео может быть "
+#~ "конвейер, а не одиночный элемент."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "описание GStreamer videosrc по умолчанию"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Описывает выбранный элемент videosrc."
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "GStreamer visualization по умолчанию"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "GStreamer может помещать модули визуализации для преобразования аудио "
+#~ "потоков видео фрагментов. Некоторые варианты: goom, goom2k1 и "
+#~ "synaesthesia. Модуль визуализации может быть конвейером, а не одиночным "
+#~ "элементом."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "описание GStreamer visualization по умолчанию"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Описывает выбранный элемент visualization."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Не удалось получить URI манифеста"
 
diff --git a/po/sk.gmo b/po/sk.gmo
index a0bc36d..c1db8dd 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 301fc17..afba085 100644
--- a/po/sk.po
+++ b/po/sk.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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\n"
 "PO-Revision-Date: 2014-01-30 10:44+0100\n"
 "Last-Translator: Peter Tuharsky <tuharsky@misbb.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -24,95 +24,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/sl.gmo b/po/sl.gmo
index 3e47b59..45d2180 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 6a28bca..3023e88 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -25,95 +25,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/sq.gmo b/po/sq.gmo
index 3827420..b7391f4 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index fc72a64..3039868 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -18,95 +18,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr ""
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/sr.gmo b/po/sr.gmo
index 857bae4..f13f6c7 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index c27706d..64efb0b 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\n"
 "PO-Revision-Date: 2015-12-24 11:34+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
@@ -21,112 +21,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "запис није договорен пре функције добављања (get)"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "основни аудио усклађивач звучних догађаја Гстримера"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"Гстример може да пушта аудио користећи било који број излазних елемената. "
-"Неки могући избори су „osssink“, „pulsesink“ и „alsasink“. Аудио усклађивач "
-"може бити делимична спојка уместо само једног елемента."
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr "опис основног аудио усклађивача звучних догађаја Гстримера"
-
-msgid "Describes the selected audiosink element."
-msgstr "Описује изабрани елемент аудио усклађивача."
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "основни аудио усклађивач Гстримера за аудио/видео састанчење"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "опис основног аудио усклађивач Гстримера за аудио/видео састанчење"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "основни аудио усклађивач Гстримера за музику и филмове"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr "опис основног аудио усклађивача Гстримера за музику и филмове"
-
-msgid "default GStreamer videosink"
-msgstr "основни видео усклађивач Гстримера"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"Гстример може да пушта видео користећи било који број излазних елемената. "
-"Неки могући избори су „xvimagesink“, „ximagesink“, „sdlvideosink“ и "
-"„aasink“. Видео усклађивач може бити делимична спојка уместо само једног "
-"елемента."
-
-msgid "description for default GStreamer videosink"
-msgstr "опис основног видео усклађивача Гстримера"
-
-msgid "Describes the selected videosink element."
-msgstr "Описује изабрани елемент видео усклађивача."
-
-msgid "default GStreamer audiosrc"
-msgstr "основни аудио извор Гстримера"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"Гстример може да снима аудио користећи било који број излазних елемената. "
-"Неки могући избори су „osssrc“, „pulsesrc“ и „alsasrc“. Извор звука може "
-"бити делимична спојка уместо само једног елемента."
-
-msgid "description for default GStreamer audiosrc"
-msgstr "опис основног аудио извора Гстримера"
-
-msgid "Describes the selected audiosrc element."
-msgstr "Описује изабрани елемент аудио извора."
-
-msgid "default GStreamer videosrc"
-msgstr "основни видео извор Гстримера"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"Гстример може да снима видео користећи било који број излазних елемената. "
-"Неки могући избори су „v4lsrc“, „v4l2src“ и “videotestsrc“. Извор видеа може "
-"бити делимична спојка уместо само једног елемента."
-
-msgid "description for default GStreamer videosrc"
-msgstr "опис основног видео извора Гстримера"
-
-msgid "Describes the selected videosrc element."
-msgstr "Описује изабрани елемент видео извора."
-
-msgid "default GStreamer visualization"
-msgstr "основно приказивање Гстримера"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"Гстример може да стави прикључке приказивања у спојку да претвори аудио "
-"токове у видео кадрове. Неки могући избори су „goom“, „goom2k1“ и "
-"„synaesthesia“. Прикључак приказивања може бити делимична спојка уместо само "
-"једног елемента."
-
-msgid "description for default GStreamer visualization"
-msgstr "опис основног приказивања Гстримера"
-
-msgid "Describes the selected visualization element."
-msgstr "Описује изабрани елемент приказивања."
-
 msgid "OpenCV failed to load template image"
 msgstr "ОтворениЦВ није успео да учита слику шаблона"
 
@@ -244,6 +138,112 @@
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Не могу да пронађем податке за ДВБ канал „%s“"
 
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "основни аудио усклађивач звучних догађаја Гстримера"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "Гстример може да пушта аудио користећи било који број излазних елемената. "
+#~ "Неки могући избори су „osssink“, „pulsesink“ и „alsasink“. Аудио "
+#~ "усклађивач може бити делимична спојка уместо само једног елемента."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr "опис основног аудио усклађивача звучних догађаја Гстримера"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "Описује изабрани елемент аудио усклађивача."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "основни аудио усклађивач Гстримера за аудио/видео састанчење"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "опис основног аудио усклађивач Гстримера за аудио/видео састанчење"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "основни аудио усклађивач Гстримера за музику и филмове"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr "опис основног аудио усклађивача Гстримера за музику и филмове"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "основни видео усклађивач Гстримера"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "Гстример може да пушта видео користећи било који број излазних елемената. "
+#~ "Неки могући избори су „xvimagesink“, „ximagesink“, „sdlvideosink“ и "
+#~ "„aasink“. Видео усклађивач може бити делимична спојка уместо само једног "
+#~ "елемента."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "опис основног видео усклађивача Гстримера"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Описује изабрани елемент видео усклађивача."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "основни аудио извор Гстримера"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "Гстример може да снима аудио користећи било који број излазних елемената. "
+#~ "Неки могући избори су „osssrc“, „pulsesrc“ и „alsasrc“. Извор звука може "
+#~ "бити делимична спојка уместо само једног елемента."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "опис основног аудио извора Гстримера"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Описује изабрани елемент аудио извора."
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "основни видео извор Гстримера"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "Гстример може да снима видео користећи било који број излазних елемената. "
+#~ "Неки могући избори су „v4lsrc“, „v4l2src“ и “videotestsrc“. Извор видеа "
+#~ "може бити делимична спојка уместо само једног елемента."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "опис основног видео извора Гстримера"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Описује изабрани елемент видео извора."
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "основно приказивање Гстримера"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "Гстример може да стави прикључке приказивања у спојку да претвори аудио "
+#~ "токове у видео кадрове. Неки могући избори су „goom“, „goom2k1“ и "
+#~ "„synaesthesia“. Прикључак приказивања може бити делимична спојка уместо "
+#~ "само једног елемента."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "опис основног приказивања Гстримера"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Описује изабрани елемент приказивања."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Не могу да добавим путању Манифеста"
 
diff --git a/po/sv.gmo b/po/sv.gmo
index e898dff..e6fe364 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 50eb41b..29fb29e 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -21,112 +21,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "formatet förhandlades inte fram innan hämtfunktionen"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "standard GStreamer-ljudutgång för ljudhändelser"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer kan spela upp ljud via ett antal utgångselement. Några möjliga val "
-"är osssink, pulsesink och alsasink. Ljudutgången kan vara en delrörledning "
-"istället för bara ett element."
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr "beskrivning för standard GStreamer-ljudutgång för ljudhändelser"
-
-msgid "Describes the selected audiosink element."
-msgstr "Beskriver det valda ljudutgångselementet."
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "standard GStreamer-ljudutgång för ljud/video-konferenser"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-"beskrivning för standard GStreamer-ljudutgång för ljud/video-konferenser"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "standard GStreamer-ljudutgång för musik och filmer"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr "beskrivning för standard GStreamer-ljudutgång för musik och filmer"
-
-msgid "default GStreamer videosink"
-msgstr "standard GStreamer-videoutgång"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"GStreamer kan spela upp video via ett antal utgångselement. Några möjliga "
-"val är xvimagesink, ximagesink, sdlvideosink och aasink. Videoutgången kan "
-"vara en delrörledning istället för bara ett element."
-
-msgid "description for default GStreamer videosink"
-msgstr "beskrivning för standard GStreamer-videoutgång"
-
-msgid "Describes the selected videosink element."
-msgstr "Beskriver det valda videoutgångselementet."
-
-msgid "default GStreamer audiosrc"
-msgstr "standard GStreamer-ljudkälla"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer kan spela in ljud från ett antal ingångselement. Några möjliga val "
-"är osssrc, pulsesrc och alsasrc. Ljudkällan kan vara en delrörledning "
-"istället för bara ett element."
-
-msgid "description for default GStreamer audiosrc"
-msgstr "beskrivning för standard GStreamer-ljudkälla"
-
-msgid "Describes the selected audiosrc element."
-msgstr "Beskriver det valda ljudkällselementet."
-
-msgid "default GStreamer videosrc"
-msgstr "standard GStreamer-videokälla"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"GStreamer kan spela in video från ett antal ingångselement. Några möjliga "
-"val är v4lsrc, v4l2src och videotestsrc. Videokällan kan vara en "
-"delrörledning istället för bara ett element."
-
-msgid "description for default GStreamer videosrc"
-msgstr "beskrivning för standard GStreamer-videokälla"
-
-msgid "Describes the selected videosrc element."
-msgstr "Beskriver det valda videokällselementet."
-
-msgid "default GStreamer visualization"
-msgstr "standard GStreamer-visualisering"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"GStreamer kan lägga in insticksmoduler för visualisering i en pipeline för "
-"att transformera ljudströmmar till videobilder. Några möjliga val är goom, "
-"goom2k1 och synaesthesia. Visualiseringsinsticksmodulen kan vara en "
-"delrörledning istället för bara ett element."
-
-msgid "description for default GStreamer visualization"
-msgstr "beskrivning för standard GStreamer-visualisering"
-
-msgid "Describes the selected visualization element."
-msgstr "Beskriver det valda visualiseringselementet."
-
 msgid "OpenCV failed to load template image"
 msgstr "OpenCV misslyckades med att läsa in mallbild"
 
@@ -242,6 +136,112 @@
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Kunde ej hitta detaljer för DVB-kanal %s"
 
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "standard GStreamer-ljudutgång för ljudhändelser"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan spela upp ljud via ett antal utgångselement. Några möjliga "
+#~ "val är osssink, pulsesink och alsasink. Ljudutgången kan vara en "
+#~ "delrörledning istället för bara ett element."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr "beskrivning för standard GStreamer-ljudutgång för ljudhändelser"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "Beskriver det valda ljudutgångselementet."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "standard GStreamer-ljudutgång för ljud/video-konferenser"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "beskrivning för standard GStreamer-ljudutgång för ljud/video-konferenser"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "standard GStreamer-ljudutgång för musik och filmer"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr "beskrivning för standard GStreamer-ljudutgång för musik och filmer"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "standard GStreamer-videoutgång"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan spela upp video via ett antal utgångselement. Några möjliga "
+#~ "val är xvimagesink, ximagesink, sdlvideosink och aasink. Videoutgången "
+#~ "kan vara en delrörledning istället för bara ett element."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "beskrivning för standard GStreamer-videoutgång"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Beskriver det valda videoutgångselementet."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "standard GStreamer-ljudkälla"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan spela in ljud från ett antal ingångselement. Några möjliga "
+#~ "val är osssrc, pulsesrc och alsasrc. Ljudkällan kan vara en delrörledning "
+#~ "istället för bara ett element."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "beskrivning för standard GStreamer-ljudkälla"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Beskriver det valda ljudkällselementet."
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "standard GStreamer-videokälla"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer kan spela in video från ett antal ingångselement. Några möjliga "
+#~ "val är v4lsrc, v4l2src och videotestsrc. Videokällan kan vara en "
+#~ "delrörledning istället för bara ett element."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "beskrivning för standard GStreamer-videokälla"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Beskriver det valda videokällselementet."
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "standard GStreamer-visualisering"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "GStreamer kan lägga in insticksmoduler för visualisering i en pipeline "
+#~ "för att transformera ljudströmmar till videobilder. Några möjliga val är "
+#~ "goom, goom2k1 och synaesthesia. Visualiseringsinsticksmodulen kan vara en "
+#~ "delrörledning istället för bara ett element."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "beskrivning för standard GStreamer-visualisering"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Beskriver det valda visualiseringselementet."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Kunde ej hämta manifestets URI"
 
diff --git a/po/tr.gmo b/po/tr.gmo
index ef7dec7..c4a5d18 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 2a9582d..4a3a29d 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -21,95 +21,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "get fonksiyonundan önce biçim görüşülemedi"
 
-msgid "default GStreamer sound events audiosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr ""
-
-msgid "Describes the selected audiosink element."
-msgstr ""
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr ""
-
-msgid "default GStreamer videosink"
-msgstr ""
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosink"
-msgstr ""
-
-msgid "Describes the selected videosink element."
-msgstr ""
-
-msgid "default GStreamer audiosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer audiosrc"
-msgstr ""
-
-msgid "Describes the selected audiosrc element."
-msgstr ""
-
-msgid "default GStreamer videosrc"
-msgstr ""
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-
-msgid "description for default GStreamer videosrc"
-msgstr ""
-
-msgid "Describes the selected videosrc element."
-msgstr ""
-
-msgid "default GStreamer visualization"
-msgstr ""
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-
-msgid "description for default GStreamer visualization"
-msgstr ""
-
-msgid "Describes the selected visualization element."
-msgstr ""
-
 msgid "OpenCV failed to load template image"
 msgstr ""
 
diff --git a/po/uk.gmo b/po/uk.gmo
index 80a0132..114b0a2 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index bf12352..c17449e 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -23,116 +23,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "формат не було узгоджено до виклику функції get"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "типовий приймач звукових подій GStreamer"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"У GStreamer передбачено можливість відтворення звукових даних за допомогою "
-"довільної кількості елементів виведення. Серед можливих варіантів osssink, "
-"pulsesink та alsasink. Звуковий приймач може бути окремим каналом, а не "
-"одним елементом."
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr "опис типового приймача звукових подій GStreamer"
-
-msgid "Describes the selected audiosink element."
-msgstr "Описує вибраний елемент audiosink."
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "типовий звуковий приймач GStreamer для звукових та відеоконференцій"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr ""
-"опис типового звукового приймача GStreamer для звукових та відеоконференцій"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "типовий звуковий приймач GStreamer для музики і фільмів"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr "опис типового звукового приймача GStreamer для музики і фільмів"
-
-msgid "default GStreamer videosink"
-msgstr "типовий відеоприймач GStreamer"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"У GStreamer передбачено відтворення відео за допомогою довільної кількості "
-"елементів виведення. Серед можливих варіантів xvimagesink, ximagesink, "
-"sdlvideosink та aasink. Приймач відеоданих може бути окремим каналом з "
-"декількох обробників, а не просто одним елементом."
-
-msgid "description for default GStreamer videosink"
-msgstr "опис типового відеоприймача GStreamer"
-
-msgid "Describes the selected videosink element."
-msgstr "Описує вибраний елемент videosink."
-
-msgid "default GStreamer audiosrc"
-msgstr "типове джерело звуку GStreamer"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"У GStreamer передбачено можливість запису звукових даних за допомогою "
-"довільної кількості елементів вхідних даних. Серед можливих варіантів "
-"osssrc, pulsesrc та alsasrc. Джерелом звукових даних може бути окремий канал "
-"з декількох елементів, а не просто один елемент."
-
-msgid "description for default GStreamer audiosrc"
-msgstr "опис типового джерела звуку GStreamer"
-
-msgid "Describes the selected audiosrc element."
-msgstr "Описує вибраний елемент audiosrc."
-
-msgid "default GStreamer videosrc"
-msgstr "типове джерело відео GStreamer"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"У GStreamer передбачено можливість запису відеоданих за допомогою довільної "
-"кількості елементів вхідних даних. Серед можливих варіантів v4lsrc, v4l2src "
-"та videotestsrc. Джерелом відеоданих може бути окремий канал з декількох "
-"елементів, а не просто один елемент."
-
-msgid "description for default GStreamer videosrc"
-msgstr "опис типового джерела відео GStreamer"
-
-msgid "Describes the selected videosrc element."
-msgstr "Описує вибраний елемент videosrc."
-
-msgid "default GStreamer visualization"
-msgstr "типова візуалізація GStreamer"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"У GStreamer передбачено додавання до каналу обробки додатків візуалізації "
-"для обробки потоків звукових даних у кадрах відео. Серед можливих варіантів "
-"goom, goom2k1 та synaesthesia. Додаток візуалізації може бути окремим "
-"каналом, а не просто одним елементом."
-
-msgid "description for default GStreamer visualization"
-msgstr "опис типової візуалізації GStreamer"
-
-msgid "Describes the selected visualization element."
-msgstr "Описує вибраний елемент візуалізації."
-
 msgid "OpenCV failed to load template image"
 msgstr "OpenCV не вдалося завантажити зображення шаблону"
 
@@ -256,6 +146,117 @@
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Не вдалося знайти параметрів каналу DVB %s"
 
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "типовий приймач звукових подій GStreamer"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "У GStreamer передбачено можливість відтворення звукових даних за "
+#~ "допомогою довільної кількості елементів виведення. Серед можливих "
+#~ "варіантів osssink, pulsesink та alsasink. Звуковий приймач може бути "
+#~ "окремим каналом, а не одним елементом."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr "опис типового приймача звукових подій GStreamer"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "Описує вибраний елемент audiosink."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "типовий звуковий приймач GStreamer для звукових та відеоконференцій"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr ""
+#~ "опис типового звукового приймача GStreamer для звукових та "
+#~ "відеоконференцій"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "типовий звуковий приймач GStreamer для музики і фільмів"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr "опис типового звукового приймача GStreamer для музики і фільмів"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "типовий відеоприймач GStreamer"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "У GStreamer передбачено відтворення відео за допомогою довільної "
+#~ "кількості елементів виведення. Серед можливих варіантів xvimagesink, "
+#~ "ximagesink, sdlvideosink та aasink. Приймач відеоданих може бути окремим "
+#~ "каналом з декількох обробників, а не просто одним елементом."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "опис типового відеоприймача GStreamer"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Описує вибраний елемент videosink."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "типове джерело звуку GStreamer"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "У GStreamer передбачено можливість запису звукових даних за допомогою "
+#~ "довільної кількості елементів вхідних даних. Серед можливих варіантів "
+#~ "osssrc, pulsesrc та alsasrc. Джерелом звукових даних може бути окремий "
+#~ "канал з декількох елементів, а не просто один елемент."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "опис типового джерела звуку GStreamer"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Описує вибраний елемент audiosrc."
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "типове джерело відео GStreamer"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "У GStreamer передбачено можливість запису відеоданих за допомогою "
+#~ "довільної кількості елементів вхідних даних. Серед можливих варіантів "
+#~ "v4lsrc, v4l2src та videotestsrc. Джерелом відеоданих може бути окремий "
+#~ "канал з декількох елементів, а не просто один елемент."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "опис типового джерела відео GStreamer"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Описує вибраний елемент videosrc."
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "типова візуалізація GStreamer"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "У GStreamer передбачено додавання до каналу обробки додатків візуалізації "
+#~ "для обробки потоків звукових даних у кадрах відео. Серед можливих "
+#~ "варіантів goom, goom2k1 та synaesthesia. Додаток візуалізації може бути "
+#~ "окремим каналом, а не просто одним елементом."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "опис типової візуалізації GStreamer"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Описує вибраний елемент візуалізації."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Не вдалося отримати адреси Manifest"
 
diff --git a/po/vi.gmo b/po/vi.gmo
index 8ee969e..ec5c7a4 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 259fc0a..6bc4f49 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -23,111 +23,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "định dạng không được dàn xếp trước hàm"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "các sự kiện âm thanh GStreamer mặc định cho “audiosink”"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer có thể phát nhạc với bất kỳ số lượng phần tử đầu ra nào. Một số có "
-"thể chọn lựa là osssink, pulsesink và alsasink. “audiosink” có thể là đường "
-"ống đặc biệt thay vì chỉ một phần tử."
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr "mô tả cho các sự kiện âm thanh GStreamer mặc định dành cho “audiosink”"
-
-msgid "Describes the selected audiosink element."
-msgstr "Mô tả về phần tử “audiosink” đã chọn."
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "“GStreamer audiosink” mặc định dành cho Hội nghị Nhạc/Phim"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "mô tả cho GStreamer audiosink mặc định dành cho Hội nghị Nhạc/Phim"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "GStreamer audiosink mặc định dành cho Âm nhạc và Phim"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr "mô tả cho GStreamer audiosink mặc định dành cho Âm nhạc và Phim"
-
-msgid "default GStreamer videosink"
-msgstr "GStreamer videosink mặc định"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"GStreamer có thể chạy phim với bất kỳ số lượng phần tử đầu ra nào. Một số có "
-"thể chọn lựa là xvimagesink, ximagesink, sdlvideosink và aasink. “videosink” "
-"có thể là đường ống đặc biệt thay vì chỉ một phần tử."
-
-msgid "description for default GStreamer videosink"
-msgstr "mô tả phần tử nguồn hình ảnh GStreamer mặc định"
-
-msgid "Describes the selected videosink element."
-msgstr "Mô tả phần tử videosink đã chọn."
-
-msgid "default GStreamer audiosrc"
-msgstr "nguồn âm thanh GStreamer mặc định"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer có thể ghi âm thanh dùng bao nhiêu phần tử đầu vào cũng được. Một "
-"số lựa chọn là osssrc, plusesrc và alsasrc. Nguồn âm thanh có thể là các "
-"đường ống cục bộ nào đó thay vì chỉ một phần tử nguồn."
-
-msgid "description for default GStreamer audiosrc"
-msgstr "mô tả phần tử nguồn âm thanh GStreamer mặc định"
-
-msgid "Describes the selected audiosrc element."
-msgstr "Mô tả phần tử nguồn âm thanh đã chọn."
-
-msgid "default GStreamer videosrc"
-msgstr "nguồn hình ảnh GStreamer mặc định"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"GStreamer có thể chạy phim với bất kỳ số lượng phần tử đầu vào nào. Một số "
-"có thể chọn lựa là v4lsrc, v4l2src và videotestsrc. Nguồn hình có thể là "
-"đường ống đặc biệt thay vì chỉ một phần tử."
-
-msgid "description for default GStreamer videosrc"
-msgstr "mô tả cho nguồn hình GStreamer mặc định"
-
-msgid "Describes the selected videosrc element."
-msgstr "Mô tả phần tử nguồn hình ảnh đã chọn."
-
-msgid "default GStreamer visualization"
-msgstr "hiện hình GStreamer mặc định"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"GStreamer có thể đặt phần bổ xung hiện hình trong một đường ống để mà chuyển "
-"dạng luồng dữ liệu âm thanh trong khung hình phim. Một số có thể chọn lựa là "
-"goom, goom2k1 và synaesthesia. Phần bổ xung hiện hình có thể là đường ống "
-"đặc biệt thay vì chỉ một phần tử."
-
-msgid "description for default GStreamer visualization"
-msgstr "mô tả về hiện hình GStreamer mặc định"
-
-msgid "Describes the selected visualization element."
-msgstr "Mô tả về phần tử hiện hình đã chọn."
-
 msgid "OpenCV failed to load template image"
 msgstr "OpenCV gặp lỗi khi tải ảnh tạm thời"
 
@@ -247,6 +142,112 @@
 msgid "Couldn't find details for DVB channel %s"
 msgstr "Không thể tìm thấy chi tiết cho kênh DVB %s"
 
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "các sự kiện âm thanh GStreamer mặc định cho “audiosink”"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer có thể phát nhạc với bất kỳ số lượng phần tử đầu ra nào. Một số "
+#~ "có thể chọn lựa là osssink, pulsesink và alsasink. “audiosink” có thể là "
+#~ "đường ống đặc biệt thay vì chỉ một phần tử."
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr ""
+#~ "mô tả cho các sự kiện âm thanh GStreamer mặc định dành cho “audiosink”"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "Mô tả về phần tử “audiosink” đã chọn."
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "“GStreamer audiosink” mặc định dành cho Hội nghị Nhạc/Phim"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "mô tả cho GStreamer audiosink mặc định dành cho Hội nghị Nhạc/Phim"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "GStreamer audiosink mặc định dành cho Âm nhạc và Phim"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr "mô tả cho GStreamer audiosink mặc định dành cho Âm nhạc và Phim"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "GStreamer videosink mặc định"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer có thể chạy phim với bất kỳ số lượng phần tử đầu ra nào. Một số "
+#~ "có thể chọn lựa là xvimagesink, ximagesink, sdlvideosink và aasink. "
+#~ "“videosink” có thể là đường ống đặc biệt thay vì chỉ một phần tử."
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "mô tả phần tử nguồn hình ảnh GStreamer mặc định"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "Mô tả phần tử videosink đã chọn."
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "nguồn âm thanh GStreamer mặc định"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer có thể ghi âm thanh dùng bao nhiêu phần tử đầu vào cũng được. "
+#~ "Một số lựa chọn là osssrc, plusesrc và alsasrc. Nguồn âm thanh có thể là "
+#~ "các đường ống cục bộ nào đó thay vì chỉ một phần tử nguồn."
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "mô tả phần tử nguồn âm thanh GStreamer mặc định"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "Mô tả phần tử nguồn âm thanh đã chọn."
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "nguồn hình ảnh GStreamer mặc định"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer có thể chạy phim với bất kỳ số lượng phần tử đầu vào nào. Một "
+#~ "số có thể chọn lựa là v4lsrc, v4l2src và videotestsrc. Nguồn hình có thể "
+#~ "là đường ống đặc biệt thay vì chỉ một phần tử."
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "mô tả cho nguồn hình GStreamer mặc định"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "Mô tả phần tử nguồn hình ảnh đã chọn."
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "hiện hình GStreamer mặc định"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "GStreamer có thể đặt phần bổ xung hiện hình trong một đường ống để mà "
+#~ "chuyển dạng luồng dữ liệu âm thanh trong khung hình phim. Một số có thể "
+#~ "chọn lựa là goom, goom2k1 và synaesthesia. Phần bổ xung hiện hình có thể "
+#~ "là đường ống đặc biệt thay vì chỉ một phần tử."
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "mô tả về hiện hình GStreamer mặc định"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "Mô tả về phần tử hiện hình đã chọn."
+
 #~ msgid "Couldn't get the Manifest's URI"
 #~ msgstr "Không thể lấy URI của Manifest"
 
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 89c6a1d..9a02b52 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 73a0da0..37bf78f 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: 2015-12-24 13:55+0100\n"
+"POT-Creation-Date: 2016-02-19 10:32+0200\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"
@@ -22,107 +22,6 @@
 msgid "format wasn't negotiated before get function"
 msgstr "在调用get函数之前未确定合适的格式"
 
-msgid "default GStreamer sound events audiosink"
-msgstr "默认GStreamer声音事件的音频汇"
-
-msgid ""
-"GStreamer can play audio using any number of output elements. Some possible "
-"choices are osssink, pulsesink and alsasink. The audiosink can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer可以使用任意数量的输出组件播放音频。可能的选择有osssink、pulsesink和"
-"alsasink。音频汇可以是管道的一部分,而不仅仅为一个组件。"
-
-msgid "description for default GStreamer sound events audiosink"
-msgstr "有关默认GStreamer声音事件的音频汇的说明"
-
-msgid "Describes the selected audiosink element."
-msgstr "描述选定的音频汇组件"
-
-msgid "default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "用于音/视频会议的默认Gstreamer音频汇"
-
-msgid ""
-"description for default GStreamer audiosink for Audio/Video Conferencing"
-msgstr "有关用于音/视频会议的默认Gstreamer音频汇的描述"
-
-msgid "default GStreamer audiosink for Music and Movies"
-msgstr "用于音乐和电影的默认Gstreamer音频汇"
-
-msgid "description for default GStreamer audiosink for Music and Movies"
-msgstr "有关音乐和电影的默认Gstreamer音频汇的描述"
-
-msgid "default GStreamer videosink"
-msgstr "默认GStreamer的视频汇"
-
-msgid ""
-"GStreamer can play video using any number of output elements. Some possible "
-"choices are xvimagesink, ximagesink, sdlvideosink and aasink. The videosink "
-"can be a partial pipeline instead of just one element."
-msgstr ""
-"GStreamer可以使用任意数量的输出组件播放视频。可能的选择有xvimagesink、"
-"ximagesink、sdlvideosink和aasink。视频汇可以是管道的一部分,而不仅仅为一个组"
-"件。"
-
-msgid "description for default GStreamer videosink"
-msgstr "有关默认GStreamer视频汇的描述"
-
-msgid "Describes the selected videosink element."
-msgstr "描述选定的视频汇组件"
-
-msgid "default GStreamer audiosrc"
-msgstr "默认GStreamer音频源"
-
-msgid ""
-"GStreamer can record audio using any number of input elements. Some possible "
-"choices are osssrc, pulsesrc and alsasrc. The audio source can be a partial "
-"pipeline instead of just one element."
-msgstr ""
-"GStreamer可以使用任意数量的输入组件来记录音频。可能的选择有osssrc、pulsesrc和"
-"alsasrc。音频源可以是管道的一部分,而不仅仅为一个组件。"
-
-msgid "description for default GStreamer audiosrc"
-msgstr "有关默认GStreamer音频源的描述"
-
-msgid "Describes the selected audiosrc element."
-msgstr "描述选定的音频源组件"
-
-msgid "default GStreamer videosrc"
-msgstr "默认GStreamer视频源"
-
-msgid ""
-"GStreamer can record video from any number of input elements. Some possible "
-"choices are v4lsrc, v4l2src and videotestsrc. The video source can be a "
-"partial pipeline instead of just one element."
-msgstr ""
-"GStreamer可以使用任意数量的输出组件播放视频。可能的选择有v4lsrc、v4l2src和"
-"videotestsrc。视频源可以是管道的一部分,而不仅仅为一个组件。"
-
-msgid "description for default GStreamer videosrc"
-msgstr "有关默认GStreamer视频源的描述"
-
-msgid "Describes the selected videosrc element."
-msgstr "描述选定的视频源组件"
-
-msgid "default GStreamer visualization"
-msgstr "默认Gstreamer可视化组件"
-
-msgid ""
-"GStreamer can put visualization plugins in a pipeline to transform audio "
-"streams in video frames. Some possible choices are goom, goom2k1 and "
-"synaesthesia. The visualization plugin can be a partial pipeline instead of "
-"just one element."
-msgstr ""
-"GStreamer可以将可视化插件加载于管道中,并在视频帧中传递音频流。可能的选择有"
-"goom、goom2k1和synaesthesia。可视化插件可以是管道的一部分,而不仅仅为一个组"
-"件。"
-
-msgid "description for default GStreamer visualization"
-msgstr "有关默认Gstreamer可视化组件的描述"
-
-msgid "Describes the selected visualization element."
-msgstr "描述选定的可视化组件"
-
 msgid "OpenCV failed to load template image"
 msgstr "OpenCV加载模版图片失败"
 
@@ -235,6 +134,107 @@
 msgid "Couldn't find details for DVB channel %s"
 msgstr "无法获取DVB通道 %s 的详细信息"
 
+#~ msgid "default GStreamer sound events audiosink"
+#~ msgstr "默认GStreamer声音事件的音频汇"
+
+#~ msgid ""
+#~ "GStreamer can play audio using any number of output elements. Some "
+#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer可以使用任意数量的输出组件播放音频。可能的选择有osssink、"
+#~ "pulsesink和alsasink。音频汇可以是管道的一部分,而不仅仅为一个组件。"
+
+#~ msgid "description for default GStreamer sound events audiosink"
+#~ msgstr "有关默认GStreamer声音事件的音频汇的说明"
+
+#~ msgid "Describes the selected audiosink element."
+#~ msgstr "描述选定的音频汇组件"
+
+#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "用于音/视频会议的默认Gstreamer音频汇"
+
+#~ msgid ""
+#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
+#~ msgstr "有关用于音/视频会议的默认Gstreamer音频汇的描述"
+
+#~ msgid "default GStreamer audiosink for Music and Movies"
+#~ msgstr "用于音乐和电影的默认Gstreamer音频汇"
+
+#~ msgid "description for default GStreamer audiosink for Music and Movies"
+#~ msgstr "有关音乐和电影的默认Gstreamer音频汇的描述"
+
+#~ msgid "default GStreamer videosink"
+#~ msgstr "默认GStreamer的视频汇"
+
+#~ msgid ""
+#~ "GStreamer can play video using any number of output elements. Some "
+#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
+#~ "The videosink can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer可以使用任意数量的输出组件播放视频。可能的选择有xvimagesink、"
+#~ "ximagesink、sdlvideosink和aasink。视频汇可以是管道的一部分,而不仅仅为一个"
+#~ "组件。"
+
+#~ msgid "description for default GStreamer videosink"
+#~ msgstr "有关默认GStreamer视频汇的描述"
+
+#~ msgid "Describes the selected videosink element."
+#~ msgstr "描述选定的视频汇组件"
+
+#~ msgid "default GStreamer audiosrc"
+#~ msgstr "默认GStreamer音频源"
+
+#~ msgid ""
+#~ "GStreamer can record audio using any number of input elements. Some "
+#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
+#~ "be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer可以使用任意数量的输入组件来记录音频。可能的选择有osssrc、"
+#~ "pulsesrc和alsasrc。音频源可以是管道的一部分,而不仅仅为一个组件。"
+
+#~ msgid "description for default GStreamer audiosrc"
+#~ msgstr "有关默认GStreamer音频源的描述"
+
+#~ msgid "Describes the selected audiosrc element."
+#~ msgstr "描述选定的音频源组件"
+
+#~ msgid "default GStreamer videosrc"
+#~ msgstr "默认GStreamer视频源"
+
+#~ msgid ""
+#~ "GStreamer can record video from any number of input elements. Some "
+#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
+#~ "can be a partial pipeline instead of just one element."
+#~ msgstr ""
+#~ "GStreamer可以使用任意数量的输出组件播放视频。可能的选择有v4lsrc、v4l2src和"
+#~ "videotestsrc。视频源可以是管道的一部分,而不仅仅为一个组件。"
+
+#~ msgid "description for default GStreamer videosrc"
+#~ msgstr "有关默认GStreamer视频源的描述"
+
+#~ msgid "Describes the selected videosrc element."
+#~ msgstr "描述选定的视频源组件"
+
+#~ msgid "default GStreamer visualization"
+#~ msgstr "默认Gstreamer可视化组件"
+
+#~ msgid ""
+#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
+#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
+#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
+#~ "of just one element."
+#~ msgstr ""
+#~ "GStreamer可以将可视化插件加载于管道中,并在视频帧中传递音频流。可能的选择"
+#~ "有goom、goom2k1和synaesthesia。可视化插件可以是管道的一部分,而不仅仅为一"
+#~ "个组件。"
+
+#~ msgid "description for default GStreamer visualization"
+#~ msgstr "有关默认Gstreamer可视化组件的描述"
+
+#~ msgid "Describes the selected visualization element."
+#~ msgstr "描述选定的可视化组件"
+
 #~ msgid "Internal clock error."
 #~ msgstr "内部时钟错误。"
 
diff --git a/sys/Makefile.am b/sys/Makefile.am
index a0d7ca6..32f79fb 100644
--- a/sys/Makefile.am
+++ b/sys/Makefile.am
@@ -28,12 +28,6 @@
 BLUEZ_DIR=
 endif
 
-# if USE_CDROM
-#  CDROM_DIR=cdrom
-# else
-# CDROM_DIR=
-# endif
-
 if USE_WASAPI
 WASAPI_DIR=wasapi
 else
@@ -148,10 +142,16 @@
 NVENC_DIR=
 endif
 
-SUBDIRS = $(ACM_DIR) $(ANDROID_MEDIA_DIR) $(APPLE_MEDIA_DIR) $(AVC_DIR) $(BLUEZ_DIR) $(D3DVIDEOSINK_DIR) $(DECKLINK_DIR) $(DIRECTSOUND_DIR) $(WINKS_DIR) $(DVB_DIR) $(FBDEV_DIR) $(LINSYS_DIR) $(OPENSLES_DIR) $(PVR_DIR) $(SHM_DIR) $(UVCH264_DIR) $(VCD_DIR) $(VDPAU_DIR) $(WININET_DIR) $(WINSCREENCAP_DIR) $(WASAPI_DIR) $(NVENC_DIR)
+if USE_TINYALSA
+TINYALSA_DIR=tinyalsa
+else
+TINYALSA_DIR=
+endif
+
+SUBDIRS = $(ACM_DIR) $(ANDROID_MEDIA_DIR) $(APPLE_MEDIA_DIR) $(AVC_DIR) $(BLUEZ_DIR) $(D3DVIDEOSINK_DIR) $(DECKLINK_DIR) $(DIRECTSOUND_DIR) $(WINKS_DIR) $(DVB_DIR) $(FBDEV_DIR) $(LINSYS_DIR) $(OPENSLES_DIR) $(PVR_DIR) $(SHM_DIR) $(UVCH264_DIR) $(VCD_DIR) $(VDPAU_DIR) $(WININET_DIR) $(WINSCREENCAP_DIR) $(WASAPI_DIR) $(NVENC_DIR) $(TINYALSA_DIR)
 
 DIST_SUBDIRS = acmenc acmmp3dec androidmedia applemedia applemedia-nonpublic avc bluez d3dvideosink decklink directsound dvb linsys fbdev dshowdecwrapper dshowsrcwrapper dshowvideosink \
 		opensles pvr2d shm uvch264 vcd vdpau wasapi wininet winks winscreencap \
-		nvenc
+		nvenc tinyalsa
 
 include $(top_srcdir)/common/parallel-subdirs.mak
diff --git a/sys/Makefile.in b/sys/Makefile.in
index a6e83b8..ad69ce7 100644
--- a/sys/Makefile.in
+++ b/sys/Makefile.in
@@ -119,16 +119,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -302,7 +301,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -324,7 +322,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -346,9 +343,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -510,6 +504,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -523,8 +518,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -611,8 +604,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -664,6 +655,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -684,6 +676,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -721,7 +715,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -772,12 +765,6 @@
 @USE_BLUEZ_FALSE@BLUEZ_DIR = 
 @USE_BLUEZ_TRUE@BLUEZ_DIR = bluez
 @USE_WASAPI_FALSE@WASAPI_DIR = 
-
-# if USE_CDROM
-#  CDROM_DIR=cdrom
-# else
-# CDROM_DIR=
-# endif
 @USE_WASAPI_TRUE@WASAPI_DIR = wasapi
 @USE_DIRECT3D_FALSE@D3DVIDEOSINK_DIR = 
 @USE_DIRECT3D_TRUE@D3DVIDEOSINK_DIR = d3dvideosink
@@ -823,10 +810,12 @@
 @USE_UVCH264_TRUE@UVCH264_DIR = uvch264
 @USE_NVENC_FALSE@NVENC_DIR = 
 @USE_NVENC_TRUE@NVENC_DIR = nvenc
-SUBDIRS = $(ACM_DIR) $(ANDROID_MEDIA_DIR) $(APPLE_MEDIA_DIR) $(AVC_DIR) $(BLUEZ_DIR) $(D3DVIDEOSINK_DIR) $(DECKLINK_DIR) $(DIRECTSOUND_DIR) $(WINKS_DIR) $(DVB_DIR) $(FBDEV_DIR) $(LINSYS_DIR) $(OPENSLES_DIR) $(PVR_DIR) $(SHM_DIR) $(UVCH264_DIR) $(VCD_DIR) $(VDPAU_DIR) $(WININET_DIR) $(WINSCREENCAP_DIR) $(WASAPI_DIR) $(NVENC_DIR)
+@USE_TINYALSA_FALSE@TINYALSA_DIR = 
+@USE_TINYALSA_TRUE@TINYALSA_DIR = tinyalsa
+SUBDIRS = $(ACM_DIR) $(ANDROID_MEDIA_DIR) $(APPLE_MEDIA_DIR) $(AVC_DIR) $(BLUEZ_DIR) $(D3DVIDEOSINK_DIR) $(DECKLINK_DIR) $(DIRECTSOUND_DIR) $(WINKS_DIR) $(DVB_DIR) $(FBDEV_DIR) $(LINSYS_DIR) $(OPENSLES_DIR) $(PVR_DIR) $(SHM_DIR) $(UVCH264_DIR) $(VCD_DIR) $(VDPAU_DIR) $(WININET_DIR) $(WINSCREENCAP_DIR) $(WASAPI_DIR) $(NVENC_DIR) $(TINYALSA_DIR)
 DIST_SUBDIRS = acmenc acmmp3dec androidmedia applemedia applemedia-nonpublic avc bluez d3dvideosink decklink directsound dvb linsys fbdev dshowdecwrapper dshowsrcwrapper dshowvideosink \
 		opensles pvr2d shm uvch264 vcd vdpau wasapi wininet winks winscreencap \
-		nvenc
+		nvenc tinyalsa
 
 all: all-recursive
 
diff --git a/sys/acmenc/Makefile.in b/sys/acmenc/Makefile.in
index bb753fe..069cdbe 100644
--- a/sys/acmenc/Makefile.in
+++ b/sys/acmenc/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -320,7 +319,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -342,7 +340,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -364,9 +361,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -528,6 +522,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -541,8 +536,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -629,8 +622,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -682,6 +673,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -702,6 +694,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -739,7 +733,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/acmenc/acmenc.c b/sys/acmenc/acmenc.c
index 601c937..7a1c1ff 100644
--- a/sys/acmenc/acmenc.c
+++ b/sys/acmenc/acmenc.c
@@ -407,7 +407,6 @@
       GstCaps *caps;
       gst_event_parse_caps (event, &caps);
       return acmenc_sink_setcaps (pad, caps);
-      break;
     }
     case GST_EVENT_EOS:
       acmenc_finish_stream (enc);
diff --git a/sys/acmmp3dec/Makefile.in b/sys/acmmp3dec/Makefile.in
index 125375f..aea6639 100644
--- a/sys/acmmp3dec/Makefile.in
+++ b/sys/acmmp3dec/Makefile.in
@@ -115,16 +115,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -320,7 +319,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -342,7 +340,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -364,9 +361,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -528,6 +522,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -541,8 +536,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -629,8 +622,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -682,6 +673,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -702,6 +694,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -739,7 +733,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/acmmp3dec/acmmp3dec.c b/sys/acmmp3dec/acmmp3dec.c
index a0b9c36..7537691 100644
--- a/sys/acmmp3dec/acmmp3dec.c
+++ b/sys/acmmp3dec/acmmp3dec.c
@@ -365,7 +365,6 @@
       GstCaps *caps;
       gst_event_parse_caps (event, &caps);
       return acmmp3dec_sink_setcaps (pad, caps);
-      break;
     }
     case GST_EVENT_EOS:
       acmmp3dec_finish_stream (dec);
diff --git a/sys/androidmedia/Makefile.am b/sys/androidmedia/Makefile.am
index a04b0ad..7ad9b6e 100644
--- a/sys/androidmedia/Makefile.am
+++ b/sys/androidmedia/Makefile.am
@@ -1,22 +1,30 @@
 plugin_LTLIBRARIES = libgstandroidmedia.la
 
 libgstandroidmedia_la_SOURCES = \
-	gstamc.c \
+	gstahcsrc.c \
 	gstamcaudiodec.c \
-	gstamcvideodec.c \
-	gstamcvideoenc.c \
+	gstamc.c \
 	gstamcsurface.c \
 	gstamcsurfacetexture.c \
+	gstamcvideodec.c \
+	gstamcvideoenc.c \
+	gst-android-graphics-imageformat.c \
+	gst-android-graphics-surfacetexture.c \
+	gst-android-hardware-camera.c \
 	gstjniutils.c
 
 noinst_HEADERS = \
-	gstamc.h \
-	gstamc-constants.h \
+	gstahcsrc.h \
 	gstamcaudiodec.h \
-	gstamcvideodec.h \
-	gstamcvideoenc.h \
+	gstamc-constants.h \
+	gstamc.h \
 	gstamcsurface.h \
 	gstamcsurfacetexture.h \
+	gstamcvideodec.h \
+	gstamcvideoenc.h \
+	gst-android-graphics-imageformat.h \
+	gst-android-graphics-surfacetexture.h \
+	gst-android-hardware-camera.h \
 	gstjniutils.h
 
 libgstandroidmedia_la_CFLAGS = \
@@ -25,8 +33,11 @@
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) \
 	$(GST_CFLAGS) \
-	$(ORC_CFLAGS)
+	$(ORC_CFLAGS) \
+	-DGST_USE_UNSTABLE_API
+
 libgstandroidmedia_la_LIBADD = \
+	$(top_builddir)/gst-libs/gst/interfaces/libgstphotography-$(GST_API_VERSION).la \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-$(GST_API_VERSION).la \
 	$(GST_PLUGINS_BASE_LIBS) \
 	-lgstaudio-@GST_API_VERSION@ \
@@ -39,4 +50,6 @@
 libgstandroidmedia_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 
 androidmedia_java_classesdir = $(datadir)/gst-android/ndk-build/androidmedia/
-androidmedia_java_classes_DATA = org/freedesktop/gstreamer/androidmedia/GstAmcOnFrameAvailableListener.java
+androidmedia_java_classes_DATA = \
+	org/freedesktop/gstreamer/androidmedia/GstAhcCallback.java \
+	org/freedesktop/gstreamer/androidmedia/GstAmcOnFrameAvailableListener.java
diff --git a/sys/androidmedia/Makefile.in b/sys/androidmedia/Makefile.in
index 898b742..946a2b6 100644
--- a/sys/androidmedia/Makefile.in
+++ b/sys/androidmedia/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -166,15 +165,20 @@
 	"$(DESTDIR)$(androidmedia_java_classesdir)"
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-libgstandroidmedia_la_DEPENDENCIES = $(top_builddir)/gst-libs/gst/gl/libgstgl-$(GST_API_VERSION).la \
+libgstandroidmedia_la_DEPENDENCIES = $(top_builddir)/gst-libs/gst/interfaces/libgstphotography-$(GST_API_VERSION).la \
+	$(top_builddir)/gst-libs/gst/gl/libgstgl-$(GST_API_VERSION).la \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_libgstandroidmedia_la_OBJECTS = libgstandroidmedia_la-gstamc.lo \
+am_libgstandroidmedia_la_OBJECTS = libgstandroidmedia_la-gstahcsrc.lo \
 	libgstandroidmedia_la-gstamcaudiodec.lo \
-	libgstandroidmedia_la-gstamcvideodec.lo \
-	libgstandroidmedia_la-gstamcvideoenc.lo \
+	libgstandroidmedia_la-gstamc.lo \
 	libgstandroidmedia_la-gstamcsurface.lo \
 	libgstandroidmedia_la-gstamcsurfacetexture.lo \
+	libgstandroidmedia_la-gstamcvideodec.lo \
+	libgstandroidmedia_la-gstamcvideoenc.lo \
+	libgstandroidmedia_la-gst-android-graphics-imageformat.lo \
+	libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo \
+	libgstandroidmedia_la-gst-android-hardware-camera.lo \
 	libgstandroidmedia_la-gstjniutils.lo
 libgstandroidmedia_la_OBJECTS = $(am_libgstandroidmedia_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -333,7 +337,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -355,7 +358,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -377,9 +379,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -541,6 +540,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -554,8 +554,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -642,8 +640,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -695,6 +691,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -715,6 +712,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -752,7 +751,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -794,22 +792,30 @@
 wayland_scanner = @wayland_scanner@
 plugin_LTLIBRARIES = libgstandroidmedia.la
 libgstandroidmedia_la_SOURCES = \
-	gstamc.c \
+	gstahcsrc.c \
 	gstamcaudiodec.c \
-	gstamcvideodec.c \
-	gstamcvideoenc.c \
+	gstamc.c \
 	gstamcsurface.c \
 	gstamcsurfacetexture.c \
+	gstamcvideodec.c \
+	gstamcvideoenc.c \
+	gst-android-graphics-imageformat.c \
+	gst-android-graphics-surfacetexture.c \
+	gst-android-hardware-camera.c \
 	gstjniutils.c
 
 noinst_HEADERS = \
-	gstamc.h \
-	gstamc-constants.h \
+	gstahcsrc.h \
 	gstamcaudiodec.h \
-	gstamcvideodec.h \
-	gstamcvideoenc.h \
+	gstamc-constants.h \
+	gstamc.h \
 	gstamcsurface.h \
 	gstamcsurfacetexture.h \
+	gstamcvideodec.h \
+	gstamcvideoenc.h \
+	gst-android-graphics-imageformat.h \
+	gst-android-graphics-surfacetexture.h \
+	gst-android-hardware-camera.h \
 	gstjniutils.h
 
 libgstandroidmedia_la_CFLAGS = \
@@ -818,9 +824,11 @@
 	$(GST_PLUGINS_BASE_CFLAGS) \
 	$(GST_BASE_CFLAGS) \
 	$(GST_CFLAGS) \
-	$(ORC_CFLAGS)
+	$(ORC_CFLAGS) \
+	-DGST_USE_UNSTABLE_API
 
 libgstandroidmedia_la_LIBADD = \
+	$(top_builddir)/gst-libs/gst/interfaces/libgstphotography-$(GST_API_VERSION).la \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-$(GST_API_VERSION).la \
 	$(GST_PLUGINS_BASE_LIBS) \
 	-lgstaudio-@GST_API_VERSION@ \
@@ -833,7 +841,10 @@
 libgstandroidmedia_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstandroidmedia_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 androidmedia_java_classesdir = $(datadir)/gst-android/ndk-build/androidmedia/
-androidmedia_java_classes_DATA = org/freedesktop/gstreamer/androidmedia/GstAmcOnFrameAvailableListener.java
+androidmedia_java_classes_DATA = \
+	org/freedesktop/gstreamer/androidmedia/GstAhcCallback.java \
+	org/freedesktop/gstreamer/androidmedia/GstAmcOnFrameAvailableListener.java
+
 all: all-am
 
 .SUFFIXES:
@@ -912,6 +923,10 @@
 distclean-compile:
 	-rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-imageformat.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-surfacetexture.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-camera.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gstahcsrc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gstamc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gstamcaudiodec.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gstamcsurface.Plo@am__quote@
@@ -944,12 +959,12 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-libgstandroidmedia_la-gstamc.lo: gstamc.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gstamc.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gstamc.Tpo -c -o libgstandroidmedia_la-gstamc.lo `test -f 'gstamc.c' || echo '$(srcdir)/'`gstamc.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gstamc.Tpo $(DEPDIR)/libgstandroidmedia_la-gstamc.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstamc.c' object='libgstandroidmedia_la-gstamc.lo' libtool=yes @AMDEPBACKSLASH@
+libgstandroidmedia_la-gstahcsrc.lo: gstahcsrc.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gstahcsrc.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gstahcsrc.Tpo -c -o libgstandroidmedia_la-gstahcsrc.lo `test -f 'gstahcsrc.c' || echo '$(srcdir)/'`gstahcsrc.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gstahcsrc.Tpo $(DEPDIR)/libgstandroidmedia_la-gstahcsrc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstahcsrc.c' object='libgstandroidmedia_la-gstahcsrc.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gstamc.lo `test -f 'gstamc.c' || echo '$(srcdir)/'`gstamc.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gstahcsrc.lo `test -f 'gstahcsrc.c' || echo '$(srcdir)/'`gstahcsrc.c
 
 libgstandroidmedia_la-gstamcaudiodec.lo: gstamcaudiodec.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gstamcaudiodec.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gstamcaudiodec.Tpo -c -o libgstandroidmedia_la-gstamcaudiodec.lo `test -f 'gstamcaudiodec.c' || echo '$(srcdir)/'`gstamcaudiodec.c
@@ -958,6 +973,27 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gstamcaudiodec.lo `test -f 'gstamcaudiodec.c' || echo '$(srcdir)/'`gstamcaudiodec.c
 
+libgstandroidmedia_la-gstamc.lo: gstamc.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gstamc.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gstamc.Tpo -c -o libgstandroidmedia_la-gstamc.lo `test -f 'gstamc.c' || echo '$(srcdir)/'`gstamc.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gstamc.Tpo $(DEPDIR)/libgstandroidmedia_la-gstamc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstamc.c' object='libgstandroidmedia_la-gstamc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gstamc.lo `test -f 'gstamc.c' || echo '$(srcdir)/'`gstamc.c
+
+libgstandroidmedia_la-gstamcsurface.lo: gstamcsurface.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gstamcsurface.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gstamcsurface.Tpo -c -o libgstandroidmedia_la-gstamcsurface.lo `test -f 'gstamcsurface.c' || echo '$(srcdir)/'`gstamcsurface.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gstamcsurface.Tpo $(DEPDIR)/libgstandroidmedia_la-gstamcsurface.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstamcsurface.c' object='libgstandroidmedia_la-gstamcsurface.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gstamcsurface.lo `test -f 'gstamcsurface.c' || echo '$(srcdir)/'`gstamcsurface.c
+
+libgstandroidmedia_la-gstamcsurfacetexture.lo: gstamcsurfacetexture.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gstamcsurfacetexture.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gstamcsurfacetexture.Tpo -c -o libgstandroidmedia_la-gstamcsurfacetexture.lo `test -f 'gstamcsurfacetexture.c' || echo '$(srcdir)/'`gstamcsurfacetexture.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gstamcsurfacetexture.Tpo $(DEPDIR)/libgstandroidmedia_la-gstamcsurfacetexture.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstamcsurfacetexture.c' object='libgstandroidmedia_la-gstamcsurfacetexture.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gstamcsurfacetexture.lo `test -f 'gstamcsurfacetexture.c' || echo '$(srcdir)/'`gstamcsurfacetexture.c
+
 libgstandroidmedia_la-gstamcvideodec.lo: gstamcvideodec.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gstamcvideodec.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gstamcvideodec.Tpo -c -o libgstandroidmedia_la-gstamcvideodec.lo `test -f 'gstamcvideodec.c' || echo '$(srcdir)/'`gstamcvideodec.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gstamcvideodec.Tpo $(DEPDIR)/libgstandroidmedia_la-gstamcvideodec.Plo
@@ -972,19 +1008,26 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gstamcvideoenc.lo `test -f 'gstamcvideoenc.c' || echo '$(srcdir)/'`gstamcvideoenc.c
 
-libgstandroidmedia_la-gstamcsurface.lo: gstamcsurface.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gstamcsurface.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gstamcsurface.Tpo -c -o libgstandroidmedia_la-gstamcsurface.lo `test -f 'gstamcsurface.c' || echo '$(srcdir)/'`gstamcsurface.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gstamcsurface.Tpo $(DEPDIR)/libgstandroidmedia_la-gstamcsurface.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstamcsurface.c' object='libgstandroidmedia_la-gstamcsurface.lo' libtool=yes @AMDEPBACKSLASH@
+libgstandroidmedia_la-gst-android-graphics-imageformat.lo: gst-android-graphics-imageformat.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gst-android-graphics-imageformat.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-imageformat.Tpo -c -o libgstandroidmedia_la-gst-android-graphics-imageformat.lo `test -f 'gst-android-graphics-imageformat.c' || echo '$(srcdir)/'`gst-android-graphics-imageformat.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-imageformat.Tpo $(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-imageformat.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gst-android-graphics-imageformat.c' object='libgstandroidmedia_la-gst-android-graphics-imageformat.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gstamcsurface.lo `test -f 'gstamcsurface.c' || echo '$(srcdir)/'`gstamcsurface.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gst-android-graphics-imageformat.lo `test -f 'gst-android-graphics-imageformat.c' || echo '$(srcdir)/'`gst-android-graphics-imageformat.c
 
-libgstandroidmedia_la-gstamcsurfacetexture.lo: gstamcsurfacetexture.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gstamcsurfacetexture.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gstamcsurfacetexture.Tpo -c -o libgstandroidmedia_la-gstamcsurfacetexture.lo `test -f 'gstamcsurfacetexture.c' || echo '$(srcdir)/'`gstamcsurfacetexture.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gstamcsurfacetexture.Tpo $(DEPDIR)/libgstandroidmedia_la-gstamcsurfacetexture.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstamcsurfacetexture.c' object='libgstandroidmedia_la-gstamcsurfacetexture.lo' libtool=yes @AMDEPBACKSLASH@
+libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo: gst-android-graphics-surfacetexture.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-surfacetexture.Tpo -c -o libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo `test -f 'gst-android-graphics-surfacetexture.c' || echo '$(srcdir)/'`gst-android-graphics-surfacetexture.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-surfacetexture.Tpo $(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-surfacetexture.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gst-android-graphics-surfacetexture.c' object='libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gstamcsurfacetexture.lo `test -f 'gstamcsurfacetexture.c' || echo '$(srcdir)/'`gstamcsurfacetexture.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo `test -f 'gst-android-graphics-surfacetexture.c' || echo '$(srcdir)/'`gst-android-graphics-surfacetexture.c
+
+libgstandroidmedia_la-gst-android-hardware-camera.lo: gst-android-hardware-camera.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gst-android-hardware-camera.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-camera.Tpo -c -o libgstandroidmedia_la-gst-android-hardware-camera.lo `test -f 'gst-android-hardware-camera.c' || echo '$(srcdir)/'`gst-android-hardware-camera.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-camera.Tpo $(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-camera.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gst-android-hardware-camera.c' object='libgstandroidmedia_la-gst-android-hardware-camera.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gst-android-hardware-camera.lo `test -f 'gst-android-hardware-camera.c' || echo '$(srcdir)/'`gst-android-hardware-camera.c
 
 libgstandroidmedia_la-gstjniutils.lo: gstjniutils.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gstjniutils.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gstjniutils.Tpo -c -o libgstandroidmedia_la-gstjniutils.lo `test -f 'gstjniutils.c' || echo '$(srcdir)/'`gstjniutils.c
diff --git a/sys/androidmedia/gst-android-graphics-imageformat.c b/sys/androidmedia/gst-android-graphics-imageformat.c
new file mode 100644
index 0000000..5b76fcd
--- /dev/null
+++ b/sys/androidmedia/gst-android-graphics-imageformat.c
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2012, Collabora Ltd.
+ * Copyright (C) 2012, Cisco Systems, Inc.
+ *   Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
+ *
+ * Copyright (C) 2015, Collabora Ltd.
+ *   Author: Justin Kim <justin.kim@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstjniutils.h"
+
+#include "gst-android-graphics-imageformat.h"
+
+
+static struct
+{
+  jclass klass;
+  jmethodID get_bits_per_pixel;
+  jint JPEG;
+  jint NV16;
+  jint NV21;
+  jint RGB_565;
+  jint UNKNOWN;
+  jint YUY2;
+  jint YV12;
+} android_graphics_imageformat = {
+0};
+
+gint ImageFormat_JPEG;
+gint ImageFormat_NV16;
+gint ImageFormat_NV21;
+gint ImageFormat_RGB_565;
+gint ImageFormat_UNKNOWN;
+gint ImageFormat_YUY2;
+gint ImageFormat_YV12;
+
+static gboolean
+_init_classes (void)
+{
+  JNIEnv *env;
+
+  jfieldID fieldID;
+  jclass klass;
+
+  GError *err = NULL;
+
+  env = gst_amc_jni_get_env ();
+
+  /* android.graphics.ImageFormat */
+  klass = android_graphics_imageformat.klass =
+      gst_amc_jni_get_class (env, &err, "android/graphics/ImageFormat");
+
+  if (err)
+    goto failed;
+
+  android_graphics_imageformat.get_bits_per_pixel =
+      gst_amc_jni_get_static_method_id (env, &err, klass,
+      "getBitsPerPixel", "(I)I");
+
+  if (err)
+    goto failed;
+
+  fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "JPEG", "I");
+  if (err)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
+          &android_graphics_imageformat.JPEG))
+    goto failed;
+  ImageFormat_JPEG = android_graphics_imageformat.JPEG;
+
+  fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "NV16", "I");
+  if (err)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
+          &android_graphics_imageformat.NV16))
+    goto failed;
+  ImageFormat_NV16 = android_graphics_imageformat.NV16;
+
+  fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "NV21", "I");
+  if (err)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
+          &android_graphics_imageformat.NV21))
+    goto failed;
+  ImageFormat_NV21 = android_graphics_imageformat.NV21;
+
+  fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "RGB_565", "I");
+  if (err)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
+          &android_graphics_imageformat.RGB_565))
+    goto failed;
+  ImageFormat_RGB_565 = android_graphics_imageformat.RGB_565;
+
+  fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "UNKNOWN", "I");
+  if (err)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
+          &android_graphics_imageformat.UNKNOWN))
+    goto failed;
+  ImageFormat_UNKNOWN = android_graphics_imageformat.UNKNOWN;
+
+  fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "YUY2", "I");
+  if (err)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
+          &android_graphics_imageformat.YUY2))
+    goto failed;
+  ImageFormat_YUY2 = android_graphics_imageformat.YUY2;
+
+  fieldID = gst_amc_jni_get_static_field_id (env, &err, klass, "YV12", "I");
+  if (err)
+    goto failed;
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
+          &android_graphics_imageformat.YV12))
+    goto failed;
+  ImageFormat_YV12 = android_graphics_imageformat.YV12;
+
+  return TRUE;
+
+failed:
+  if (err) {
+    GST_ERROR ("Failed to get android.graphics.ImageFormat class: %s",
+        err->message);
+    g_clear_error (&err);
+  }
+
+  return FALSE;
+}
+
+gboolean
+gst_android_graphics_imageformat_init (void)
+{
+  if (!_init_classes ()) {
+    gst_android_graphics_imageformat_deinit ();
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+void
+gst_android_graphics_imageformat_deinit (void)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  if (android_graphics_imageformat.klass)
+    (*env)->DeleteGlobalRef (env, android_graphics_imageformat.klass);
+  android_graphics_imageformat.klass = NULL;
+}
+
+/* android.graphics.ImageFormat */
+gint
+gst_ag_imageformat_get_bits_per_pixel (gint format)
+{
+  JNIEnv *env;
+  GError *err = NULL;
+
+  jclass klass = android_graphics_imageformat.klass;
+
+  jint bpp = 0;
+
+  env = gst_amc_jni_get_env ();
+
+  if (!gst_amc_jni_call_static_int_method (env, &err,
+          klass, android_graphics_imageformat.get_bits_per_pixel, &bpp,
+          format)) {
+    GST_ERROR ("Failed to get android.graphics.ImageFormat class: %s",
+        err->message);
+    g_clear_error (&err);
+  }
+
+  return bpp;
+}
diff --git a/sys/androidmedia/gst-android-graphics-imageformat.h b/sys/androidmedia/gst-android-graphics-imageformat.h
new file mode 100644
index 0000000..aff218b
--- /dev/null
+++ b/sys/androidmedia/gst-android-graphics-imageformat.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2012, Collabora Ltd.
+ * Copyright (C) 2012, Cisco Systems, Inc.
+ *   Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
+ *
+ * Copyright (C) 2015, Collabora Ltd.
+ *   Author: Justin Kim <justin.kim@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ *
+ */
+
+#ifndef __GST_ANDROID_GRAPHICS_IMAGEFORMAT_H__
+#define __GST_ANDROID_GRAPHICS_IMAGEFORMAT_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+/* android.graphics.ImageFormat */
+extern gint ImageFormat_JPEG;
+extern gint ImageFormat_NV16;
+extern gint ImageFormat_NV21;
+extern gint ImageFormat_RGB_565;
+extern gint ImageFormat_UNKNOWN;
+extern gint ImageFormat_YUY2;
+extern gint ImageFormat_YV12;
+
+gboolean gst_android_graphics_imageformat_init (void);
+void gst_android_graphics_imageformat_deinit (void);
+
+gint gst_ag_imageformat_get_bits_per_pixel (gint format);
+
+G_END_DECLS
+
+#endif /* __GST_ANDROID_GRAPHICS_IMAGEFORMAT_H__ */
+
diff --git a/sys/androidmedia/gst-android-graphics-surfacetexture.c b/sys/androidmedia/gst-android-graphics-surfacetexture.c
new file mode 100644
index 0000000..84993a8
--- /dev/null
+++ b/sys/androidmedia/gst-android-graphics-surfacetexture.c
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2012, Collabora Ltd.
+ * Copyright (C) 2012, Cisco Systems, Inc.
+ *   Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
+ *
+ * Copyright (C) 2015, Collabora Ltd.
+ *   Author: Justin Kim <justin.kim@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstjniutils.h"
+
+#include "gst-android-graphics-surfacetexture.h"
+
+static struct
+{
+  jclass klass;
+  jmethodID constructor;
+  jmethodID release;
+} android_graphics_surfacetexture = {
+0};
+
+static gboolean
+_init_classes (void)
+{
+  JNIEnv *env;
+  GError *err = NULL;
+
+  env = gst_amc_jni_get_env ();
+
+  /* android.graphics.SurfaceTexture */
+  android_graphics_surfacetexture.klass =
+      gst_amc_jni_get_class (env, &err, "android/graphics/SurfaceTexture");
+
+  if (!android_graphics_surfacetexture.klass) {
+    GST_ERROR ("Failed to get android.graphics.SurfaceTexture class: %s",
+        err->message);
+    g_clear_error (&err);
+    return FALSE;
+  }
+
+  android_graphics_surfacetexture.constructor =
+      gst_amc_jni_get_method_id (env, &err,
+      android_graphics_surfacetexture.klass, "<init>", "(I)V");
+  android_graphics_surfacetexture.release =
+      gst_amc_jni_get_method_id (env, &err,
+      android_graphics_surfacetexture.klass, "release", "()V");
+
+  return TRUE;
+}
+
+gboolean
+gst_android_graphics_surfacetexture_init (void)
+{
+  if (!_init_classes ()) {
+    gst_android_graphics_surfacetexture_deinit ();
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+void
+gst_android_graphics_surfacetexture_deinit (void)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  if (android_graphics_surfacetexture.klass)
+    (*env)->DeleteGlobalRef (env, android_graphics_surfacetexture.klass);
+  android_graphics_surfacetexture.klass = NULL;
+}
+
+/* android.graphics.SurfaceTexture */
+GstAGSurfaceTexture *
+gst_ag_surfacetexture_new (gint texture_id)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject object = NULL;
+  GstAGSurfaceTexture *tex = NULL;
+
+  object = (*env)->NewObject (env,
+      android_graphics_surfacetexture.klass,
+      android_graphics_surfacetexture.constructor, texture_id);
+  if ((*env)->ExceptionCheck (env) || !object) {
+    GST_ERROR ("Failed to call Java method");
+    (*env)->ExceptionClear (env);
+    return NULL;
+  }
+
+  tex = g_slice_new0 (GstAGSurfaceTexture);
+  tex->object = (*env)->NewGlobalRef (env, object);
+  if (!tex->object) {
+    GST_ERROR ("Failed to create global reference");
+    (*env)->ExceptionClear (env);
+    g_slice_free (GstAGSurfaceTexture, tex);
+    tex = NULL;
+  }
+  (*env)->DeleteLocalRef (env, object);
+
+  return tex;
+}
+
+void
+gst_ag_surfacetexture_release (GstAGSurfaceTexture * self)
+{
+  JNIEnv *env;
+  GError *err = NULL;
+
+  env = gst_amc_jni_get_env ();
+
+  if (!gst_amc_jni_call_void_method (env, &err, self->object,
+          android_graphics_surfacetexture.release)) {
+    GST_ERROR ("Failed to call release: %s", err->message);
+    g_clear_error (&err);
+  }
+
+}
+
+void
+gst_ag_surfacetexture_free (GstAGSurfaceTexture * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  (*env)->DeleteGlobalRef (env, self->object);
+  g_slice_free (GstAGSurfaceTexture, self);
+}
diff --git a/sys/androidmedia/gst-android-graphics-surfacetexture.h b/sys/androidmedia/gst-android-graphics-surfacetexture.h
new file mode 100644
index 0000000..3bb80ca
--- /dev/null
+++ b/sys/androidmedia/gst-android-graphics-surfacetexture.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2012, Collabora Ltd.
+ * Copyright (C) 2012, Cisco Systems, Inc.
+ *   Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
+ *
+ * Copyright (C) 2015, Collabora Ltd.
+ *   Author: Justin Kim <justin.kim@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ *
+ */
+
+#ifndef __GST_ANDROID_GRAPHICS_SURFACETEXTURE_H__
+#define __GST_ANDROID_GRAPHICS_SURFACETEXTURE_H__
+
+#include <gst/gst.h>
+#include <jni.h>
+
+
+G_BEGIN_DECLS
+
+typedef struct _GstAGSurfaceTexture GstAGSurfaceTexture;
+
+/* android.graphics.SurfaceTexture */
+struct _GstAGSurfaceTexture {
+  /* < private > */
+  jobject object; /* global reference */
+};
+
+
+gboolean gst_android_graphics_surfacetexture_init (void);
+void gst_android_graphics_surfacetexture_deinit (void);
+
+/* android.graphics.SurfaceTexture */
+GstAGSurfaceTexture *gst_ag_surfacetexture_new (gint texture_id);
+void gst_ag_surfacetexture_release (GstAGSurfaceTexture *self);
+void gst_ag_surfacetexture_free (GstAGSurfaceTexture *self);
+
+G_END_DECLS
+
+#endif /* __GST_ANDROID_GRAPHICS_SURFACETEXTURE_H__ */
+
diff --git a/sys/androidmedia/gst-android-hardware-camera.c b/sys/androidmedia/gst-android-hardware-camera.c
new file mode 100644
index 0000000..3a78470
--- /dev/null
+++ b/sys/androidmedia/gst-android-hardware-camera.c
@@ -0,0 +1,3884 @@
+/*
+ * Copyright (C) 2012, Collabora Ltd.
+ * Copyright (C) 2012, Cisco Systems, Inc.
+ *   Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
+ *
+ * Copyright (C) 2015, Collabora Ltd.
+ *   Author: Justin Kim <justin.kim@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstjniutils.h"
+
+#include "gst-android-hardware-camera.h"
+#include "stdio.h"
+
+GST_DEBUG_CATEGORY_STATIC (ahc_debug);
+#define GST_CAT_DEFAULT ahc_debug
+
+#define GST_DVM_STATIC_CALL(error_statement, type, k, method, ...)      \
+  (*env)->CallStatic##type##Method (env, k.klass, k.method, ## __VA_ARGS__); \
+  if ((*env)->ExceptionCheck (env)) {                                   \
+    GST_ERROR ("Failed to call Java method");                           \
+    (*env)->ExceptionDescribe (env);                                    \
+    (*env)->ExceptionClear (env);                                       \
+    error_statement;                                                    \
+  }
+
+#define GST_DVM_CALL(error_statement, obj, type, k, method, ...)        \
+  (*env)->Call##type##Method (env, obj, k.method, ## __VA_ARGS__);      \
+  if ((*env)->ExceptionCheck (env)) {                                   \
+    GST_ERROR ("Failed to call Java method");                           \
+    (*env)->ExceptionDescribe (env);                                    \
+    (*env)->ExceptionClear (env);                                       \
+    error_statement;                                                    \
+  }
+
+
+
+static struct
+{
+  jclass klass;
+  jmethodID addCallbackBuffer;
+  jmethodID autoFocus;
+  jmethodID cancelAutoFocus;
+  jmethodID getCameraInfo;
+  jmethodID getNumberOfCameras;
+  jmethodID getParameters;
+  jmethodID lock;
+  jmethodID open;
+  jmethodID reconnect;
+  jmethodID release;
+  jmethodID setErrorCallback;
+  jmethodID setParameters;
+  jmethodID setPreviewCallbackWithBuffer;
+  jmethodID setPreviewTexture;
+  jmethodID startPreview;
+  jmethodID startSmoothZoom;
+  jmethodID stopPreview;
+  jmethodID stopSmoothZoom;
+  jmethodID unlock;
+} android_hardware_camera = {
+0};
+
+static struct
+{
+  jclass klass;
+  jmethodID constructor;
+  jfieldID facing;
+  jfieldID orientation;
+  jint CAMERA_FACING_BACK;
+  jint CAMERA_FACING_FRONT;
+} android_hardware_camera_camerainfo = {
+0};
+
+gint CameraInfo_CAMERA_FACING_BACK;
+gint CameraInfo_CAMERA_FACING_FRONT;
+
+static struct
+{
+  jclass klass;
+  jfieldID width;
+  jfieldID height;
+} android_hardware_camera_size = {
+0};
+
+static struct
+{
+  jclass klass;
+  jmethodID flatten;
+  jmethodID getAntibanding;
+  jmethodID getColorEffect;
+  jmethodID getExposureCompensation;
+  jmethodID getExposureCompensationStep;
+  jmethodID getFlashMode;
+  jmethodID getFocalLength;
+  jmethodID getFocusMode;
+  jmethodID getHorizontalViewAngle;
+  jmethodID getMaxExposureCompensation;
+  jmethodID getMaxZoom;
+  jmethodID getMinExposureCompensation;
+  jmethodID getPreviewFormat;
+  jmethodID getPreviewFpsRange;
+  jmethodID getPreviewSize;
+  jmethodID getSceneMode;
+  jmethodID getSupportedAntibanding;
+  jmethodID getSupportedColorEffects;
+  jmethodID getSupportedFlashModes;
+  jmethodID getSupportedFocusModes;
+  jmethodID getSupportedPreviewFormats;
+  jmethodID getSupportedPreviewFpsRange;
+  jmethodID getSupportedPreviewSizes;
+  jmethodID getSupportedSceneModes;
+  jmethodID getSupportedWhiteBalance;
+  jmethodID getVerticalViewAngle;
+  jmethodID getVideoStabilization;
+  jmethodID getWhiteBalance;
+  jmethodID getZoom;
+  jmethodID getZoomRatios;
+  jmethodID isSmoothZoomSupported;
+  jmethodID isVideoStabilizationSupported;
+  jmethodID isZoomSupported;
+  jmethodID setAntibanding;
+  jmethodID setColorEffect;
+  jmethodID setExposureCompensation;
+  jmethodID setFlashMode;
+  jmethodID setFocusMode;
+  jmethodID setPreviewFormat;
+  jmethodID setPreviewFpsRange;
+  jmethodID setPreviewSize;
+  jmethodID setSceneMode;
+  jmethodID setVideoStabilization;
+  jmethodID setWhiteBalance;
+  jmethodID setZoom;
+  jmethodID unflatten;
+  jstring WHITE_BALANCE_AUTO;
+  jstring WHITE_BALANCE_INCANDESCENT;
+  jstring WHITE_BALANCE_FLUORESCENT;
+  jstring WHITE_BALANCE_WARM_FLUORESCENT;
+  jstring WHITE_BALANCE_DAYLIGHT;
+  jstring WHITE_BALANCE_CLOUDY_DAYLIGHT;
+  jstring WHITE_BALANCE_TWILIGHT;
+  jstring WHITE_BALANCE_SHADE;
+  jstring EFFECT_NONE;
+  jstring EFFECT_MONO;
+  jstring EFFECT_NEGATIVE;
+  jstring EFFECT_SOLARIZE;
+  jstring EFFECT_SEPIA;
+  jstring EFFECT_POSTERIZE;
+  jstring EFFECT_WHITEBOARD;
+  jstring EFFECT_BLACKBOARD;
+  jstring EFFECT_AQUA;
+  jstring ANTIBANDING_AUTO;
+  jstring ANTIBANDING_50HZ;
+  jstring ANTIBANDING_60HZ;
+  jstring ANTIBANDING_OFF;
+  jstring FLASH_MODE_OFF;
+  jstring FLASH_MODE_AUTO;
+  jstring FLASH_MODE_ON;
+  jstring FLASH_MODE_RED_EYE;
+  jstring FLASH_MODE_TORCH;
+  jstring SCENE_MODE_AUTO;
+  jstring SCENE_MODE_ACTION;
+  jstring SCENE_MODE_PORTRAIT;
+  jstring SCENE_MODE_LANDSCAPE;
+  jstring SCENE_MODE_NIGHT;
+  jstring SCENE_MODE_NIGHT_PORTRAIT;
+  jstring SCENE_MODE_THEATRE;
+  jstring SCENE_MODE_BEACH;
+  jstring SCENE_MODE_SNOW;
+  jstring SCENE_MODE_SUNSET;
+  jstring SCENE_MODE_STEADYPHOTO;
+  jstring SCENE_MODE_FIREWORKS;
+  jstring SCENE_MODE_SPORTS;
+  jstring SCENE_MODE_PARTY;
+  jstring SCENE_MODE_CANDLELIGHT;
+  jstring SCENE_MODE_BARCODE;
+  jstring FOCUS_MODE_AUTO;
+  jstring FOCUS_MODE_INFINITY;
+  jstring FOCUS_MODE_MACRO;
+  jstring FOCUS_MODE_FIXED;
+  jstring FOCUS_MODE_EDOF;
+  jstring FOCUS_MODE_CONTINUOUS_VIDEO;
+  jstring FOCUS_MODE_CONTINUOUS_PICTURE;
+} android_hardware_camera_parameters = {
+0};
+
+const gchar *Parameters_WHITE_BALANCE_AUTO;
+const gchar *Parameters_WHITE_BALANCE_INCANDESCENT;
+const gchar *Parameters_WHITE_BALANCE_FLUORESCENT;
+const gchar *Parameters_WHITE_BALANCE_WARM_FLUORESCENT;
+const gchar *Parameters_WHITE_BALANCE_DAYLIGHT;
+const gchar *Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT;
+const gchar *Parameters_WHITE_BALANCE_TWILIGHT;
+const gchar *Parameters_WHITE_BALANCE_SHADE;
+const gchar *Parameters_EFFECT_NONE;
+const gchar *Parameters_EFFECT_MONO;
+const gchar *Parameters_EFFECT_NEGATIVE;
+const gchar *Parameters_EFFECT_SOLARIZE;
+const gchar *Parameters_EFFECT_SEPIA;
+const gchar *Parameters_EFFECT_POSTERIZE;
+const gchar *Parameters_EFFECT_WHITEBOARD;
+const gchar *Parameters_EFFECT_BLACKBOARD;
+const gchar *Parameters_EFFECT_AQUA;
+const gchar *Parameters_ANTIBANDING_AUTO;
+const gchar *Parameters_ANTIBANDING_50HZ;
+const gchar *Parameters_ANTIBANDING_60HZ;
+const gchar *Parameters_ANTIBANDING_OFF;
+const gchar *Parameters_FLASH_MODE_OFF;
+const gchar *Parameters_FLASH_MODE_AUTO;
+const gchar *Parameters_FLASH_MODE_ON;
+const gchar *Parameters_FLASH_MODE_RED_EYE;
+const gchar *Parameters_FLASH_MODE_TORCH;
+const gchar *Parameters_SCENE_MODE_AUTO;
+const gchar *Parameters_SCENE_MODE_ACTION;
+const gchar *Parameters_SCENE_MODE_PORTRAIT;
+const gchar *Parameters_SCENE_MODE_LANDSCAPE;
+const gchar *Parameters_SCENE_MODE_NIGHT;
+const gchar *Parameters_SCENE_MODE_NIGHT_PORTRAIT;
+const gchar *Parameters_SCENE_MODE_THEATRE;
+const gchar *Parameters_SCENE_MODE_BEACH;
+const gchar *Parameters_SCENE_MODE_SNOW;
+const gchar *Parameters_SCENE_MODE_SUNSET;
+const gchar *Parameters_SCENE_MODE_STEADYPHOTO;
+const gchar *Parameters_SCENE_MODE_FIREWORKS;
+const gchar *Parameters_SCENE_MODE_SPORTS;
+const gchar *Parameters_SCENE_MODE_PARTY;
+const gchar *Parameters_SCENE_MODE_CANDLELIGHT;
+const gchar *Parameters_SCENE_MODE_BARCODE;
+const gchar *Parameters_FOCUS_MODE_AUTO;
+const gchar *Parameters_FOCUS_MODE_INFINITY;
+const gchar *Parameters_FOCUS_MODE_MACRO;
+const gchar *Parameters_FOCUS_MODE_FIXED;
+const gchar *Parameters_FOCUS_MODE_EDOF;
+const gchar *Parameters_FOCUS_MODE_CONTINUOUS_VIDEO;
+const gchar *Parameters_FOCUS_MODE_CONTINUOUS_PICTURE;
+
+static struct
+{
+  jclass klass;
+  jmethodID iterator;
+} java_util_list = {
+0};
+
+static struct
+{
+  jclass klass;
+  jmethodID hasNext;
+  jmethodID next;
+} java_util_iterator = {
+0};
+
+static struct
+{
+  jclass klass;
+  jmethodID intValue;
+} java_lang_integer = {
+0};
+
+static struct
+{
+  jclass klass;
+  jmethodID equals;
+} java_lang_string = {
+0};
+
+static struct
+{
+  jclass klass;
+  jmethodID constructor;
+} org_freedesktop_gstreamer_androidmedia_gstahccallback = {
+0};
+
+static void
+gst_ah_camera_on_preview_frame (JNIEnv * env, jclass klass, jbyteArray data,
+    jobject camera, jlong callback, jlong user_data)
+{
+  GstAHCPreviewCallback cb = (GstAHCPreviewCallback) (gsize) callback;
+
+  if (cb)
+    cb (data, (gpointer) (gsize) user_data);
+}
+
+static void
+gst_ah_camera_on_error (JNIEnv * env, jclass klass, jint error,
+    jobject camera, jlong callback, jlong user_data)
+{
+  GstAHCErrorCallback cb = (GstAHCErrorCallback) (gsize) callback;
+
+  if (cb)
+    cb (error, (gpointer) (gsize) user_data);
+}
+
+static void
+gst_ah_camera_on_auto_focus (JNIEnv * env, jclass klass, jboolean success,
+    jobject camera, jlong callback, jlong user_data)
+{
+  GstAHCAutoFocusCallback cb = (GstAHCAutoFocusCallback) (gsize) callback;
+
+  if (cb)
+    cb (success, (gpointer) (gsize) user_data);
+}
+
+static JNINativeMethod native_methods[] = {
+  {(gchar *) "gst_ah_camera_on_preview_frame",
+        (gchar *) "([BLandroid/hardware/Camera;JJ)V",
+      (void *) gst_ah_camera_on_preview_frame},
+  {(gchar *) "gst_ah_camera_on_error",
+        (gchar *) "(ILandroid/hardware/Camera;JJ)V",
+      (void *) gst_ah_camera_on_error},
+//  {(gchar *) "gst_ah_camera_on_auto_focus",
+//        (gchar *) "(ZLandroid/hardware/Camera;JJ)V",
+//      (void *) gst_ah_camera_on_auto_focus}
+};
+
+static gboolean
+_init_classes (void)
+{
+  JNIEnv *env;
+  GError *err = NULL;
+
+  jclass klass;
+  jfieldID fieldID;
+
+  env = gst_amc_jni_get_env ();
+
+  /* android.hardware.Camera */
+  klass = android_hardware_camera.klass =
+      gst_amc_jni_get_class (env, &err, "android/hardware/Camera");
+  if (!klass)
+    goto failed;
+
+  android_hardware_camera.addCallbackBuffer =
+      gst_amc_jni_get_method_id (env, &err, klass,
+      "addCallbackBuffer", "([B)V");
+
+  android_hardware_camera.autoFocus =
+      gst_amc_jni_get_method_id (env, &err, klass,
+      "autoFocus", "(Landroid/hardware/Camera$AutoFocusCallback;)V");
+
+  android_hardware_camera.cancelAutoFocus =
+      gst_amc_jni_get_method_id (env, &err, klass, "cancelAutoFocus", "()V");
+
+  android_hardware_camera.getCameraInfo =
+      gst_amc_jni_get_static_method_id (env, &err, klass,
+      "getCameraInfo", "(ILandroid/hardware/Camera$CameraInfo;)V");
+
+  android_hardware_camera.getNumberOfCameras =
+      gst_amc_jni_get_static_method_id (env, &err, klass,
+      "getNumberOfCameras", "()I");
+
+  android_hardware_camera.getParameters =
+      gst_amc_jni_get_method_id (env, &err, klass,
+      "getParameters", "()Landroid/hardware/Camera$Parameters;");
+
+  android_hardware_camera.lock =
+      gst_amc_jni_get_method_id (env, &err, klass, "lock", "()V");
+
+  android_hardware_camera.open =
+      gst_amc_jni_get_static_method_id (env, &err, klass,
+      "open", "(I)Landroid/hardware/Camera;");
+
+  android_hardware_camera.reconnect =
+      gst_amc_jni_get_method_id (env, &err, klass, "reconnect", "()V");
+
+  android_hardware_camera.release =
+      gst_amc_jni_get_method_id (env, &err, klass, "release", "()V");
+
+  android_hardware_camera.setErrorCallback =
+      gst_amc_jni_get_method_id (env, &err, klass, "setErrorCallback",
+      "(Landroid/hardware/Camera$ErrorCallback;)V");
+
+  android_hardware_camera.setParameters =
+      gst_amc_jni_get_method_id (env, &err, klass, "setParameters",
+      "(Landroid/hardware/Camera$Parameters;)V");
+
+  android_hardware_camera.setPreviewCallbackWithBuffer =
+      gst_amc_jni_get_method_id (env, &err, klass,
+      "setPreviewCallbackWithBuffer",
+      "(Landroid/hardware/Camera$PreviewCallback;)V");
+
+  android_hardware_camera.setPreviewTexture =
+      gst_amc_jni_get_method_id (env, &err, klass,
+      "setPreviewTexture", "(Landroid/graphics/SurfaceTexture;)V");
+
+  android_hardware_camera.startPreview =
+      gst_amc_jni_get_method_id (env, &err, klass, "startPreview", "()V");
+
+  android_hardware_camera.startSmoothZoom =
+      gst_amc_jni_get_method_id (env, &err, klass, "startSmoothZoom", "(I)V");
+
+  android_hardware_camera.stopPreview =
+      gst_amc_jni_get_method_id (env, &err, klass, "stopPreview", "()V");
+
+  android_hardware_camera.stopPreview =
+      gst_amc_jni_get_method_id (env, &err, klass, "stopPreview", "()V");
+
+  android_hardware_camera.unlock =
+      gst_amc_jni_get_method_id (env, &err, klass, "unlock", "()V");
+
+  /* android.hardware.Camera.CameraInfo */
+  klass = android_hardware_camera_camerainfo.klass =
+      gst_amc_jni_get_class (env, &err, "android/hardware/Camera$CameraInfo");
+  if (!klass)
+    goto failed;
+
+  android_hardware_camera_camerainfo.constructor =
+      gst_amc_jni_get_method_id (env, &err, klass, "<init>", "()V");
+
+  android_hardware_camera_camerainfo.facing =
+      gst_amc_jni_get_field_id (env, &err, klass, "facing", "I");
+
+  android_hardware_camera_camerainfo.orientation =
+      gst_amc_jni_get_field_id (env, &err, klass, "orientation", "I");
+
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "CAMERA_FACING_BACK",
+      "I");
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
+          &android_hardware_camera_camerainfo.CAMERA_FACING_BACK))
+    goto failed;
+  CameraInfo_CAMERA_FACING_BACK =
+      android_hardware_camera_camerainfo.CAMERA_FACING_BACK;
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "CAMERA_FACING_FRONT",
+      "I");
+  if (!gst_amc_jni_get_static_int_field (env, &err, klass, fieldID,
+          &android_hardware_camera_camerainfo.CAMERA_FACING_FRONT))
+    goto failed;
+  CameraInfo_CAMERA_FACING_FRONT =
+      android_hardware_camera_camerainfo.CAMERA_FACING_FRONT;
+
+  /* android.hardware.Camera.Size */
+  klass = android_hardware_camera_size.klass =
+      gst_amc_jni_get_class (env, &err, "android/hardware/Camera$Size");
+  if (!klass)
+    goto failed;
+
+  android_hardware_camera_size.width =
+      gst_amc_jni_get_field_id (env, &err, klass, "width", "I");
+  android_hardware_camera_size.height =
+      gst_amc_jni_get_field_id (env, &err, klass, "height", "I");
+
+  /* android.hardware.Camera.Parameters */
+  klass = android_hardware_camera_parameters.klass =
+      gst_amc_jni_get_class (env, &err, "android/hardware/Camera$Parameters");
+  if (!klass)
+    goto failed;
+
+  android_hardware_camera_parameters.flatten =
+      gst_amc_jni_get_method_id (env, &err, klass, "flatten",
+      "()Ljava/lang/String;");
+
+  android_hardware_camera_parameters.getAntibanding =
+      gst_amc_jni_get_method_id (env, &err, klass, "getAntibanding",
+      "()Ljava/lang/String;");
+
+  android_hardware_camera_parameters.getColorEffect =
+      gst_amc_jni_get_method_id (env, &err, klass, "getColorEffect",
+      "()Ljava/lang/String;");
+
+  android_hardware_camera_parameters.getExposureCompensation =
+      gst_amc_jni_get_method_id (env, &err, klass, "getExposureCompensation",
+      "()I");
+
+  android_hardware_camera_parameters.getExposureCompensationStep =
+      gst_amc_jni_get_method_id (env, &err, klass,
+      "getExposureCompensationStep", "()F");
+
+  android_hardware_camera_parameters.getFlashMode =
+      gst_amc_jni_get_method_id (env, &err, klass, "getFlashMode",
+      "()Ljava/lang/String;");
+
+  android_hardware_camera_parameters.getFocalLength =
+      gst_amc_jni_get_method_id (env, &err, klass, "getFocalLength", "()F");
+
+  android_hardware_camera_parameters.getFocusMode =
+      gst_amc_jni_get_method_id (env, &err, klass, "getFocusMode",
+      "()Ljava/lang/String;");
+
+  android_hardware_camera_parameters.getHorizontalViewAngle =
+      gst_amc_jni_get_method_id (env, &err, klass, "getHorizontalViewAngle",
+      "()F");
+
+  android_hardware_camera_parameters.getMaxExposureCompensation =
+      gst_amc_jni_get_method_id (env, &err, klass, "getMaxExposureCompensation",
+      "()I");
+
+  android_hardware_camera_parameters.getMaxZoom =
+      gst_amc_jni_get_method_id (env, &err, klass, "getMaxZoom", "()I");
+
+  android_hardware_camera_parameters.getMinExposureCompensation =
+      gst_amc_jni_get_method_id (env, &err, klass, "getMinExposureCompensation",
+      "()I");
+
+  android_hardware_camera_parameters.getPreviewFormat =
+      gst_amc_jni_get_method_id (env, &err, klass, "getPreviewFormat", "()I");
+
+  android_hardware_camera_parameters.getPreviewFpsRange =
+      gst_amc_jni_get_method_id (env, &err, klass, "getPreviewFpsRange",
+      "([I)V");
+
+  android_hardware_camera_parameters.getPreviewSize =
+      gst_amc_jni_get_method_id (env, &err, klass, "getPreviewSize",
+      "()Landroid/hardware/Camera$Size;");
+
+  android_hardware_camera_parameters.getSceneMode =
+      gst_amc_jni_get_method_id (env, &err, klass, "getSceneMode",
+      "()Ljava/lang/String;");
+
+  android_hardware_camera_parameters.getSupportedAntibanding =
+      gst_amc_jni_get_method_id (env, &err, klass, "getSupportedAntibanding",
+      "()Ljava/util/List;");
+
+  android_hardware_camera_parameters.getSupportedColorEffects =
+      gst_amc_jni_get_method_id (env, &err, klass, "getSupportedColorEffects",
+      "()Ljava/util/List;");
+
+  android_hardware_camera_parameters.getSupportedFlashModes =
+      gst_amc_jni_get_method_id (env, &err, klass, "getSupportedFlashModes",
+      "()Ljava/util/List;");
+
+  android_hardware_camera_parameters.getSupportedFocusModes =
+      gst_amc_jni_get_method_id (env, &err, klass, "getSupportedFocusModes",
+      "()Ljava/util/List;");
+
+  android_hardware_camera_parameters.getSupportedPreviewFormats =
+      gst_amc_jni_get_method_id (env, &err, klass, "getSupportedPreviewFormats",
+      "()Ljava/util/List;");
+
+  android_hardware_camera_parameters.getSupportedPreviewFpsRange =
+      gst_amc_jni_get_method_id (env, &err, klass,
+      "getSupportedPreviewFpsRange", "()Ljava/util/List;");
+
+  android_hardware_camera_parameters.getSupportedPreviewSizes =
+      gst_amc_jni_get_method_id (env, &err, klass, "getSupportedPreviewSizes",
+      "()Ljava/util/List;");
+
+  android_hardware_camera_parameters.getSupportedSceneModes =
+      gst_amc_jni_get_method_id (env, &err, klass, "getSupportedSceneModes",
+      "()Ljava/util/List;");
+
+  android_hardware_camera_parameters.getSupportedWhiteBalance =
+      gst_amc_jni_get_method_id (env, &err, klass, "getSupportedWhiteBalance",
+      "()Ljava/util/List;");
+
+  android_hardware_camera_parameters.getVerticalViewAngle =
+      gst_amc_jni_get_method_id (env, &err, klass, "getVerticalViewAngle",
+      "()F");
+
+  android_hardware_camera_parameters.getVideoStabilization =
+      gst_amc_jni_get_method_id (env, &err, klass, "getVideoStabilization",
+      "()Z");
+
+  android_hardware_camera_parameters.getWhiteBalance =
+      gst_amc_jni_get_method_id (env, &err, klass, "getWhiteBalance",
+      "()Ljava/lang/String;");
+
+  android_hardware_camera_parameters.getZoom =
+      gst_amc_jni_get_method_id (env, &err, klass, "getZoom", "()I");
+
+  android_hardware_camera_parameters.getZoomRatios =
+      gst_amc_jni_get_method_id (env, &err, klass, "getZoomRatios",
+      "()Ljava/util/List;");
+
+  android_hardware_camera_parameters.isSmoothZoomSupported =
+      gst_amc_jni_get_method_id (env, &err, klass, "isSmoothZoomSupported",
+      "()Z");
+
+  android_hardware_camera_parameters.isVideoStabilizationSupported =
+      gst_amc_jni_get_method_id (env, &err, klass,
+      "isVideoStabilizationSupported", "()Z");
+
+  android_hardware_camera_parameters.isZoomSupported =
+      gst_amc_jni_get_method_id (env, &err, klass, "isZoomSupported", "()Z");
+
+  android_hardware_camera_parameters.setAntibanding =
+      gst_amc_jni_get_method_id (env, &err, klass, "setAntibanding",
+      "(Ljava/lang/String;)V");
+
+  android_hardware_camera_parameters.setColorEffect =
+      gst_amc_jni_get_method_id (env, &err, klass, "setColorEffect",
+      "(Ljava/lang/String;)V");
+
+  android_hardware_camera_parameters.setExposureCompensation =
+      gst_amc_jni_get_method_id (env, &err, klass, "setExposureCompensation",
+      "(I)V");
+
+  android_hardware_camera_parameters.setFlashMode =
+      gst_amc_jni_get_method_id (env, &err, klass, "setFlashMode",
+      "(Ljava/lang/String;)V");
+
+  android_hardware_camera_parameters.setFocusMode =
+      gst_amc_jni_get_method_id (env, &err, klass, "setFocusMode",
+      "(Ljava/lang/String;)V");
+
+  android_hardware_camera_parameters.setPreviewFormat =
+      gst_amc_jni_get_method_id (env, &err, klass, "setPreviewFormat", "(I)V");
+
+  android_hardware_camera_parameters.setPreviewFpsRange =
+      gst_amc_jni_get_method_id (env, &err, klass, "setPreviewFpsRange",
+      "(II)V");
+
+  android_hardware_camera_parameters.setPreviewSize =
+      gst_amc_jni_get_method_id (env, &err, klass, "setPreviewSize", "(II)V");
+
+  android_hardware_camera_parameters.setSceneMode =
+      gst_amc_jni_get_method_id (env, &err, klass, "setSceneMode",
+      "(Ljava/lang/String;)V");
+
+  android_hardware_camera_parameters.setWhiteBalance =
+      gst_amc_jni_get_method_id (env, &err, klass, "setWhiteBalance",
+      "(Ljava/lang/String;)V");
+
+  android_hardware_camera_parameters.setVideoStabilization =
+      gst_amc_jni_get_method_id (env, &err, klass, "setVideoStabilization",
+      "(Z)V");
+
+  android_hardware_camera_parameters.setZoom =
+      gst_amc_jni_get_method_id (env, &err, klass, "setZoom", "(I)V");
+
+  android_hardware_camera_parameters.unflatten =
+      gst_amc_jni_get_method_id (env, &err, klass, "unflatten",
+      "(Ljava/lang/String;)V");
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "WHITE_BALANCE_AUTO",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.WHITE_BALANCE_AUTO))
+    goto failed;
+
+  Parameters_WHITE_BALANCE_AUTO =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.WHITE_BALANCE_AUTO, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.WHITE_BALANCE_AUTO;
+
+    android_hardware_camera_parameters.WHITE_BALANCE_AUTO =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "WHITE_BALANCE_INCANDESCENT", "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT))
+    goto failed;
+
+  Parameters_WHITE_BALANCE_INCANDESCENT =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT, NULL);
+  {
+    jobject local =
+        android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT;
+
+    android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "WHITE_BALANCE_FLUORESCENT", "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT))
+    goto failed;
+
+  Parameters_WHITE_BALANCE_FLUORESCENT =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT, NULL);
+  {
+    jobject local =
+        android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT;
+
+    android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "WHITE_BALANCE_WARM_FLUORESCENT", "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT))
+    goto failed;
+
+  Parameters_WHITE_BALANCE_WARM_FLUORESCENT =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT, NULL);
+  {
+    jobject local =
+        android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT;
+
+    android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "WHITE_BALANCE_DAYLIGHT", "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT))
+    goto failed;
+
+  Parameters_WHITE_BALANCE_DAYLIGHT =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT;
+
+    android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "WHITE_BALANCE_CLOUDY_DAYLIGHT", "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT))
+    goto failed;
+  Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT, NULL);
+  {
+    jobject local =
+        android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT;
+
+    android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "WHITE_BALANCE_TWILIGHT", "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT))
+    goto failed;
+  Parameters_WHITE_BALANCE_TWILIGHT =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT;
+
+    android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "WHITE_BALANCE_SHADE",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.WHITE_BALANCE_SHADE))
+    goto failed;
+
+  Parameters_WHITE_BALANCE_SHADE =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.WHITE_BALANCE_SHADE, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.WHITE_BALANCE_SHADE;
+
+    android_hardware_camera_parameters.WHITE_BALANCE_SHADE =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_NONE",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.EFFECT_NONE))
+    goto failed;
+
+  Parameters_EFFECT_NONE =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.EFFECT_NONE, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.EFFECT_NONE;
+
+    android_hardware_camera_parameters.EFFECT_NONE =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_MONO",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.EFFECT_MONO))
+    goto failed;
+
+  Parameters_EFFECT_MONO =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.EFFECT_MONO, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.EFFECT_MONO;
+
+    android_hardware_camera_parameters.EFFECT_MONO =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_NEGATIVE",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.EFFECT_NEGATIVE))
+    goto failed;
+
+  Parameters_EFFECT_NEGATIVE =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.EFFECT_NEGATIVE, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.EFFECT_NEGATIVE;
+
+    android_hardware_camera_parameters.EFFECT_NEGATIVE =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_SOLARIZE",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.EFFECT_SOLARIZE))
+    goto failed;
+
+  Parameters_EFFECT_SOLARIZE =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.EFFECT_SOLARIZE, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.EFFECT_SOLARIZE;
+
+    android_hardware_camera_parameters.EFFECT_SOLARIZE =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_SEPIA",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.EFFECT_SEPIA))
+    goto failed;
+
+  Parameters_EFFECT_SEPIA =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.EFFECT_SEPIA, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.EFFECT_SEPIA;
+
+    android_hardware_camera_parameters.EFFECT_SEPIA =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_POSTERIZE",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.EFFECT_POSTERIZE))
+    goto failed;
+
+  Parameters_EFFECT_POSTERIZE =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.EFFECT_POSTERIZE, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.EFFECT_POSTERIZE;
+
+    android_hardware_camera_parameters.EFFECT_POSTERIZE =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_WHITEBOARD",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.EFFECT_WHITEBOARD))
+    goto failed;
+
+  Parameters_EFFECT_WHITEBOARD =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.EFFECT_WHITEBOARD, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.EFFECT_WHITEBOARD;
+
+    android_hardware_camera_parameters.EFFECT_WHITEBOARD =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_BLACKBOARD",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.EFFECT_BLACKBOARD))
+    goto failed;
+
+  Parameters_EFFECT_BLACKBOARD =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.EFFECT_BLACKBOARD, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.EFFECT_BLACKBOARD;
+
+    android_hardware_camera_parameters.EFFECT_BLACKBOARD =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "EFFECT_AQUA",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.EFFECT_AQUA))
+    goto failed;
+
+  Parameters_EFFECT_AQUA =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.EFFECT_AQUA, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.EFFECT_AQUA;
+
+    android_hardware_camera_parameters.EFFECT_AQUA =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_AUTO",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.ANTIBANDING_AUTO))
+    goto failed;
+
+  Parameters_ANTIBANDING_AUTO =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.ANTIBANDING_AUTO, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.ANTIBANDING_AUTO;
+
+    android_hardware_camera_parameters.ANTIBANDING_AUTO =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_50HZ",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.ANTIBANDING_50HZ))
+    goto failed;
+
+  Parameters_ANTIBANDING_50HZ =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.ANTIBANDING_50HZ, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.ANTIBANDING_50HZ;
+
+    android_hardware_camera_parameters.ANTIBANDING_50HZ =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_60HZ",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.ANTIBANDING_60HZ))
+    goto failed;
+
+  Parameters_ANTIBANDING_60HZ =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.ANTIBANDING_60HZ, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.ANTIBANDING_60HZ;
+
+    android_hardware_camera_parameters.ANTIBANDING_60HZ =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "ANTIBANDING_OFF",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.ANTIBANDING_OFF))
+    goto failed;
+
+  Parameters_ANTIBANDING_OFF =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.ANTIBANDING_OFF, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.ANTIBANDING_OFF;
+
+    android_hardware_camera_parameters.ANTIBANDING_OFF =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_OFF",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.FLASH_MODE_OFF))
+    goto failed;
+
+  Parameters_FLASH_MODE_OFF =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.FLASH_MODE_OFF, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.FLASH_MODE_OFF;
+
+    android_hardware_camera_parameters.FLASH_MODE_OFF =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_AUTO",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.FLASH_MODE_AUTO))
+    goto failed;
+
+  Parameters_FLASH_MODE_AUTO =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.FLASH_MODE_AUTO, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.FLASH_MODE_AUTO;
+
+    android_hardware_camera_parameters.FLASH_MODE_AUTO =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_ON",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.FLASH_MODE_ON))
+    goto failed;
+
+  Parameters_FLASH_MODE_ON =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.FLASH_MODE_ON, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.FLASH_MODE_ON;
+
+    android_hardware_camera_parameters.FLASH_MODE_ON =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_RED_EYE",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.FLASH_MODE_RED_EYE))
+    goto failed;
+
+  Parameters_FLASH_MODE_RED_EYE =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.FLASH_MODE_RED_EYE, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.FLASH_MODE_RED_EYE;
+
+    android_hardware_camera_parameters.FLASH_MODE_RED_EYE =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "FLASH_MODE_TORCH",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.FLASH_MODE_TORCH))
+    goto failed;
+
+  Parameters_FLASH_MODE_TORCH =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.FLASH_MODE_TORCH, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.FLASH_MODE_TORCH;
+
+    android_hardware_camera_parameters.FLASH_MODE_TORCH =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_AUTO",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_AUTO))
+    goto failed;
+
+  Parameters_SCENE_MODE_AUTO =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_AUTO, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_AUTO;
+
+    android_hardware_camera_parameters.SCENE_MODE_AUTO =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_ACTION",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_ACTION))
+    goto failed;
+
+  Parameters_SCENE_MODE_ACTION =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_ACTION, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_ACTION;
+
+    android_hardware_camera_parameters.SCENE_MODE_ACTION =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_PORTRAIT",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_PORTRAIT))
+    goto failed;
+
+  Parameters_SCENE_MODE_PORTRAIT =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_PORTRAIT, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_PORTRAIT;
+
+    android_hardware_camera_parameters.SCENE_MODE_PORTRAIT =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_LANDSCAPE",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE))
+    goto failed;
+  Parameters_SCENE_MODE_LANDSCAPE =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE;
+
+    android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_NIGHT",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_NIGHT))
+    goto failed;
+
+  Parameters_SCENE_MODE_NIGHT =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_NIGHT, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_NIGHT;
+
+    android_hardware_camera_parameters.SCENE_MODE_NIGHT =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "SCENE_MODE_NIGHT_PORTRAIT", "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT))
+    goto failed;
+  Parameters_SCENE_MODE_NIGHT_PORTRAIT =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT, NULL);
+  {
+    jobject local =
+        android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT;
+
+    android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_THEATRE",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_THEATRE))
+    goto failed;
+
+  Parameters_SCENE_MODE_THEATRE =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_THEATRE, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_THEATRE;
+
+    android_hardware_camera_parameters.SCENE_MODE_THEATRE =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_BEACH",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_BEACH))
+    goto failed;
+
+  Parameters_SCENE_MODE_BEACH =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_BEACH, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_BEACH;
+
+    android_hardware_camera_parameters.SCENE_MODE_BEACH =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SNOW",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_SNOW))
+    goto failed;
+
+  Parameters_SCENE_MODE_SNOW =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_SNOW, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_SNOW;
+
+    android_hardware_camera_parameters.SCENE_MODE_SNOW =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SUNSET",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_SUNSET))
+    goto failed;
+
+
+  Parameters_SCENE_MODE_SUNSET =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_SUNSET, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_SUNSET;
+
+    android_hardware_camera_parameters.SCENE_MODE_SUNSET =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "SCENE_MODE_STEADYPHOTO", "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO))
+    goto failed;
+
+
+  Parameters_SCENE_MODE_STEADYPHOTO =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO;
+
+    android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_FIREWORKS",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_FIREWORKS))
+    goto failed;
+
+  Parameters_SCENE_MODE_FIREWORKS =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_FIREWORKS, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_FIREWORKS;
+
+    android_hardware_camera_parameters.SCENE_MODE_FIREWORKS =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_SPORTS",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_SPORTS))
+    goto failed;
+
+
+  Parameters_SCENE_MODE_SPORTS =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_SPORTS, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_SPORTS;
+
+    android_hardware_camera_parameters.SCENE_MODE_SPORTS =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_PARTY",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_PARTY))
+    goto failed;
+
+  Parameters_SCENE_MODE_PARTY =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_PARTY, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_PARTY;
+
+    android_hardware_camera_parameters.SCENE_MODE_PARTY =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "SCENE_MODE_CANDLELIGHT", "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT))
+    goto failed;
+
+  Parameters_SCENE_MODE_CANDLELIGHT =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT;
+
+    android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_BARCODE",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.SCENE_MODE_BARCODE))
+    goto failed;
+
+  Parameters_SCENE_MODE_BARCODE =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.SCENE_MODE_BARCODE, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.SCENE_MODE_BARCODE;
+
+    android_hardware_camera_parameters.SCENE_MODE_BARCODE =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_AUTO",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.FOCUS_MODE_AUTO))
+    goto failed;
+
+  Parameters_FOCUS_MODE_AUTO =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.FOCUS_MODE_AUTO, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.FOCUS_MODE_AUTO;
+
+    android_hardware_camera_parameters.FOCUS_MODE_AUTO =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_INFINITY",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.FOCUS_MODE_INFINITY))
+    goto failed;
+
+  Parameters_FOCUS_MODE_INFINITY =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.FOCUS_MODE_INFINITY, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.FOCUS_MODE_INFINITY;
+
+    android_hardware_camera_parameters.FOCUS_MODE_INFINITY =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_MACRO",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.FOCUS_MODE_MACRO))
+    goto failed;
+
+  Parameters_FOCUS_MODE_MACRO =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.FOCUS_MODE_MACRO, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.FOCUS_MODE_MACRO;
+
+    android_hardware_camera_parameters.FOCUS_MODE_MACRO =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_FIXED",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.FOCUS_MODE_FIXED))
+    goto failed;
+
+  Parameters_FOCUS_MODE_FIXED =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.FOCUS_MODE_FIXED, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.FOCUS_MODE_FIXED;
+
+    android_hardware_camera_parameters.FOCUS_MODE_FIXED =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass, "FOCUS_MODE_EDOF",
+      "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.FOCUS_MODE_EDOF))
+    goto failed;
+
+  Parameters_FOCUS_MODE_EDOF =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.FOCUS_MODE_EDOF, NULL);
+  {
+    jobject local = android_hardware_camera_parameters.FOCUS_MODE_EDOF;
+
+    android_hardware_camera_parameters.FOCUS_MODE_EDOF =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "FOCUS_MODE_CONTINUOUS_VIDEO", "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
+    goto failed;
+
+  Parameters_FOCUS_MODE_CONTINUOUS_VIDEO =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO, NULL);
+  {
+    jobject local =
+        android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO;
+
+    android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  fieldID =
+      gst_amc_jni_get_static_field_id (env, &err, klass,
+      "FOCUS_MODE_CONTINUOUS_PICTURE", "Ljava/lang/String;");
+  if (!fieldID)
+    goto failed;
+  if (!gst_amc_jni_get_static_object_field (env, &err, klass, fieldID,
+          &android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE))
+    goto failed;
+
+
+  Parameters_FOCUS_MODE_CONTINUOUS_PICTURE =
+      (*env)->GetStringUTFChars (env,
+      android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE, NULL);
+  {
+    jobject local =
+        android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE;
+
+    android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE =
+        (*env)->NewGlobalRef (env, local);
+    (*env)->DeleteLocalRef (env, local);
+  }
+
+  /* java.lang.String */
+  klass = java_lang_string.klass =
+      gst_amc_jni_get_class (env, &err, "java/lang/String");
+  java_lang_string.equals =
+      gst_amc_jni_get_method_id (env, &err, klass, "equals",
+      "(Ljava/lang/Object;)Z");
+
+  /* java.util.List */
+  klass = java_util_list.klass =
+      gst_amc_jni_get_class (env, &err, "java/util/List");
+  java_util_list.iterator =
+      gst_amc_jni_get_method_id (env, &err, klass, "iterator",
+      "()Ljava/util/Iterator;");
+
+  /* java.util.Iterator */
+  klass = java_util_iterator.klass =
+      gst_amc_jni_get_class (env, &err, "java/util/Iterator");
+  java_util_iterator.hasNext =
+      gst_amc_jni_get_method_id (env, &err, klass, "hasNext", "()Z");
+  java_util_iterator.next =
+      gst_amc_jni_get_method_id (env, &err, klass, "next",
+      "()Ljava/lang/Object;");
+
+  /* java.lang.Integer */
+  klass = java_lang_integer.klass =
+      gst_amc_jni_get_class (env, &err, "java/lang/Integer");
+  java_lang_integer.intValue =
+      gst_amc_jni_get_method_id (env, &err, klass, "intValue", "()I");
+
+  if (!org_freedesktop_gstreamer_androidmedia_gstahccallback.klass) {
+    org_freedesktop_gstreamer_androidmedia_gstahccallback.klass =
+        gst_amc_jni_get_class (env, &err,
+        "org/freedesktop/gstreamer/androidmedia/GstAhcCallback");
+  }
+  if (!org_freedesktop_gstreamer_androidmedia_gstahccallback.klass)
+    goto failed;
+
+  org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor =
+      gst_amc_jni_get_method_id (env, &err,
+      org_freedesktop_gstreamer_androidmedia_gstahccallback.klass, "<init>",
+      "(JJ)V");
+
+  if ((*env)->RegisterNatives (env,
+          org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
+          native_methods, G_N_ELEMENTS (native_methods))) {
+    GST_ERROR ("Failed to register native methods for GstAhcCallback");
+    return FALSE;
+  }
+
+  return TRUE;
+
+failed:
+  if (err) {
+    GST_ERROR ("Failed to get android.hardware.Camera class: %s", err->message);
+    g_clear_error (&err);
+  }
+
+  return FALSE;
+
+}
+
+
+gboolean
+gst_android_hardware_camera_init (void)
+{
+  GST_DEBUG_CATEGORY_INIT (ahc_debug, "ahc", 0,
+      "Android Gstreamer Hardware Camera");
+  if (!_init_classes ()) {
+    gst_android_hardware_camera_deinit ();
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+void
+gst_android_hardware_camera_deinit (void)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  if (android_hardware_camera.klass)
+    (*env)->DeleteGlobalRef (env, android_hardware_camera.klass);
+  android_hardware_camera.klass = NULL;
+
+  if (android_hardware_camera_camerainfo.klass)
+    (*env)->DeleteGlobalRef (env, android_hardware_camera_camerainfo.klass);
+  android_hardware_camera_camerainfo.klass = NULL;
+
+  if (android_hardware_camera_size.klass)
+    (*env)->DeleteGlobalRef (env, android_hardware_camera_size.klass);
+  android_hardware_camera_size.klass = NULL;
+
+  if (android_hardware_camera_parameters.klass)
+    (*env)->DeleteGlobalRef (env, android_hardware_camera_parameters.klass);
+  android_hardware_camera_parameters.klass = NULL;
+  if (Parameters_WHITE_BALANCE_AUTO)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_AUTO,
+        Parameters_WHITE_BALANCE_AUTO);
+  Parameters_WHITE_BALANCE_AUTO = NULL;
+  if (android_hardware_camera_parameters.WHITE_BALANCE_AUTO)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_AUTO);
+  android_hardware_camera_parameters.WHITE_BALANCE_AUTO = NULL;
+  if (Parameters_WHITE_BALANCE_INCANDESCENT)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT,
+        Parameters_WHITE_BALANCE_INCANDESCENT);
+  Parameters_WHITE_BALANCE_INCANDESCENT = NULL;
+  if (android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT);
+  android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT = NULL;
+  if (Parameters_WHITE_BALANCE_FLUORESCENT)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT,
+        Parameters_WHITE_BALANCE_FLUORESCENT);
+  Parameters_WHITE_BALANCE_FLUORESCENT = NULL;
+  if (android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT);
+  android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT = NULL;
+  if (Parameters_WHITE_BALANCE_WARM_FLUORESCENT)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT,
+        Parameters_WHITE_BALANCE_WARM_FLUORESCENT);
+  Parameters_WHITE_BALANCE_WARM_FLUORESCENT = NULL;
+  if (android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT);
+  android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT = NULL;
+  if (Parameters_WHITE_BALANCE_DAYLIGHT)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT,
+        Parameters_WHITE_BALANCE_DAYLIGHT);
+  Parameters_WHITE_BALANCE_DAYLIGHT = NULL;
+  if (android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT);
+  android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT = NULL;
+  if (Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT,
+        Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT);
+  Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT = NULL;
+  if (android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT);
+  android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT = NULL;
+  if (Parameters_WHITE_BALANCE_TWILIGHT)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT,
+        Parameters_WHITE_BALANCE_TWILIGHT);
+  Parameters_WHITE_BALANCE_TWILIGHT = NULL;
+  if (android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT);
+  android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT = NULL;
+  if (Parameters_WHITE_BALANCE_SHADE)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_SHADE,
+        Parameters_WHITE_BALANCE_SHADE);
+  Parameters_WHITE_BALANCE_SHADE = NULL;
+  if (android_hardware_camera_parameters.WHITE_BALANCE_SHADE)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.WHITE_BALANCE_SHADE);
+  android_hardware_camera_parameters.WHITE_BALANCE_SHADE = NULL;
+  if (Parameters_EFFECT_NONE)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.EFFECT_NONE, Parameters_EFFECT_NONE);
+  Parameters_EFFECT_NONE = NULL;
+  if (android_hardware_camera_parameters.EFFECT_NONE)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.EFFECT_NONE);
+  android_hardware_camera_parameters.EFFECT_NONE = NULL;
+  if (Parameters_EFFECT_MONO)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.EFFECT_MONO, Parameters_EFFECT_MONO);
+  Parameters_EFFECT_MONO = NULL;
+  if (android_hardware_camera_parameters.EFFECT_MONO)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.EFFECT_MONO);
+  android_hardware_camera_parameters.EFFECT_MONO = NULL;
+  if (Parameters_EFFECT_NEGATIVE)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.EFFECT_NEGATIVE,
+        Parameters_EFFECT_NEGATIVE);
+  Parameters_EFFECT_NEGATIVE = NULL;
+  if (android_hardware_camera_parameters.EFFECT_NEGATIVE)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.EFFECT_NEGATIVE);
+  android_hardware_camera_parameters.EFFECT_NEGATIVE = NULL;
+  if (Parameters_EFFECT_SOLARIZE)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.EFFECT_SOLARIZE,
+        Parameters_EFFECT_SOLARIZE);
+  Parameters_EFFECT_SOLARIZE = NULL;
+  if (android_hardware_camera_parameters.EFFECT_SOLARIZE)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.EFFECT_SOLARIZE);
+  android_hardware_camera_parameters.EFFECT_SOLARIZE = NULL;
+  if (Parameters_EFFECT_SEPIA)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.EFFECT_SEPIA,
+        Parameters_EFFECT_SEPIA);
+  Parameters_EFFECT_SEPIA = NULL;
+  if (android_hardware_camera_parameters.EFFECT_SEPIA)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.EFFECT_SEPIA);
+  android_hardware_camera_parameters.EFFECT_SEPIA = NULL;
+  if (Parameters_EFFECT_POSTERIZE)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.EFFECT_POSTERIZE,
+        Parameters_EFFECT_POSTERIZE);
+  Parameters_EFFECT_POSTERIZE = NULL;
+  if (android_hardware_camera_parameters.EFFECT_POSTERIZE)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.EFFECT_POSTERIZE);
+  android_hardware_camera_parameters.EFFECT_POSTERIZE = NULL;
+  if (Parameters_EFFECT_WHITEBOARD)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.EFFECT_WHITEBOARD,
+        Parameters_EFFECT_WHITEBOARD);
+  Parameters_EFFECT_WHITEBOARD = NULL;
+  if (android_hardware_camera_parameters.EFFECT_WHITEBOARD)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.EFFECT_WHITEBOARD);
+  android_hardware_camera_parameters.EFFECT_WHITEBOARD = NULL;
+  if (Parameters_EFFECT_BLACKBOARD)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.EFFECT_BLACKBOARD,
+        Parameters_EFFECT_BLACKBOARD);
+  Parameters_EFFECT_BLACKBOARD = NULL;
+  if (android_hardware_camera_parameters.EFFECT_BLACKBOARD)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.EFFECT_BLACKBOARD);
+  android_hardware_camera_parameters.EFFECT_BLACKBOARD = NULL;
+  if (Parameters_EFFECT_AQUA)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.EFFECT_AQUA, Parameters_EFFECT_AQUA);
+  Parameters_EFFECT_AQUA = NULL;
+  if (android_hardware_camera_parameters.EFFECT_AQUA)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.EFFECT_AQUA);
+  android_hardware_camera_parameters.EFFECT_AQUA = NULL;
+  if (Parameters_ANTIBANDING_AUTO)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.ANTIBANDING_AUTO,
+        Parameters_ANTIBANDING_AUTO);
+  Parameters_ANTIBANDING_AUTO = NULL;
+  if (android_hardware_camera_parameters.ANTIBANDING_AUTO)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.ANTIBANDING_AUTO);
+  android_hardware_camera_parameters.ANTIBANDING_AUTO = NULL;
+  if (Parameters_ANTIBANDING_50HZ)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.ANTIBANDING_50HZ,
+        Parameters_ANTIBANDING_50HZ);
+  Parameters_ANTIBANDING_50HZ = NULL;
+  if (android_hardware_camera_parameters.ANTIBANDING_50HZ)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.ANTIBANDING_50HZ);
+  android_hardware_camera_parameters.ANTIBANDING_50HZ = NULL;
+  if (Parameters_ANTIBANDING_60HZ)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.ANTIBANDING_60HZ,
+        Parameters_ANTIBANDING_60HZ);
+  Parameters_ANTIBANDING_60HZ = NULL;
+  if (android_hardware_camera_parameters.ANTIBANDING_60HZ)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.ANTIBANDING_60HZ);
+  android_hardware_camera_parameters.ANTIBANDING_60HZ = NULL;
+  if (Parameters_ANTIBANDING_OFF)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.ANTIBANDING_OFF,
+        Parameters_ANTIBANDING_OFF);
+  Parameters_ANTIBANDING_OFF = NULL;
+  if (android_hardware_camera_parameters.ANTIBANDING_OFF)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.ANTIBANDING_OFF);
+  android_hardware_camera_parameters.ANTIBANDING_OFF = NULL;
+  if (Parameters_FLASH_MODE_OFF)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.FLASH_MODE_OFF,
+        Parameters_FLASH_MODE_OFF);
+  Parameters_FLASH_MODE_OFF = NULL;
+  if (android_hardware_camera_parameters.FLASH_MODE_OFF)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.FLASH_MODE_OFF);
+  android_hardware_camera_parameters.FLASH_MODE_OFF = NULL;
+  if (Parameters_FLASH_MODE_AUTO)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.FLASH_MODE_AUTO,
+        Parameters_FLASH_MODE_AUTO);
+  Parameters_FLASH_MODE_AUTO = NULL;
+  if (android_hardware_camera_parameters.FLASH_MODE_AUTO)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.FLASH_MODE_AUTO);
+  android_hardware_camera_parameters.FLASH_MODE_AUTO = NULL;
+  if (Parameters_FLASH_MODE_ON)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.FLASH_MODE_ON,
+        Parameters_FLASH_MODE_ON);
+  Parameters_FLASH_MODE_ON = NULL;
+  if (android_hardware_camera_parameters.FLASH_MODE_ON)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.FLASH_MODE_ON);
+  android_hardware_camera_parameters.FLASH_MODE_ON = NULL;
+  if (Parameters_FLASH_MODE_RED_EYE)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.FLASH_MODE_RED_EYE,
+        Parameters_FLASH_MODE_RED_EYE);
+  Parameters_FLASH_MODE_RED_EYE = NULL;
+  if (android_hardware_camera_parameters.FLASH_MODE_RED_EYE)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.FLASH_MODE_RED_EYE);
+  android_hardware_camera_parameters.FLASH_MODE_RED_EYE = NULL;
+  if (Parameters_FLASH_MODE_TORCH)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.FLASH_MODE_TORCH,
+        Parameters_FLASH_MODE_TORCH);
+  Parameters_FLASH_MODE_TORCH = NULL;
+  if (android_hardware_camera_parameters.FLASH_MODE_TORCH)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.FLASH_MODE_TORCH);
+  android_hardware_camera_parameters.FLASH_MODE_TORCH = NULL;
+  if (Parameters_SCENE_MODE_AUTO)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_AUTO,
+        Parameters_SCENE_MODE_AUTO);
+  Parameters_SCENE_MODE_AUTO = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_AUTO)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_AUTO);
+  android_hardware_camera_parameters.SCENE_MODE_AUTO = NULL;
+  if (Parameters_SCENE_MODE_ACTION)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_ACTION,
+        Parameters_SCENE_MODE_ACTION);
+  Parameters_SCENE_MODE_ACTION = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_ACTION)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_ACTION);
+  android_hardware_camera_parameters.SCENE_MODE_ACTION = NULL;
+  if (Parameters_SCENE_MODE_PORTRAIT)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_PORTRAIT,
+        Parameters_SCENE_MODE_PORTRAIT);
+  Parameters_SCENE_MODE_PORTRAIT = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_PORTRAIT)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_PORTRAIT);
+  android_hardware_camera_parameters.SCENE_MODE_PORTRAIT = NULL;
+  if (Parameters_SCENE_MODE_LANDSCAPE)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE,
+        Parameters_SCENE_MODE_LANDSCAPE);
+  Parameters_SCENE_MODE_LANDSCAPE = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE);
+  android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE = NULL;
+  if (Parameters_SCENE_MODE_NIGHT)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_NIGHT,
+        Parameters_SCENE_MODE_NIGHT);
+  Parameters_SCENE_MODE_NIGHT = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_NIGHT)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_NIGHT);
+  android_hardware_camera_parameters.SCENE_MODE_NIGHT = NULL;
+  if (Parameters_SCENE_MODE_NIGHT_PORTRAIT)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT,
+        Parameters_SCENE_MODE_NIGHT_PORTRAIT);
+  Parameters_SCENE_MODE_NIGHT_PORTRAIT = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT);
+  android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT = NULL;
+  if (Parameters_SCENE_MODE_THEATRE)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_THEATRE,
+        Parameters_SCENE_MODE_THEATRE);
+  Parameters_SCENE_MODE_THEATRE = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_THEATRE)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_THEATRE);
+  android_hardware_camera_parameters.SCENE_MODE_THEATRE = NULL;
+  if (Parameters_SCENE_MODE_BEACH)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_BEACH,
+        Parameters_SCENE_MODE_BEACH);
+  Parameters_SCENE_MODE_BEACH = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_BEACH)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_BEACH);
+  android_hardware_camera_parameters.SCENE_MODE_BEACH = NULL;
+  if (Parameters_SCENE_MODE_SNOW)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_SNOW,
+        Parameters_SCENE_MODE_SNOW);
+  Parameters_SCENE_MODE_SNOW = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_SNOW)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_SNOW);
+  android_hardware_camera_parameters.SCENE_MODE_SNOW = NULL;
+  if (Parameters_SCENE_MODE_SUNSET)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_SUNSET,
+        Parameters_SCENE_MODE_SUNSET);
+  Parameters_SCENE_MODE_SUNSET = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_SUNSET)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_SUNSET);
+  android_hardware_camera_parameters.SCENE_MODE_SUNSET = NULL;
+  if (Parameters_SCENE_MODE_STEADYPHOTO)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO,
+        Parameters_SCENE_MODE_STEADYPHOTO);
+  Parameters_SCENE_MODE_STEADYPHOTO = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO);
+  android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO = NULL;
+  if (Parameters_SCENE_MODE_FIREWORKS)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_FIREWORKS,
+        Parameters_SCENE_MODE_FIREWORKS);
+  Parameters_SCENE_MODE_FIREWORKS = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_FIREWORKS)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_FIREWORKS);
+  android_hardware_camera_parameters.SCENE_MODE_FIREWORKS = NULL;
+  if (Parameters_SCENE_MODE_SPORTS)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_SPORTS,
+        Parameters_SCENE_MODE_SPORTS);
+  Parameters_SCENE_MODE_SPORTS = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_SPORTS)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_SPORTS);
+  android_hardware_camera_parameters.SCENE_MODE_SPORTS = NULL;
+  if (Parameters_SCENE_MODE_PARTY)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_PARTY,
+        Parameters_SCENE_MODE_PARTY);
+  Parameters_SCENE_MODE_PARTY = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_PARTY)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_PARTY);
+  android_hardware_camera_parameters.SCENE_MODE_PARTY = NULL;
+  if (Parameters_SCENE_MODE_CANDLELIGHT)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT,
+        Parameters_SCENE_MODE_CANDLELIGHT);
+  Parameters_SCENE_MODE_CANDLELIGHT = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT);
+  android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT = NULL;
+  if (Parameters_SCENE_MODE_BARCODE)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.SCENE_MODE_BARCODE,
+        Parameters_SCENE_MODE_BARCODE);
+  Parameters_SCENE_MODE_BARCODE = NULL;
+  if (android_hardware_camera_parameters.SCENE_MODE_BARCODE)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.SCENE_MODE_BARCODE);
+  android_hardware_camera_parameters.SCENE_MODE_BARCODE = NULL;
+  if (Parameters_FOCUS_MODE_AUTO)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.FOCUS_MODE_AUTO,
+        Parameters_FOCUS_MODE_AUTO);
+  Parameters_FOCUS_MODE_AUTO = NULL;
+  if (android_hardware_camera_parameters.FOCUS_MODE_AUTO)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.FOCUS_MODE_AUTO);
+  android_hardware_camera_parameters.FOCUS_MODE_AUTO = NULL;
+  if (Parameters_FOCUS_MODE_INFINITY)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.FOCUS_MODE_INFINITY,
+        Parameters_FOCUS_MODE_INFINITY);
+  Parameters_FOCUS_MODE_INFINITY = NULL;
+  if (android_hardware_camera_parameters.FOCUS_MODE_INFINITY)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.FOCUS_MODE_INFINITY);
+  android_hardware_camera_parameters.FOCUS_MODE_INFINITY = NULL;
+  if (Parameters_FOCUS_MODE_MACRO)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.FOCUS_MODE_MACRO,
+        Parameters_FOCUS_MODE_MACRO);
+  Parameters_FOCUS_MODE_MACRO = NULL;
+  if (android_hardware_camera_parameters.FOCUS_MODE_MACRO)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.FOCUS_MODE_MACRO);
+  android_hardware_camera_parameters.FOCUS_MODE_MACRO = NULL;
+  if (Parameters_FOCUS_MODE_FIXED)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.FOCUS_MODE_FIXED,
+        Parameters_FOCUS_MODE_FIXED);
+  Parameters_FOCUS_MODE_FIXED = NULL;
+  if (android_hardware_camera_parameters.FOCUS_MODE_FIXED)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.FOCUS_MODE_FIXED);
+  android_hardware_camera_parameters.FOCUS_MODE_FIXED = NULL;
+  if (Parameters_FOCUS_MODE_EDOF)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.FOCUS_MODE_EDOF,
+        Parameters_FOCUS_MODE_EDOF);
+  Parameters_FOCUS_MODE_EDOF = NULL;
+  if (android_hardware_camera_parameters.FOCUS_MODE_EDOF)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.FOCUS_MODE_EDOF);
+  android_hardware_camera_parameters.FOCUS_MODE_EDOF = NULL;
+  if (Parameters_FOCUS_MODE_CONTINUOUS_VIDEO)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO,
+        Parameters_FOCUS_MODE_CONTINUOUS_VIDEO);
+  Parameters_FOCUS_MODE_CONTINUOUS_VIDEO = NULL;
+  if (android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
+  android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO = NULL;
+  if (Parameters_FOCUS_MODE_CONTINUOUS_PICTURE)
+    (*env)->ReleaseStringUTFChars (env,
+        android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE,
+        Parameters_FOCUS_MODE_CONTINUOUS_PICTURE);
+  Parameters_FOCUS_MODE_CONTINUOUS_PICTURE = NULL;
+  if (android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE)
+    (*env)->DeleteGlobalRef (env,
+        android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
+  android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE = NULL;
+
+  if (java_lang_string.klass)
+    (*env)->DeleteGlobalRef (env, java_lang_string.klass);
+  java_lang_string.klass = NULL;
+
+  if (java_util_list.klass)
+    (*env)->DeleteGlobalRef (env, java_util_list.klass);
+  java_util_list.klass = NULL;
+
+  if (java_util_iterator.klass)
+    (*env)->DeleteGlobalRef (env, java_util_iterator.klass);
+  java_util_iterator.klass = NULL;
+
+  if (java_lang_integer.klass)
+    (*env)->DeleteGlobalRef (env, java_lang_integer.klass);
+  java_lang_integer.klass = NULL;
+
+  if (org_freedesktop_gstreamer_androidmedia_gstahccallback.klass) {
+    (*env)->UnregisterNatives (env,
+        org_freedesktop_gstreamer_androidmedia_gstahccallback.klass);
+    (*env)->DeleteGlobalRef (env,
+        org_freedesktop_gstreamer_androidmedia_gstahccallback.klass);
+  }
+  org_freedesktop_gstreamer_androidmedia_gstahccallback.klass = NULL;
+}
+
+/* android.hardware.Camera */
+#define AHC_CALL(error_statement, type, method, ...)                    \
+  GST_DVM_CALL (error_statement, self->object, type, android_hardware_camera, \
+      method, ## __VA_ARGS__);
+#define AHC_STATIC_CALL(error_statement, type, method, ...)             \
+  GST_DVM_STATIC_CALL (error_statement, type, android_hardware_camera,  \
+      method, ## __VA_ARGS__);
+
+void
+gst_ah_camera_add_callback_buffer (GstAHCamera * self, jbyteArray buffer)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  GST_DEBUG ("add callback_buffer %p", buffer);
+
+  AHC_CALL (, Void, addCallbackBuffer, buffer);
+}
+
+gboolean
+gst_ah_camera_auto_focus (GstAHCamera * self,
+    GstAHCAutoFocusCallback cb, gpointer user_data)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject object = NULL;
+  gboolean ret = FALSE;
+
+  if (cb) {
+    object = (*env)->NewObject (env,
+        org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
+        org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
+        *((jlong *) & cb), *((jlong *) & user_data));
+    if (!object) {
+      GST_ERROR ("Failed to create callback object");
+      (*env)->ExceptionClear (env);
+      goto done;
+    }
+  }
+
+  AHC_CALL (goto done, Void, autoFocus, object);
+
+  ret = TRUE;
+done:
+  if (object)
+    (*env)->DeleteLocalRef (env, object);
+
+  return ret;
+}
+
+gboolean
+gst_ah_camera_cancel_auto_focus (GstAHCamera * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHC_CALL (return FALSE, Void, cancelAutoFocus);
+
+  return TRUE;
+}
+
+gboolean
+gst_ah_camera_get_camera_info (gint camera_id, GstAHCCameraInfo * camera_info)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject jcamera_info = NULL;
+  gboolean ret = FALSE;
+
+  jcamera_info = (*env)->NewObject (env,
+      android_hardware_camera_camerainfo.klass,
+      android_hardware_camera_camerainfo.constructor);
+  if (!jcamera_info) {
+    GST_ERROR ("Failed to call Java method");
+    (*env)->ExceptionClear (env);
+    goto done;
+  }
+
+  AHC_STATIC_CALL (goto done, Void, getCameraInfo, camera_id, jcamera_info);
+
+  camera_info->facing = (*env)->GetIntField (env, jcamera_info,
+      android_hardware_camera_camerainfo.facing);
+  if ((*env)->ExceptionCheck (env)) {
+    GST_ERROR ("Failed to get CameraInfo.facing field");
+    (*env)->ExceptionClear (env);
+    goto done;
+  }
+
+  camera_info->orientation = (*env)->GetIntField (env, jcamera_info,
+      android_hardware_camera_camerainfo.orientation);
+  if ((*env)->ExceptionCheck (env)) {
+    GST_ERROR ("Failed to get CameraInfo.orientation field");
+    (*env)->ExceptionClear (env);
+    goto done;
+  }
+
+  ret = TRUE;
+done:
+  if (jcamera_info)
+    (*env)->DeleteLocalRef (env, jcamera_info);
+
+  return ret;
+}
+
+gint
+gst_ah_camera_get_number_of_cameras (void)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gint num_cameras;
+
+  num_cameras = AHC_STATIC_CALL (return -1, Int, getNumberOfCameras);
+
+  return num_cameras;
+}
+
+GstAHCParameters *
+gst_ah_camera_get_parameters (GstAHCamera * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject object = NULL;
+  GstAHCParameters *params = NULL;
+
+  object = AHC_CALL (return NULL, Object, getParameters);
+  if (object) {
+    params = g_slice_new0 (GstAHCParameters);
+    params->object = (*env)->NewGlobalRef (env, object);
+    (*env)->DeleteLocalRef (env, object);
+    if (!params->object) {
+      GST_ERROR ("Failed to create global reference");
+      (*env)->ExceptionClear (env);
+      g_slice_free (GstAHCParameters, params);
+      return NULL;
+    }
+  }
+
+  GST_DEBUG ("return parameters %p", params->object);
+
+  return params;
+}
+
+gboolean
+gst_ah_camera_lock (GstAHCamera * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHC_CALL (return FALSE, Void, lock);
+
+  return TRUE;
+}
+
+GstAHCamera *
+gst_ah_camera_open (gint camera_id)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject object = NULL;
+  GstAHCamera *camera = NULL;
+
+  object = AHC_STATIC_CALL (goto done, Object, open, camera_id);
+  if (object) {
+    camera = g_slice_new0 (GstAHCamera);
+    camera->object = (*env)->NewGlobalRef (env, object);
+    (*env)->DeleteLocalRef (env, object);
+    if (!camera->object) {
+      GST_ERROR ("Failed to create global reference");
+      (*env)->ExceptionClear (env);
+      g_slice_free (GstAHCamera, camera);
+      camera = NULL;
+    }
+  }
+
+done:
+  return camera;
+}
+
+gboolean
+gst_ah_camera_reconnect (GstAHCamera * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHC_CALL (return FALSE, Void, reconnect);
+
+  return TRUE;
+}
+
+void
+gst_ah_camera_release (GstAHCamera * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHC_CALL (, Void, release);
+}
+
+void
+gst_ah_camera_free (GstAHCamera * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  (*env)->DeleteGlobalRef (env, self->object);
+  g_slice_free (GstAHCamera, self);
+}
+
+
+gboolean
+gst_ah_camera_set_parameters (GstAHCamera * self, GstAHCParameters * params)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHC_CALL (return FALSE, Void, setParameters, params->object);
+
+  return TRUE;
+}
+
+gboolean
+gst_ah_camera_set_error_callback (GstAHCamera * self, GstAHCErrorCallback cb,
+    gpointer user_data)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject object = NULL;
+  gboolean ret = FALSE;
+
+  if (cb) {
+    object = (*env)->NewObject (env,
+        org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
+        org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
+        *((jlong *) & cb), *((jlong *) & user_data));
+    if (!object) {
+      GST_ERROR ("Failed to create callback object");
+      (*env)->ExceptionClear (env);
+      goto done;
+    }
+  }
+
+  AHC_CALL (goto done, Void, setErrorCallback, object);
+
+  ret = TRUE;
+done:
+  if (object)
+    (*env)->DeleteLocalRef (env, object);
+
+  return ret;
+}
+
+gboolean
+gst_ah_camera_set_preview_callback_with_buffer (GstAHCamera * self,
+    GstAHCPreviewCallback cb, gpointer user_data)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject object = NULL;
+  gboolean ret = FALSE;
+
+  if (cb) {
+    object = (*env)->NewObject (env,
+        org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
+        org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
+        *((jlong *) & cb), *((jlong *) & user_data));
+    if (!object) {
+      GST_ERROR ("Failed to create callback object");
+      (*env)->ExceptionClear (env);
+      goto done;
+    }
+  }
+
+  AHC_CALL (goto done, Void, setPreviewCallbackWithBuffer, object);
+
+  ret = TRUE;
+done:
+  if (object)
+    (*env)->DeleteLocalRef (env, object);
+
+  return ret;
+}
+
+void
+gst_ah_camera_set_preview_texture (GstAHCamera * self,
+    GstAGSurfaceTexture * surfaceTexture)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHC_CALL (, Void, setPreviewTexture, surfaceTexture->object);
+}
+
+gboolean
+gst_ah_camera_start_preview (GstAHCamera * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHC_CALL (return FALSE, Void, startPreview);
+
+  return TRUE;
+}
+
+gboolean
+gst_ah_camera_start_smooth_zoom (GstAHCamera * self, gint value)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHC_CALL (return FALSE, Void, startSmoothZoom, value);
+
+  return TRUE;
+}
+
+gboolean
+gst_ah_camera_stop_preview (GstAHCamera * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHC_CALL (return FALSE, Void, stopPreview);
+
+  return TRUE;
+}
+
+gboolean
+gst_ah_camera_stop_smooth_zoom (GstAHCamera * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHC_CALL (return FALSE, Void, stopSmoothZoom);
+
+  return TRUE;
+}
+
+gboolean
+gst_ah_camera_unlock (GstAHCamera * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHC_CALL (return FALSE, Void, unlock);
+
+  return TRUE;
+}
+
+#undef AHC_CALL
+#undef AHC_STATIC_CALL
+
+/* android.hardware.Camera.Size */
+GstAHCSize *
+gst_ahc_size_new (gint width, gint height)
+{
+  GstAHCSize *self = g_slice_new0 (GstAHCSize);
+
+  self->width = width;
+  self->height = height;
+
+  return self;
+}
+
+void
+gst_ahc_size_free (GstAHCSize * self)
+{
+  g_slice_free (GstAHCSize, self);
+}
+
+/* java.lang.String */
+static jboolean
+java_lang_string_equals (JNIEnv * env, jstring str, jstring obj)
+{
+  return (*env)->CallBooleanMethod (env, str, java_lang_string.equals, obj);
+}
+
+/* java.util.List */
+static jobject
+java_util_list_iterator (JNIEnv * env, jobject obj)
+{
+  return (*env)->CallObjectMethod (env, obj, java_util_list.iterator);
+}
+
+/* java.util.Iterator */
+static jobject
+java_util_iterator_next (JNIEnv * env, jobject obj)
+{
+  return (*env)->CallObjectMethod (env, obj, java_util_iterator.next);
+}
+
+static jboolean
+java_util_iterator_has_next (JNIEnv * env, jobject obj)
+{
+  return (*env)->CallBooleanMethod (env, obj, java_util_iterator.hasNext);
+}
+
+/* java.lang.Integer */
+static jint
+java_lang_integer_int_value (JNIEnv * env, jobject obj)
+{
+  return (*env)->CallIntMethod (env, obj, java_lang_integer.intValue);
+}
+
+
+/* android.hardware.Camera.Parameters */
+#define AHCP_CALL(error_statement, type, method, ...)                   \
+  GST_DVM_CALL (error_statement, self->object, type,                    \
+      android_hardware_camera_parameters, method, ## __VA_ARGS__);
+
+#define AHCP_STATIC_CALL(error_statement, type, method, ...)            \
+  GST_DVM_STATIC_CALL (error_statement, type,                           \
+      android_hardware_camera_parameters, method, ## __VA_ARGS__);
+
+static const gchar *
+_white_balance_to_gchar (JNIEnv * env, jstring white_balance)
+{
+  if (!white_balance)
+    return NULL;
+
+  if (java_lang_string_equals (env, white_balance,
+          android_hardware_camera_parameters.WHITE_BALANCE_AUTO))
+    return Parameters_WHITE_BALANCE_AUTO;
+  else if (java_lang_string_equals (env, white_balance,
+          android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT))
+    return Parameters_WHITE_BALANCE_INCANDESCENT;
+  else if (java_lang_string_equals (env, white_balance,
+          android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT))
+    return Parameters_WHITE_BALANCE_FLUORESCENT;
+  else if (java_lang_string_equals (env, white_balance,
+          android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT))
+    return Parameters_WHITE_BALANCE_WARM_FLUORESCENT;
+  else if (java_lang_string_equals (env, white_balance,
+          android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT))
+    return Parameters_WHITE_BALANCE_DAYLIGHT;
+  else if (java_lang_string_equals (env, white_balance,
+          android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT))
+    return Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT;
+  else if (java_lang_string_equals (env, white_balance,
+          android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT))
+    return Parameters_WHITE_BALANCE_TWILIGHT;
+  else if (java_lang_string_equals (env, white_balance,
+          android_hardware_camera_parameters.WHITE_BALANCE_SHADE))
+    return Parameters_WHITE_BALANCE_SHADE;
+
+  return NULL;
+}
+
+static jstring
+_white_balance_to_jstring (const gchar * white_balance)
+{
+  if (!white_balance)
+    return NULL;
+
+  if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_AUTO))
+    return android_hardware_camera_parameters.WHITE_BALANCE_AUTO;
+  else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_INCANDESCENT))
+    return android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT;
+  else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_FLUORESCENT))
+    return android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT;
+  else if (!g_strcmp0 (white_balance,
+          Parameters_WHITE_BALANCE_WARM_FLUORESCENT))
+    return android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT;
+  else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_DAYLIGHT))
+    return android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT;
+  else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT))
+    return android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT;
+  else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_TWILIGHT))
+    return android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT;
+  else if (!g_strcmp0 (white_balance, Parameters_WHITE_BALANCE_SHADE))
+    return android_hardware_camera_parameters.WHITE_BALANCE_SHADE;
+
+  return NULL;
+}
+
+static const gchar *
+_color_effect_to_gchar (JNIEnv * env, jstring color_effect)
+{
+  if (!color_effect)
+    return NULL;
+
+  if (java_lang_string_equals (env, color_effect,
+          android_hardware_camera_parameters.EFFECT_NONE))
+    return Parameters_EFFECT_NONE;
+  else if (java_lang_string_equals (env, color_effect,
+          android_hardware_camera_parameters.EFFECT_MONO))
+    return Parameters_EFFECT_MONO;
+  else if (java_lang_string_equals (env, color_effect,
+          android_hardware_camera_parameters.EFFECT_NEGATIVE))
+    return Parameters_EFFECT_NEGATIVE;
+  else if (java_lang_string_equals (env, color_effect,
+          android_hardware_camera_parameters.EFFECT_SOLARIZE))
+    return Parameters_EFFECT_SOLARIZE;
+  else if (java_lang_string_equals (env, color_effect,
+          android_hardware_camera_parameters.EFFECT_SEPIA))
+    return Parameters_EFFECT_SEPIA;
+  else if (java_lang_string_equals (env, color_effect,
+          android_hardware_camera_parameters.EFFECT_POSTERIZE))
+    return Parameters_EFFECT_POSTERIZE;
+  else if (java_lang_string_equals (env, color_effect,
+          android_hardware_camera_parameters.EFFECT_WHITEBOARD))
+    return Parameters_EFFECT_WHITEBOARD;
+  else if (java_lang_string_equals (env, color_effect,
+          android_hardware_camera_parameters.EFFECT_BLACKBOARD))
+    return Parameters_EFFECT_BLACKBOARD;
+  else if (java_lang_string_equals (env, color_effect,
+          android_hardware_camera_parameters.EFFECT_AQUA))
+    return Parameters_EFFECT_AQUA;
+
+  return NULL;
+}
+
+static jstring
+_color_effect_to_jstring (const gchar * color_effect)
+{
+  if (!color_effect)
+    return NULL;
+
+  if (!g_strcmp0 (color_effect, Parameters_EFFECT_NONE))
+    return android_hardware_camera_parameters.EFFECT_NONE;
+  else if (!g_strcmp0 (color_effect, Parameters_EFFECT_MONO))
+    return android_hardware_camera_parameters.EFFECT_MONO;
+  else if (!g_strcmp0 (color_effect, Parameters_EFFECT_NEGATIVE))
+    return android_hardware_camera_parameters.EFFECT_NEGATIVE;
+  else if (!g_strcmp0 (color_effect, Parameters_EFFECT_SOLARIZE))
+    return android_hardware_camera_parameters.EFFECT_SOLARIZE;
+  else if (!g_strcmp0 (color_effect, Parameters_EFFECT_SEPIA))
+    return android_hardware_camera_parameters.EFFECT_SEPIA;
+  else if (!g_strcmp0 (color_effect, Parameters_EFFECT_POSTERIZE))
+    return android_hardware_camera_parameters.EFFECT_POSTERIZE;
+  else if (!g_strcmp0 (color_effect, Parameters_EFFECT_WHITEBOARD))
+    return android_hardware_camera_parameters.EFFECT_WHITEBOARD;
+  else if (!g_strcmp0 (color_effect, Parameters_EFFECT_BLACKBOARD))
+    return android_hardware_camera_parameters.EFFECT_BLACKBOARD;
+  else if (!g_strcmp0 (color_effect, Parameters_EFFECT_AQUA))
+    return android_hardware_camera_parameters.EFFECT_AQUA;
+
+  return NULL;
+}
+
+static const gchar *
+_antibanding_to_gchar (JNIEnv * env, jstring antibanding)
+{
+  if (!antibanding)
+    return NULL;
+
+  if (java_lang_string_equals (env, antibanding,
+          android_hardware_camera_parameters.ANTIBANDING_AUTO))
+    return Parameters_ANTIBANDING_AUTO;
+  else if (java_lang_string_equals (env, antibanding,
+          android_hardware_camera_parameters.ANTIBANDING_50HZ))
+    return Parameters_ANTIBANDING_50HZ;
+  else if (java_lang_string_equals (env, antibanding,
+          android_hardware_camera_parameters.ANTIBANDING_60HZ))
+    return Parameters_ANTIBANDING_60HZ;
+  else if (java_lang_string_equals (env, antibanding,
+          android_hardware_camera_parameters.ANTIBANDING_OFF))
+    return Parameters_ANTIBANDING_OFF;
+
+  return NULL;
+}
+
+static jstring
+_antibanding_to_jstring (const gchar * antibanding)
+{
+  if (!antibanding)
+    return NULL;
+
+  if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_AUTO))
+    return android_hardware_camera_parameters.ANTIBANDING_AUTO;
+  else if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_50HZ))
+    return android_hardware_camera_parameters.ANTIBANDING_50HZ;
+  else if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_60HZ))
+    return android_hardware_camera_parameters.ANTIBANDING_60HZ;
+  else if (!g_strcmp0 (antibanding, Parameters_ANTIBANDING_OFF))
+    return android_hardware_camera_parameters.ANTIBANDING_OFF;
+
+  return NULL;
+}
+
+static const gchar *
+_flash_mode_to_gchar (JNIEnv * env, jstring flash_mode)
+{
+  if (!flash_mode)
+    return NULL;
+
+  if (java_lang_string_equals (env, flash_mode,
+          android_hardware_camera_parameters.FLASH_MODE_OFF))
+    return Parameters_FLASH_MODE_OFF;
+  else if (java_lang_string_equals (env, flash_mode,
+          android_hardware_camera_parameters.FLASH_MODE_AUTO))
+    return Parameters_FLASH_MODE_AUTO;
+  else if (java_lang_string_equals (env, flash_mode,
+          android_hardware_camera_parameters.FLASH_MODE_ON))
+    return Parameters_FLASH_MODE_ON;
+  else if (java_lang_string_equals (env, flash_mode,
+          android_hardware_camera_parameters.FLASH_MODE_RED_EYE))
+    return Parameters_FLASH_MODE_RED_EYE;
+  else if (java_lang_string_equals (env, flash_mode,
+          android_hardware_camera_parameters.FLASH_MODE_TORCH))
+    return Parameters_FLASH_MODE_TORCH;
+
+  return NULL;
+}
+
+static jstring
+_flash_mode_to_jstring (const gchar * flash_mode)
+{
+  if (!flash_mode)
+    return NULL;
+
+  if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_OFF))
+    return android_hardware_camera_parameters.FLASH_MODE_OFF;
+  else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_AUTO))
+    return android_hardware_camera_parameters.FLASH_MODE_AUTO;
+  else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_ON))
+    return android_hardware_camera_parameters.FLASH_MODE_ON;
+  else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_RED_EYE))
+    return android_hardware_camera_parameters.FLASH_MODE_RED_EYE;
+  else if (!g_strcmp0 (flash_mode, Parameters_FLASH_MODE_TORCH))
+    return android_hardware_camera_parameters.FLASH_MODE_TORCH;
+
+  return NULL;
+}
+
+static const gchar *
+_scene_mode_to_gchar (JNIEnv * env, jstring scene_mode)
+{
+  if (!scene_mode)
+    return NULL;
+
+  if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_AUTO))
+    return Parameters_SCENE_MODE_AUTO;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_ACTION))
+    return Parameters_SCENE_MODE_ACTION;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_PORTRAIT))
+    return Parameters_SCENE_MODE_PORTRAIT;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE))
+    return Parameters_SCENE_MODE_LANDSCAPE;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_NIGHT))
+    return Parameters_SCENE_MODE_NIGHT;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT))
+    return Parameters_SCENE_MODE_NIGHT_PORTRAIT;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_THEATRE))
+    return Parameters_SCENE_MODE_THEATRE;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_BEACH))
+    return Parameters_SCENE_MODE_BEACH;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_SNOW))
+    return Parameters_SCENE_MODE_SNOW;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_SUNSET))
+    return Parameters_SCENE_MODE_SUNSET;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO))
+    return Parameters_SCENE_MODE_STEADYPHOTO;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_FIREWORKS))
+    return Parameters_SCENE_MODE_FIREWORKS;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_SPORTS))
+    return Parameters_SCENE_MODE_SPORTS;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_PARTY))
+    return Parameters_SCENE_MODE_PARTY;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT))
+    return Parameters_SCENE_MODE_CANDLELIGHT;
+  else if (java_lang_string_equals (env, scene_mode,
+          android_hardware_camera_parameters.SCENE_MODE_BARCODE))
+    return Parameters_SCENE_MODE_BARCODE;
+
+  return NULL;
+}
+
+static const jstring
+_scene_mode_to_jstring (const gchar * scene_mode)
+{
+  if (!scene_mode)
+    return NULL;
+
+  if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_AUTO))
+    return android_hardware_camera_parameters.SCENE_MODE_AUTO;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_ACTION))
+    return android_hardware_camera_parameters.SCENE_MODE_ACTION;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_PORTRAIT))
+    return android_hardware_camera_parameters.SCENE_MODE_PORTRAIT;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_LANDSCAPE))
+    return android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_NIGHT))
+    return android_hardware_camera_parameters.SCENE_MODE_NIGHT;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_NIGHT_PORTRAIT))
+    return android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_THEATRE))
+    return android_hardware_camera_parameters.SCENE_MODE_THEATRE;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_BEACH))
+    return android_hardware_camera_parameters.SCENE_MODE_BEACH;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_SNOW))
+    return android_hardware_camera_parameters.SCENE_MODE_SNOW;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_SUNSET))
+    return android_hardware_camera_parameters.SCENE_MODE_SUNSET;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_STEADYPHOTO))
+    return android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_FIREWORKS))
+    return android_hardware_camera_parameters.SCENE_MODE_FIREWORKS;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_SPORTS))
+    return android_hardware_camera_parameters.SCENE_MODE_SPORTS;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_PARTY))
+    return android_hardware_camera_parameters.SCENE_MODE_PARTY;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_CANDLELIGHT))
+    return android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT;
+  else if (!g_strcmp0 (scene_mode, Parameters_SCENE_MODE_BARCODE))
+    return android_hardware_camera_parameters.SCENE_MODE_BARCODE;
+
+  return NULL;
+}
+
+static const gchar *
+_focus_mode_to_gchar (JNIEnv * env, jstring focus_mode)
+{
+  if (!focus_mode)
+    return NULL;
+
+  if (java_lang_string_equals (env, focus_mode,
+          android_hardware_camera_parameters.FOCUS_MODE_AUTO))
+    return Parameters_FOCUS_MODE_AUTO;
+  else if (java_lang_string_equals (env, focus_mode,
+          android_hardware_camera_parameters.FOCUS_MODE_INFINITY))
+    return Parameters_FOCUS_MODE_INFINITY;
+  else if (java_lang_string_equals (env, focus_mode,
+          android_hardware_camera_parameters.FOCUS_MODE_MACRO))
+    return Parameters_FOCUS_MODE_MACRO;
+  else if (java_lang_string_equals (env, focus_mode,
+          android_hardware_camera_parameters.FOCUS_MODE_FIXED))
+    return Parameters_FOCUS_MODE_FIXED;
+  else if (java_lang_string_equals (env, focus_mode,
+          android_hardware_camera_parameters.FOCUS_MODE_EDOF))
+    return Parameters_FOCUS_MODE_EDOF;
+  else if (java_lang_string_equals (env, focus_mode,
+          android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO))
+    return Parameters_FOCUS_MODE_CONTINUOUS_VIDEO;
+  else if (java_lang_string_equals (env, focus_mode,
+          android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE))
+    return Parameters_FOCUS_MODE_CONTINUOUS_PICTURE;
+
+  return NULL;
+}
+
+static jstring
+_focus_mode_to_jstring (const gchar * focus_mode)
+{
+  if (!focus_mode)
+    return NULL;
+
+  if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_AUTO))
+    return android_hardware_camera_parameters.FOCUS_MODE_AUTO;
+  else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_INFINITY))
+    return android_hardware_camera_parameters.FOCUS_MODE_INFINITY;
+  else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_MACRO))
+    return android_hardware_camera_parameters.FOCUS_MODE_MACRO;
+  else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_FIXED))
+    return android_hardware_camera_parameters.FOCUS_MODE_FIXED;
+  else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_EDOF))
+    return android_hardware_camera_parameters.FOCUS_MODE_EDOF;
+  else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_CONTINUOUS_VIDEO))
+    return android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO;
+  else if (!g_strcmp0 (focus_mode, Parameters_FOCUS_MODE_CONTINUOUS_PICTURE))
+    return android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE;
+
+  return NULL;
+}
+
+gchar *
+gst_ahc_parameters_flatten (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jstring v_str = NULL;
+  const gchar *v = NULL;
+  gchar *ret = NULL;
+
+  v_str = AHCP_CALL (goto done, Object, flatten);
+  v = (*env)->GetStringUTFChars (env, v_str, NULL);
+  if (!v) {
+    GST_ERROR ("Failed to convert string to UTF8");
+    (*env)->ExceptionClear (env);
+    goto done;
+  }
+
+  ret = g_strdup (v);
+done:
+  if (v)
+    (*env)->ReleaseStringUTFChars (env, v_str, v);
+  if (v_str)
+    (*env)->DeleteLocalRef (env, v_str);
+
+  return ret;
+}
+
+const gchar *
+gst_ahc_parameters_get_antibanding (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  const gchar *ret = NULL;
+  jstring antibanding;
+
+  antibanding = AHCP_CALL (return NULL, Object, getAntibanding);
+
+  ret = _antibanding_to_gchar (env, antibanding);
+
+  if (antibanding)
+    (*env)->DeleteLocalRef (env, antibanding);
+
+  return ret;
+}
+
+const gchar *
+gst_ahc_parameters_get_color_effect (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  const gchar *ret = NULL;
+  jstring color_effect;
+
+  color_effect = AHCP_CALL (return NULL, Object, getColorEffect);
+
+  ret = _color_effect_to_gchar (env, color_effect);
+
+  if (color_effect)
+    (*env)->DeleteLocalRef (env, color_effect);
+
+  return ret;
+}
+
+gint
+gst_ahc_parameters_get_exposure_compensation (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gint ev;
+
+  ev = AHCP_CALL (return -1, Int, getExposureCompensation);
+
+  return ev;
+}
+
+gfloat
+gst_ahc_parameters_get_exposure_compensation_step (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gfloat step;
+
+  step = AHCP_CALL (return 0.0, Float, getExposureCompensationStep);
+
+  return step;
+}
+
+const gchar *
+gst_ahc_parameters_get_flash_mode (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  const gchar *ret = NULL;
+  jstring flash_mode;
+
+  flash_mode = AHCP_CALL (return NULL, Object, getFlashMode);
+
+  ret = _flash_mode_to_gchar (env, flash_mode);
+
+  if (flash_mode)
+    (*env)->DeleteLocalRef (env, flash_mode);
+
+  return ret;
+}
+
+gfloat
+gst_ahc_parameters_get_focal_length (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gfloat length;
+
+  length = AHCP_CALL (return 0.0, Float, getFocalLength);
+
+  return length;
+}
+
+const gchar *
+gst_ahc_parameters_get_focus_mode (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  const gchar *ret = NULL;
+  jstring focus_mode;
+
+  focus_mode = AHCP_CALL (return NULL, Object, getFocusMode);
+
+  ret = _focus_mode_to_gchar (env, focus_mode);
+
+  if (focus_mode)
+    (*env)->DeleteLocalRef (env, focus_mode);
+
+  return ret;
+}
+
+gfloat
+gst_ahc_parameters_get_horizontal_view_angle (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gfloat angle;
+
+  angle = AHCP_CALL (return 0.0, Float, getHorizontalViewAngle);
+
+  return angle;
+}
+
+gint
+gst_ahc_parameters_get_max_exposure_compensation (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gint max;
+
+  max = AHCP_CALL (return 0, Int, getMaxExposureCompensation);
+
+  return max;
+}
+
+gint
+gst_ahc_parameters_get_max_zoom (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gint max;
+
+  max = AHCP_CALL (return -1, Int, getMaxZoom);
+
+  return max;
+}
+
+gint
+gst_ahc_parameters_get_min_exposure_compensation (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gint min;
+
+  min = AHCP_CALL (return 0, Int, getMinExposureCompensation);
+
+  return min;
+}
+
+gint
+gst_ahc_parameters_get_preview_format (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gint format;
+
+  format = AHCP_CALL (return 0, Int, getPreviewFormat);
+
+  return format;
+}
+
+gboolean
+gst_ahc_parameters_get_preview_fps_range (GstAHCParameters * self,
+    gint * min, gint * max)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gboolean ret = FALSE;
+  jintArray range = NULL;
+  jint *fps = NULL;
+
+  range = (*env)->NewIntArray (env, 2);
+  if (!fps) {
+    (*env)->ExceptionClear (env);
+    GST_ERROR ("Failed to create array");
+    goto done;
+  }
+
+  AHCP_CALL (goto done, Void, getPreviewFpsRange, range);
+
+  fps = (*env)->GetIntArrayElements (env, range, NULL);
+  if ((*env)->ExceptionCheck (env) || !fps) {
+    (*env)->ExceptionClear (env);
+    GST_ERROR ("Failed to get array elements");
+    goto done;
+  }
+  if (min)
+    *min = fps[0];
+  if (max)
+    *max = fps[1];
+
+  ret = TRUE;
+done:
+  if (fps)
+    (*env)->ReleaseIntArrayElements (env, range, fps, JNI_ABORT);
+  if (range)
+    (*env)->DeleteLocalRef (env, range);
+
+  return ret;
+}
+
+GstAHCSize *
+gst_ahc_parameters_get_preview_size (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject jsize = NULL;
+  GstAHCSize *size = NULL;
+
+  jsize = AHCP_CALL (goto done, Object, getPreviewSize);
+
+  size = g_slice_new0 (GstAHCSize);
+
+  size->width = (*env)->GetIntField (env, jsize,
+      android_hardware_camera_size.width);
+  if ((*env)->ExceptionCheck (env)) {
+    GST_ERROR ("Failed to get Camera.Size.width field");
+    (*env)->ExceptionClear (env);
+    g_slice_free (GstAHCSize, size);
+    size = NULL;
+    goto done;
+  }
+
+  size->height = (*env)->GetIntField (env, jsize,
+      android_hardware_camera_size.height);
+  if ((*env)->ExceptionCheck (env)) {
+    GST_ERROR ("Failed to get Camera.Size.height field");
+    (*env)->ExceptionClear (env);
+    g_slice_free (GstAHCSize, size);
+    size = NULL;
+    goto done;
+  }
+
+done:
+  if (jsize)
+    (*env)->DeleteLocalRef (env, jsize);
+
+  return size;
+}
+
+const gchar *
+gst_ahc_parameters_get_scene_mode (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  const gchar *ret = NULL;
+  jstring scene_mode;
+
+  scene_mode = AHCP_CALL (return NULL, Object, getSceneMode);
+
+  ret = _scene_mode_to_gchar (env, scene_mode);
+
+  if (scene_mode)
+    (*env)->DeleteLocalRef (env, scene_mode);
+
+  return ret;
+}
+
+GList *
+gst_ahc_parameters_get_supported_antibanding (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject list = NULL;
+  GList *ret = NULL;
+
+  list = AHCP_CALL (return NULL, Object, getSupportedAntibanding);
+
+  if (list) {
+    jobject iterator = NULL;
+
+    iterator = java_util_list_iterator (env, list);
+    if (iterator) {
+      while (java_util_iterator_has_next (env, iterator)) {
+        jobject str = java_util_iterator_next (env, iterator);
+
+        if (str) {
+          const gchar *value = _antibanding_to_gchar (env, str);
+
+          ret = g_list_append (ret, (gchar *) value);
+          (*env)->DeleteLocalRef (env, str);
+        }
+      }
+      (*env)->DeleteLocalRef (env, iterator);
+    }
+    (*env)->DeleteLocalRef (env, list);
+  }
+
+  return ret;
+}
+
+void
+gst_ahc_parameters_supported_antibanding_free (GList * list)
+{
+  g_list_free (list);
+}
+
+GList *
+gst_ahc_parameters_get_supported_color_effects (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject list = NULL;
+  GList *ret = NULL;
+
+  list = AHCP_CALL (return NULL, Object, getSupportedColorEffects);
+
+  if (list) {
+    jobject iterator = NULL;
+
+    iterator = java_util_list_iterator (env, list);
+    if (iterator) {
+      while (java_util_iterator_has_next (env, iterator)) {
+        jobject str = java_util_iterator_next (env, iterator);
+
+        if (str) {
+          const gchar *value = _color_effect_to_gchar (env, str);
+
+          ret = g_list_append (ret, (gchar *) value);
+          (*env)->DeleteLocalRef (env, str);
+        }
+      }
+      (*env)->DeleteLocalRef (env, iterator);
+    }
+    (*env)->DeleteLocalRef (env, list);
+  }
+
+  return ret;
+}
+
+void
+gst_ahc_parameters_supported_color_effects_free (GList * list)
+{
+  g_list_free (list);
+}
+
+GList *
+gst_ahc_parameters_get_supported_flash_modes (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject list = NULL;
+  GList *ret = NULL;
+
+  list = AHCP_CALL (return NULL, Object, getSupportedFlashModes);
+
+  if (list) {
+    jobject iterator = NULL;
+
+    iterator = java_util_list_iterator (env, list);
+    if (iterator) {
+      while (java_util_iterator_has_next (env, iterator)) {
+        jobject str = java_util_iterator_next (env, iterator);
+
+        if (str) {
+          const gchar *value = _flash_mode_to_gchar (env, str);
+
+          ret = g_list_append (ret, (gchar *) value);
+          (*env)->DeleteLocalRef (env, str);
+        }
+      }
+      (*env)->DeleteLocalRef (env, iterator);
+    }
+    (*env)->DeleteLocalRef (env, list);
+  }
+
+  return ret;
+}
+
+void
+gst_ahc_parameters_supported_flash_modes_free (GList * list)
+{
+  g_list_free (list);
+}
+
+GList *
+gst_ahc_parameters_get_supported_focus_modes (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject list = NULL;
+  GList *ret = NULL;
+
+  list = AHCP_CALL (return NULL, Object, getSupportedFocusModes);
+
+  if (list) {
+    jobject iterator = NULL;
+
+    iterator = java_util_list_iterator (env, list);
+    if (iterator) {
+      while (java_util_iterator_has_next (env, iterator)) {
+        jobject str = java_util_iterator_next (env, iterator);
+
+        if (str) {
+          const gchar *value = _focus_mode_to_gchar (env, str);
+
+          ret = g_list_append (ret, (gchar *) value);
+          (*env)->DeleteLocalRef (env, str);
+        }
+      }
+      (*env)->DeleteLocalRef (env, iterator);
+    }
+    (*env)->DeleteLocalRef (env, list);
+  }
+
+  return ret;
+}
+
+void
+gst_ahc_parameters_supported_focus_modes_free (GList * list)
+{
+  g_list_free (list);
+}
+
+GList *
+gst_ahc_parameters_get_supported_preview_formats (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject list = NULL;
+  GList *ret = NULL;
+
+  list = AHCP_CALL (return NULL, Object, getSupportedPreviewFormats);
+
+  if (list) {
+    jobject iterator = NULL;
+
+    iterator = java_util_list_iterator (env, list);
+    if (iterator) {
+      while (java_util_iterator_has_next (env, iterator)) {
+        jobject integer = java_util_iterator_next (env, iterator);
+
+        if (integer) {
+          jint value = java_lang_integer_int_value (env, integer);
+
+          ret = g_list_append (ret, GINT_TO_POINTER (value));
+          (*env)->DeleteLocalRef (env, integer);
+        }
+      }
+      (*env)->DeleteLocalRef (env, iterator);
+    }
+    (*env)->DeleteLocalRef (env, list);
+  }
+
+  return ret;
+}
+
+void
+gst_ahc_parameters_supported_preview_formats_free (GList * list)
+{
+  g_list_free (list);
+}
+
+GList *
+gst_ahc_parameters_get_supported_preview_fps_range (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject list = NULL;
+  GList *ret = NULL;
+
+  list = AHCP_CALL (return NULL, Object, getSupportedPreviewFpsRange);
+
+  if (list) {
+    jobject iterator = NULL;
+
+    iterator = java_util_list_iterator (env, list);
+    if (iterator) {
+      while (java_util_iterator_has_next (env, iterator)) {
+        jintArray range = java_util_iterator_next (env, iterator);
+
+        if (range) {
+          jint *fps = g_new (jint, 2);
+
+          (*env)->GetIntArrayRegion (env, range, 0, 2, fps);
+          ret = g_list_append (ret, fps);
+          (*env)->DeleteLocalRef (env, range);
+        }
+      }
+      (*env)->DeleteLocalRef (env, iterator);
+    }
+    (*env)->DeleteLocalRef (env, list);
+  }
+
+  return ret;
+}
+
+void
+gst_ahc_parameters_supported_preview_fps_range_free (GList * list)
+{
+  g_list_foreach (list, (GFunc) g_free, NULL);
+  g_list_free (list);
+}
+
+GList *
+gst_ahc_parameters_get_supported_preview_sizes (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject list = NULL;
+  GList *ret = NULL;
+
+  list = AHCP_CALL (return NULL, Object, getSupportedPreviewSizes);
+
+  if (list) {
+    jobject iterator = NULL;
+
+    iterator = java_util_list_iterator (env, list);
+    if (iterator) {
+      while (java_util_iterator_has_next (env, iterator)) {
+        jobject jsize = java_util_iterator_next (env, iterator);
+
+        if (jsize) {
+          jint width, height;
+
+          width = (*env)->GetIntField (env, jsize,
+              android_hardware_camera_size.width);
+          height = (*env)->GetIntField (env, jsize,
+              android_hardware_camera_size.height);
+
+          ret = g_list_append (ret, gst_ahc_size_new (width, height));
+          (*env)->DeleteLocalRef (env, jsize);
+        }
+      }
+      (*env)->DeleteLocalRef (env, iterator);
+    }
+    (*env)->DeleteLocalRef (env, list);
+  }
+
+  return ret;
+}
+
+void
+gst_ahc_parameters_supported_preview_sizes_free (GList * list)
+{
+  g_list_foreach (list, (GFunc) gst_ahc_size_free, NULL);
+  g_list_free (list);
+}
+
+GList *
+gst_ahc_parameters_get_supported_scene_modes (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject list = NULL;
+  GList *ret = NULL;
+
+  list = AHCP_CALL (return NULL, Object, getSupportedSceneModes);
+
+  if (list) {
+    jobject iterator = NULL;
+
+    iterator = java_util_list_iterator (env, list);
+    if (iterator) {
+      while (java_util_iterator_has_next (env, iterator)) {
+        jobject str = java_util_iterator_next (env, iterator);
+
+        if (str) {
+          const gchar *value = _scene_mode_to_gchar (env, str);
+
+          ret = g_list_append (ret, (gchar *) value);
+          (*env)->DeleteLocalRef (env, str);
+        }
+      }
+      (*env)->DeleteLocalRef (env, iterator);
+    }
+    (*env)->DeleteLocalRef (env, list);
+  }
+
+  return ret;
+}
+
+void
+gst_ahc_parameters_supported_scene_modes_free (GList * list)
+{
+  g_list_free (list);
+}
+
+GList *
+gst_ahc_parameters_get_supported_white_balance (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject list = NULL;
+  GList *ret = NULL;
+
+  list = AHCP_CALL (return NULL, Object, getSupportedWhiteBalance);
+
+  if (list) {
+    jobject iterator = NULL;
+
+    iterator = java_util_list_iterator (env, list);
+    if (iterator) {
+      while (java_util_iterator_has_next (env, iterator)) {
+        jobject str = java_util_iterator_next (env, iterator);
+
+        if (str) {
+          const gchar *value = _white_balance_to_gchar (env, str);
+
+          ret = g_list_append (ret, (gchar *) value);
+          (*env)->DeleteLocalRef (env, str);
+        }
+      }
+      (*env)->DeleteLocalRef (env, iterator);
+    }
+    (*env)->DeleteLocalRef (env, list);
+  }
+
+  return ret;
+}
+
+void
+gst_ahc_parameters_supported_white_balance_free (GList * list)
+{
+  g_list_free (list);
+}
+
+gfloat
+gst_ahc_parameters_get_vertical_view_angle (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gfloat angle;
+
+  angle = AHCP_CALL (return 0.0, Float, getVerticalViewAngle);
+
+  return angle;
+}
+
+gboolean
+gst_ahc_parameters_get_video_stabilization (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gboolean ret;
+
+  ret = AHCP_CALL (return FALSE, Boolean, getVideoStabilization);
+
+  return ret;
+}
+
+const gchar *
+gst_ahc_parameters_get_white_balance (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  const gchar *ret = NULL;
+  jstring white_balance;
+
+  white_balance = AHCP_CALL (return NULL, Object, getWhiteBalance);
+
+  ret = _white_balance_to_gchar (env, white_balance);
+
+  if (white_balance)
+    (*env)->DeleteLocalRef (env, white_balance);
+
+  return ret;
+}
+
+gint
+gst_ahc_parameters_get_zoom (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gint zoom;
+
+  zoom = AHCP_CALL (return -1, Int, getZoom);
+
+  return zoom;
+}
+
+GList *
+gst_ahc_parameters_get_zoom_ratios (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jobject list = NULL;
+  GList *ret = NULL;
+
+  list = AHCP_CALL (return NULL, Object, getZoomRatios);
+
+  if (list) {
+    jobject iterator = NULL;
+
+    iterator = java_util_list_iterator (env, list);
+    if (iterator) {
+      while (java_util_iterator_has_next (env, iterator)) {
+        jobject integer = java_util_iterator_next (env, iterator);
+
+        if (integer) {
+          jint value = java_lang_integer_int_value (env, integer);
+
+          ret = g_list_append (ret, GINT_TO_POINTER (value));
+          (*env)->DeleteLocalRef (env, integer);
+        }
+      }
+      (*env)->DeleteLocalRef (env, iterator);
+    }
+    (*env)->DeleteLocalRef (env, list);
+  }
+
+  return ret;
+}
+
+void
+gst_ahc_parameters_zoom_ratios_free (GList * list)
+{
+  g_list_free (list);
+}
+
+gboolean
+gst_ahc_parameters_is_smooth_zoom_supported (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gboolean supported;
+
+  supported = AHCP_CALL (return FALSE, Boolean, isSmoothZoomSupported);
+
+  return supported;
+}
+
+gboolean
+gst_ahc_parameters_is_video_stabilization_supported (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gboolean supported;
+
+  supported = AHCP_CALL (return FALSE, Boolean, isVideoStabilizationSupported);
+
+  return supported;
+}
+
+gboolean
+gst_ahc_parameters_is_zoom_supported (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  gboolean supported;
+
+  supported = AHCP_CALL (return FALSE, Boolean, isZoomSupported);
+
+  return supported;
+}
+
+gboolean
+gst_ahc_parameters_set_antibanding (GstAHCParameters * self,
+    const gchar * value)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jstring antibanding;
+
+  antibanding = _antibanding_to_jstring (value);
+  if (!antibanding)
+    return FALSE;
+
+  AHCP_CALL (return FALSE, Void, setAntibanding, antibanding);
+
+  return TRUE;
+}
+
+gboolean
+gst_ahc_parameters_set_color_effect (GstAHCParameters * self,
+    const gchar * value)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jstring color_effect;
+
+  color_effect = _color_effect_to_jstring (value);
+  if (!color_effect)
+    return FALSE;
+
+  AHCP_CALL (return FALSE, Void, setColorEffect, color_effect);
+
+  return TRUE;
+}
+
+gboolean
+gst_ahc_parameters_set_exposure_compensation (GstAHCParameters * self,
+    gint value)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHCP_CALL (return FALSE, Void, setExposureCompensation, value);
+
+  return TRUE;
+}
+
+gboolean
+gst_ahc_parameters_set_flash_mode (GstAHCParameters * self, const gchar * value)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jstring flash_mode;
+
+  flash_mode = _flash_mode_to_jstring (value);
+  if (!flash_mode)
+    return FALSE;
+
+  AHCP_CALL (return FALSE, Void, setFlashMode, flash_mode);
+
+  return TRUE;
+}
+
+gboolean
+gst_ahc_parameters_set_focus_mode (GstAHCParameters * self, const gchar * value)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jstring focus_mode;
+
+  focus_mode = _focus_mode_to_jstring (value);
+  if (!focus_mode)
+    return FALSE;
+
+  AHCP_CALL (return FALSE, Void, setFocusMode, focus_mode);
+
+  return TRUE;
+}
+
+gboolean
+gst_ahc_parameters_set_preview_format (GstAHCParameters * self, gint format)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHCP_CALL (return FALSE, Void, setPreviewFormat, format);
+
+  return TRUE;
+}
+
+gboolean
+gst_ahc_parameters_set_preview_fps_range (GstAHCParameters * self,
+    gint min, gint max)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHCP_CALL (return FALSE, Void, setPreviewFpsRange, min, max);
+
+  return TRUE;
+}
+
+gboolean
+gst_ahc_parameters_set_preview_size (GstAHCParameters * self,
+    gint width, gint height)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHCP_CALL (return FALSE, Void, setPreviewSize, width, height);
+
+  return TRUE;
+}
+
+gboolean
+gst_ahc_parameters_set_scene_mode (GstAHCParameters * self, const gchar * value)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jstring scene_mode;
+
+  scene_mode = _scene_mode_to_jstring (value);
+  if (!scene_mode)
+    return FALSE;
+
+  AHCP_CALL (return FALSE, Void, setSceneMode, scene_mode);
+
+  return TRUE;
+}
+
+
+gboolean
+gst_ahc_parameters_set_video_stabilization (GstAHCParameters * self,
+    gboolean toggle)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHCP_CALL (return FALSE, Void, setVideoStabilization, toggle);
+
+  return TRUE;
+}
+
+gboolean
+gst_ahc_parameters_set_white_balance (GstAHCParameters * self,
+    const gchar * value)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jstring white_balance;
+
+  white_balance = _white_balance_to_jstring (value);
+  if (!white_balance)
+    return FALSE;
+
+  AHCP_CALL (return FALSE, Void, setWhiteBalance, white_balance);
+
+  return TRUE;
+}
+
+gboolean
+gst_ahc_parameters_set_zoom (GstAHCParameters * self, gint value)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  AHCP_CALL (return FALSE, Void, setZoom, value);
+
+  return TRUE;
+}
+
+gboolean
+gst_ahc_parameters_unflatten (GstAHCParameters * self, const gchar * flattened)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+  jstring v_str = NULL;
+  gboolean ret = TRUE;
+
+  v_str = (*env)->NewStringUTF (env, flattened);
+  if (v_str == NULL)
+    return FALSE;
+
+  AHCP_CALL (ret = FALSE, Void, unflatten, v_str);
+
+  (*env)->DeleteLocalRef (env, v_str);
+
+  return ret;
+}
+
+void
+gst_ahc_parameters_free (GstAHCParameters * self)
+{
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  g_return_if_fail (self != NULL);
+  g_return_if_fail (self->object != NULL);
+
+  GST_DEBUG ("freeing parameters %p", self->object);
+
+  (*env)->DeleteGlobalRef (env, self->object);
+  g_slice_free (GstAHCParameters, self);
+}
diff --git a/sys/androidmedia/gst-android-hardware-camera.h b/sys/androidmedia/gst-android-hardware-camera.h
new file mode 100644
index 0000000..44e7842
--- /dev/null
+++ b/sys/androidmedia/gst-android-hardware-camera.h
@@ -0,0 +1,252 @@
+/*
+ * Copyright (C) 2012, Collabora Ltd.
+ * Copyright (C) 2012, Cisco Systems, Inc.
+ *   Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
+ *
+ * Copyright (C) 2015, Collabora Ltd.
+ *   Author: Justin Kim <justin.kim@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
+ *
+ */
+
+#ifndef __GST_ANDROID_HARDWARE_CAMERA_H__
+#define __GST_ANDROID_HARDWARE_CAMERA_H__
+
+#include <gst/gst.h>
+#include <jni.h>
+
+#include "gst-android-graphics-surfacetexture.h"
+#include "gst-android-graphics-imageformat.h"
+
+G_BEGIN_DECLS
+
+typedef struct _GstAHCamera GstAHCamera;
+typedef struct _GstAHCCameraInfo GstAHCCameraInfo;
+typedef struct _GstAHCSize GstAHCSize;
+typedef struct _GstAHCParameters GstAHCParameters;
+
+/* android.hardware.Camera */
+struct _GstAHCamera
+{
+  /* < private > */
+  jobject object;               /* global reference */
+};
+
+/* android.hardware.Camera.CameraInfo */
+struct _GstAHCCameraInfo
+{
+  gint facing;
+  gint orientation;
+};
+extern gint CameraInfo_CAMERA_FACING_BACK;
+extern gint CameraInfo_CAMERA_FACING_FRONT;
+
+/* android.hardware.Camera.Size */
+struct _GstAHCSize
+{
+  gint width;
+  gint height;
+};
+
+/* android.hardware.Camera.Parameters */
+struct _GstAHCParameters
+{
+  /* < private > */
+  jobject object;               /* global reference */
+};
+extern const gchar *Parameters_WHITE_BALANCE_AUTO;
+extern const gchar *Parameters_WHITE_BALANCE_INCANDESCENT;
+extern const gchar *Parameters_WHITE_BALANCE_FLUORESCENT;
+extern const gchar *Parameters_WHITE_BALANCE_WARM_FLUORESCENT;
+extern const gchar *Parameters_WHITE_BALANCE_DAYLIGHT;
+extern const gchar *Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT;
+extern const gchar *Parameters_WHITE_BALANCE_TWILIGHT;
+extern const gchar *Parameters_WHITE_BALANCE_SHADE;
+extern const gchar *Parameters_EFFECT_NONE;
+extern const gchar *Parameters_EFFECT_MONO;
+extern const gchar *Parameters_EFFECT_NEGATIVE;
+extern const gchar *Parameters_EFFECT_SOLARIZE;
+extern const gchar *Parameters_EFFECT_SEPIA;
+extern const gchar *Parameters_EFFECT_POSTERIZE;
+extern const gchar *Parameters_EFFECT_WHITEBOARD;
+extern const gchar *Parameters_EFFECT_BLACKBOARD;
+extern const gchar *Parameters_EFFECT_AQUA;
+extern const gchar *Parameters_ANTIBANDING_AUTO;
+extern const gchar *Parameters_ANTIBANDING_50HZ;
+extern const gchar *Parameters_ANTIBANDING_60HZ;
+extern const gchar *Parameters_ANTIBANDING_OFF;
+extern const gchar *Parameters_FLASH_MODE_OFF;
+extern const gchar *Parameters_FLASH_MODE_AUTO;
+extern const gchar *Parameters_FLASH_MODE_ON;
+extern const gchar *Parameters_FLASH_MODE_RED_EYE;
+extern const gchar *Parameters_FLASH_MODE_TORCH;
+extern const gchar *Parameters_SCENE_MODE_AUTO;
+extern const gchar *Parameters_SCENE_MODE_ACTION;
+extern const gchar *Parameters_SCENE_MODE_PORTRAIT;
+extern const gchar *Parameters_SCENE_MODE_LANDSCAPE;
+extern const gchar *Parameters_SCENE_MODE_NIGHT;
+extern const gchar *Parameters_SCENE_MODE_NIGHT_PORTRAIT;
+extern const gchar *Parameters_SCENE_MODE_THEATRE;
+extern const gchar *Parameters_SCENE_MODE_BEACH;
+extern const gchar *Parameters_SCENE_MODE_SNOW;
+extern const gchar *Parameters_SCENE_MODE_SUNSET;
+extern const gchar *Parameters_SCENE_MODE_STEADYPHOTO;
+extern const gchar *Parameters_SCENE_MODE_FIREWORKS;
+extern const gchar *Parameters_SCENE_MODE_SPORTS;
+extern const gchar *Parameters_SCENE_MODE_PARTY;
+extern const gchar *Parameters_SCENE_MODE_CANDLELIGHT;
+extern const gchar *Parameters_SCENE_MODE_BARCODE;
+extern const gchar *Parameters_FOCUS_MODE_AUTO;
+extern const gchar *Parameters_FOCUS_MODE_INFINITY;
+extern const gchar *Parameters_FOCUS_MODE_MACRO;
+extern const gchar *Parameters_FOCUS_MODE_FIXED;
+extern const gchar *Parameters_FOCUS_MODE_EDOF;
+extern const gchar *Parameters_FOCUS_MODE_CONTINUOUS_VIDEO;
+extern const gchar *Parameters_FOCUS_MODE_CONTINUOUS_PICTURE;
+
+/* android.hardware.Camera.ErrorCallback */
+typedef void (*GstAHCErrorCallback) (gint error, gpointer user_data);
+
+/* android.hardware.Camera.PreviewCallback */
+typedef void (*GstAHCPreviewCallback) (jbyteArray data, gpointer user_data);
+
+/* android.hardware.Camera.AutoFocusCallback */
+typedef void (*GstAHCAutoFocusCallback) (gboolean success, gpointer user_data);
+
+gboolean gst_android_hardware_camera_init (void);
+void gst_android_hardware_camera_deinit (void);
+
+/* android.hardware.Camera */
+void gst_ah_camera_add_callback_buffer (GstAHCamera * self, jbyteArray buffer);
+gboolean gst_ah_camera_auto_focus (GstAHCamera * self,
+    GstAHCAutoFocusCallback cb, gpointer user_data);
+gboolean gst_ah_camera_cancel_auto_focus (GstAHCamera * self);
+gboolean gst_ah_camera_get_camera_info (gint camera_id,
+    GstAHCCameraInfo * camera_info);
+gint gst_ah_camera_get_number_of_cameras (void);
+GstAHCParameters *gst_ah_camera_get_parameters (GstAHCamera * self);
+gboolean gst_ah_camera_lock (GstAHCamera * self);
+GstAHCamera *gst_ah_camera_open (gint camera_id);
+gboolean gst_ah_camera_reconnect (GstAHCamera * self);
+void gst_ah_camera_release (GstAHCamera * self);
+void gst_ah_camera_free (GstAHCamera * self);
+gboolean gst_ah_camera_set_parameters (GstAHCamera * self,
+    GstAHCParameters * params);
+gboolean gst_ah_camera_set_error_callback (GstAHCamera * self,
+    GstAHCErrorCallback cb, gpointer user_data);
+gboolean gst_ah_camera_set_preview_callback_with_buffer (GstAHCamera * self,
+    GstAHCPreviewCallback cb, gpointer user_data);
+void gst_ah_camera_set_preview_texture (GstAHCamera * self,
+    GstAGSurfaceTexture * surfaceTexture);
+gboolean gst_ah_camera_start_preview (GstAHCamera * self);
+gboolean gst_ah_camera_start_smooth_zoom (GstAHCamera * self, gint value);
+gboolean gst_ah_camera_stop_preview (GstAHCamera * self);
+gboolean gst_ah_camera_stop_smooth_zoom (GstAHCamera * self);
+gboolean gst_ah_camera_unlock (GstAHCamera * self);
+
+/* android.hardware.Camera.Size */
+GstAHCSize *gst_ahc_size_new (gint width, gint height);
+void gst_ahc_size_free (GstAHCSize * self);
+
+/* android.hardware.Camera.Parameters */
+gchar *gst_ahc_parameters_flatten (GstAHCParameters * self);
+const gchar *gst_ahc_parameters_get_antibanding (GstAHCParameters * self);
+const gchar *gst_ahc_parameters_get_color_effect (GstAHCParameters * self);
+gint gst_ahc_parameters_get_exposure_compensation (GstAHCParameters * self);
+gfloat gst_ahc_parameters_get_exposure_compensation_step (GstAHCParameters
+    * self);
+const gchar *gst_ahc_parameters_get_flash_mode (GstAHCParameters * self);
+gfloat gst_ahc_parameters_get_focal_length (GstAHCParameters * self);
+const gchar *gst_ahc_parameters_get_focus_mode (GstAHCParameters * self);
+gfloat gst_ahc_parameters_get_horizontal_view_angle (GstAHCParameters * self);
+gint gst_ahc_parameters_get_max_exposure_compensation (GstAHCParameters * self);
+gint gst_ahc_parameters_get_max_zoom (GstAHCParameters * self);
+gint gst_ahc_parameters_get_min_exposure_compensation (GstAHCParameters * self);
+gint gst_ahc_parameters_get_preview_format (GstAHCParameters * self);
+gboolean gst_ahc_parameters_get_preview_fps_range (GstAHCParameters * self,
+    gint * min, gint * max);
+GstAHCSize *gst_ahc_parameters_get_preview_size (GstAHCParameters * self);
+const gchar *gst_ahc_parameters_get_scene_mode (GstAHCParameters * self);
+/* GList <const gchar *> */
+GList *gst_ahc_parameters_get_supported_antibanding (GstAHCParameters * self);
+void gst_ahc_parameters_supported_antibanding_free (GList * list);
+/* GList <const gchar *> */
+GList *gst_ahc_parameters_get_supported_color_effects (GstAHCParameters * self);
+void gst_ahc_parameters_supported_color_effects_free (GList * list);
+/* GList <const gchar *> */
+GList *gst_ahc_parameters_get_supported_flash_modes (GstAHCParameters * self);
+void gst_ahc_parameters_supported_flash_modes_free (GList * list);
+/* GList <const gchar *> */
+GList *gst_ahc_parameters_get_supported_focus_modes (GstAHCParameters * self);
+void gst_ahc_parameters_supported_focus_modes_free (GList * list);
+/* GList <int> */
+GList *gst_ahc_parameters_get_supported_preview_formats (GstAHCParameters
+    * self);
+void gst_ahc_parameters_supported_preview_formats_free (GList * list);
+/* GList <int [2]> */
+GList *gst_ahc_parameters_get_supported_preview_fps_range (GstAHCParameters
+    * self);
+void gst_ahc_parameters_supported_preview_fps_range_free (GList * list);
+/* GList <GstAHCSize *> */
+GList *gst_ahc_parameters_get_supported_preview_sizes (GstAHCParameters * self);
+void gst_ahc_parameters_supported_preview_sizes_free (GList * list);
+/* GList <const gchar *> */
+GList *gst_ahc_parameters_get_supported_scene_modes (GstAHCParameters * self);
+void gst_ahc_parameters_supported_scene_modes_free (GList * list);
+/* GList <const gchar *> */
+GList *gst_ahc_parameters_get_supported_white_balance (GstAHCParameters * self);
+void gst_ahc_parameters_supported_white_balance_free (GList * list);
+gfloat gst_ahc_parameters_get_vertical_view_angle (GstAHCParameters * self);
+gboolean gst_ahc_parameters_get_video_stabilization (GstAHCParameters * self);
+const gchar *gst_ahc_parameters_get_white_balance (GstAHCParameters * self);
+gint gst_ahc_parameters_get_zoom (GstAHCParameters * self);
+/* GList <int> */
+GList *gst_ahc_parameters_get_zoom_ratios (GstAHCParameters * self);
+void gst_ahc_parameters_zoom_ratios_free (GList * list);
+gboolean gst_ahc_parameters_is_smooth_zoom_supported (GstAHCParameters * self);
+gboolean gst_ahc_parameters_is_video_stabilization_supported (
+    GstAHCParameters * self);
+gboolean gst_ahc_parameters_is_zoom_supported (GstAHCParameters * self);
+gboolean gst_ahc_parameters_set_antibanding (GstAHCParameters * self,
+    const gchar * antibanding);
+gboolean gst_ahc_parameters_set_color_effect (GstAHCParameters * self,
+    const gchar * value);
+gboolean gst_ahc_parameters_set_exposure_compensation (GstAHCParameters * self,
+    gint value);
+gboolean gst_ahc_parameters_set_flash_mode (GstAHCParameters * self,
+    const gchar * value);
+gboolean gst_ahc_parameters_set_focus_mode (GstAHCParameters * self,
+    const gchar * value);
+gboolean gst_ahc_parameters_set_preview_format (GstAHCParameters * self,
+    gint format);
+gboolean gst_ahc_parameters_set_preview_fps_range (GstAHCParameters * self,
+    gint min, gint max);
+gboolean gst_ahc_parameters_set_preview_size (GstAHCParameters * self,
+    gint width, gint height);
+gboolean gst_ahc_parameters_set_scene_mode (GstAHCParameters * self,
+    const gchar * value);
+gboolean gst_ahc_parameters_set_white_balance (GstAHCParameters * self,
+    const gchar * value);
+gboolean gst_ahc_parameters_set_video_stabilization (GstAHCParameters * self,
+    gboolean toggle);
+gboolean gst_ahc_parameters_set_zoom (GstAHCParameters * self, gint value);
+gboolean gst_ahc_parameters_unflatten (GstAHCParameters * self,
+    const gchar * flattened);
+void gst_ahc_parameters_free (GstAHCParameters * self);
+
+G_END_DECLS
+
+#endif /* __GST_ANDROID_HARDWARE_CAMERA_H__ */
diff --git a/sys/androidmedia/gstahcsrc.c b/sys/androidmedia/gstahcsrc.c
new file mode 100644
index 0000000..bb87289
--- /dev/null
+++ b/sys/androidmedia/gstahcsrc.c
@@ -0,0 +1,2513 @@
+/* GStreamer android.hardware.Camera Source
+ *
+ * Copyright (C) 2012, Cisco Systems, Inc.
+ *   Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/**
+ * SECTION:element-ahcsrc
+ *
+ * ahcsrc can be used to capture video from android devices. It uses the
+ * android.hardware.Camera Java API to capture from the system's cameras.
+ *
+ * In order for the plugin to get registered, it must be able to find its
+ * Java callbacks class. That class is embedded as a jar file inside the source
+ * element (if properly compiled) and will be written to a temporary directory
+ * so it can be loaded into the virtual machine.
+ * In order for it to work, an environment variable must be set to a writable
+ * directory.
+ * The source will look for the environment variable “TMP” which must contain
+ * the absolute path to a writable directory.
+ * It can be retreived using the following Java code :
+ * |[
+ *   context.getCacheDir().getAbsolutePath();
+ * ]|
+ * Where the @context variable is an object of type android.content.Context
+ * (including its subclasses android.app.Activity or android.app.Application).
+ * Another optional environment variable can be set for pointing to the
+ * optimized dex classes directory. If the environment variable “DEX” is
+ * available, it will be used, otherwise, the directory in the “TMP” environment
+ * variable will be used for the optimized dex directory.
+ * The system dex directory can be obtained using the following Java code :
+ * |[
+ *   context.getDir(“dex”, 0).getAbsolutePath();
+ * ]|
+ *
+ * <note>
+ * Those environment variable must be set before gst_init is called from
+ * the native code.
+ * </note>
+ *
+ * <note>
+ * If the “TMP” environment variable is not available or the directory is not
+ * writable or any other issue happens while trying to load the embedded jar
+ * file, then the source will fallback on trying to load the class directly
+ * from the running application.
+ * The file com/gstreamer/GstAhcCallback.java in the source's directory can be
+ * copied into the Android application so it can be loaded at runtime
+ * as a fallback mechanism.
+ * </note>
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include <gst/video/video.h>
+#include <gst/interfaces/photography.h>
+
+#include "gstjniutils.h"
+
+#include "gstahcsrc.h"
+
+/* GObject */
+static void gst_ahc_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_ahc_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+static void gst_ahc_src_dispose (GObject * object);
+
+/* GstElement */
+static GstStateChangeReturn gst_ahc_src_change_state (GstElement * element,
+    GstStateChange transition);
+
+/* GstBaseSrc */
+static GstCaps *gst_ahc_src_getcaps (GstBaseSrc * src, GstCaps * filter);
+static gboolean gst_ahc_src_setcaps (GstBaseSrc * src, GstCaps * caps);
+static GstCaps *gst_ahc_src_fixate (GstBaseSrc * basesrc, GstCaps * caps);
+static gboolean gst_ahc_src_start (GstBaseSrc * bsrc);
+static gboolean gst_ahc_src_stop (GstBaseSrc * bsrc);
+static gboolean gst_ahc_src_unlock (GstBaseSrc * bsrc);
+static gboolean gst_ahc_src_unlock_stop (GstBaseSrc * bsrc);
+static GstFlowReturn gst_ahc_src_create (GstPushSrc * src, GstBuffer ** buffer);
+static gboolean gst_ahc_src_query (GstBaseSrc * bsrc, GstQuery * query);
+
+/* GstPhotography  */
+static void gst_ahc_src_photography_init (gpointer g_iface,
+    gpointer iface_data);
+static gboolean gst_ahc_src_get_ev_compensation (GstPhotography * photo,
+    gfloat * ev_comp);
+static gboolean _white_balance_to_enum (const gchar * white_balance,
+    GstPhotographyWhiteBalanceMode * mode);
+static gboolean gst_ahc_src_get_white_balance_mode (GstPhotography * photo,
+    GstPhotographyWhiteBalanceMode * wb_mode);
+static gboolean _color_effects_to_enum (const gchar * color_effect,
+    GstPhotographyColorToneMode * mode);
+static gboolean gst_ahc_src_get_colour_tone_mode (GstPhotography * photo,
+    GstPhotographyColorToneMode * tone_mode);
+static gboolean _scene_modes_to_enum (const gchar * scene,
+    GstPhotographySceneMode * mode);
+static gboolean gst_ahc_src_get_scene_mode (GstPhotography * photo,
+    GstPhotographySceneMode * scene_mode);
+static gboolean _flash_modes_to_enum (const gchar * flash,
+    GstPhotographyFlashMode * mode);
+static gboolean gst_ahc_src_get_flash_mode (GstPhotography * photo,
+    GstPhotographyFlashMode * flash_mode);
+static gboolean gst_ahc_src_get_zoom (GstPhotography * photo, gfloat * zoom);
+static gboolean _antibanding_to_enum (const gchar * antibanding,
+    GstPhotographyFlickerReductionMode * mode);
+static gboolean gst_ahc_src_get_flicker_mode (GstPhotography * photo,
+    GstPhotographyFlickerReductionMode * flicker_mode);
+static gboolean _focus_modes_to_enum (const gchar * focus,
+    GstPhotographyFocusMode * mode);
+static gboolean gst_ahc_src_get_focus_mode (GstPhotography * photo,
+    GstPhotographyFocusMode * focus_mode);
+
+static gboolean gst_ahc_src_set_ev_compensation (GstPhotography * photo,
+    gfloat ev_comp);
+static gboolean gst_ahc_src_set_white_balance_mode (GstPhotography * photo,
+    GstPhotographyWhiteBalanceMode wb_mode);
+static gboolean gst_ahc_src_set_colour_tone_mode (GstPhotography * photo,
+    GstPhotographyColorToneMode tone_mode);
+static gboolean gst_ahc_src_set_scene_mode (GstPhotography * photo,
+    GstPhotographySceneMode scene_mode);
+static gboolean gst_ahc_src_set_flash_mode (GstPhotography * photo,
+    GstPhotographyFlashMode flash_mode);
+static gboolean gst_ahc_src_set_zoom (GstPhotography * photo, gfloat zoom);
+static gboolean gst_ahc_src_set_flicker_mode (GstPhotography * photo,
+    GstPhotographyFlickerReductionMode flicker_mode);
+static gboolean gst_ahc_src_set_focus_mode (GstPhotography * photo,
+    GstPhotographyFocusMode focus_mode);
+
+static GstPhotographyCaps gst_ahc_src_get_capabilities (GstPhotography * photo);
+static void gst_ahc_src_set_autofocus (GstPhotography * photo, gboolean on);
+
+/* GstAHCSrc */
+static void gst_ahc_src_close (GstAHCSrc * self);
+static void gst_ahc_src_on_preview_frame (jbyteArray data, gpointer user_data);
+static void gst_ahc_src_on_error (gint error, gpointer user_data);
+static void gst_ahc_src_on_auto_focus (gboolean success, gpointer user_data);
+
+#define NUM_CALLBACK_BUFFERS 5
+
+#define GST_AHC_SRC_CAPS_STR                                    \
+  GST_VIDEO_CAPS_MAKE_WITH_FEATURES("ANY", " { YV12, YUY2, NV21, NV16, RGB16 }")
+
+static GstStaticPadTemplate gst_ahc_src_pad_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+    GST_PAD_SRC,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS (GST_AHC_SRC_CAPS_STR));
+
+GST_DEBUG_CATEGORY_STATIC (gst_ahc_src_debug);
+#define GST_CAT_DEFAULT gst_ahc_src_debug
+
+#define parent_class gst_ahc_src_parent_class
+
+enum
+{
+  PROP_0,
+  PROP_DEVICE,
+  PROP_DEVICE_NAME,
+  PROP_DEVICE_FACING,
+  PROP_DEVICE_ORIENTATION,
+  PROP_FOCAL_LENGTH,
+  PROP_HORIZONTAL_VIEW_ANGLE,
+  PROP_VERTICAL_VIEW_ANGLE,
+  PROP_VIDEO_STABILIZATION,
+  PROP_WB_MODE,
+  PROP_COLOUR_TONE,
+  PROP_SCENE_MODE,
+  PROP_FLASH_MODE,
+  PROP_NOISE_REDUCTION,
+  PROP_CAPABILITIES,
+  PROP_EV_COMP,
+  PROP_ISO_SPEED,
+  PROP_APERTURE,
+  PROP_EXPOSURE_MODE,
+  PROP_IMAGE_CAPTURE_SUPPORTED_CAPS,
+  PROP_IMAGE_PREVIEW_SUPPORTED_CAPS,
+  PROP_FLICKER_MODE,
+  PROP_FOCUS_MODE,
+  PROP_ZOOM,
+  PROP_SMOOTH_ZOOM,
+  PROP_WHITE_POINT,
+  PROP_MIN_EXPOSURE_TIME,
+  PROP_MAX_EXPOSURE_TIME,
+  PROP_LENS_FOCUS,
+  PROP_EXPOSURE_TIME,
+  PROP_COLOR_TEMPERATURE,
+  PROP_ANALOG_GAIN,
+  PROP_LAST
+};
+
+static GParamSpec *properties[PROP_LAST];
+
+#define DEFAULT_DEVICE "0"
+
+G_DEFINE_TYPE_WITH_CODE (GstAHCSrc, gst_ahc_src, GST_TYPE_PUSH_SRC,
+    G_IMPLEMENT_INTERFACE (GST_TYPE_PHOTOGRAPHY, gst_ahc_src_photography_init));
+
+#define CAMERA_FACING_BACK 0
+#define CAMERA_FACING_FRONT 1
+
+static GType
+gst_ahc_src_facing_get_type (void)
+{
+  static GType type = 0;
+  static const GEnumValue types[] = {
+    {CAMERA_FACING_BACK, "Back", "back"},
+    {CAMERA_FACING_FRONT, "Front", "front"},
+    {0, NULL, NULL}
+  };
+
+  if (!type) {
+    type = g_enum_register_static ("GstAHCSrcFacing", types);
+  }
+  return type;
+}
+
+#define GST_AHC_SRC_FACING_TYPE (gst_ahc_src_facing_get_type())
+
+static void
+gst_ahc_src_photography_init (gpointer g_iface, gpointer iface_data)
+{
+  GstPhotographyInterface *iface = g_iface;
+
+  iface->get_ev_compensation = gst_ahc_src_get_ev_compensation;
+  iface->get_white_balance_mode = gst_ahc_src_get_white_balance_mode;
+  iface->get_color_tone_mode = gst_ahc_src_get_colour_tone_mode;
+  iface->get_scene_mode = gst_ahc_src_get_scene_mode;
+  iface->get_flash_mode = gst_ahc_src_get_flash_mode;
+  iface->get_zoom = gst_ahc_src_get_zoom;
+  iface->get_flicker_mode = gst_ahc_src_get_flicker_mode;
+  iface->get_focus_mode = gst_ahc_src_get_focus_mode;
+
+  iface->set_ev_compensation = gst_ahc_src_set_ev_compensation;
+  iface->set_white_balance_mode = gst_ahc_src_set_white_balance_mode;
+  iface->set_color_tone_mode = gst_ahc_src_set_colour_tone_mode;
+  iface->set_scene_mode = gst_ahc_src_set_scene_mode;
+  iface->set_flash_mode = gst_ahc_src_set_flash_mode;
+  iface->set_zoom = gst_ahc_src_set_zoom;
+  iface->set_flicker_mode = gst_ahc_src_set_flicker_mode;
+  iface->set_focus_mode = gst_ahc_src_set_focus_mode;
+
+  iface->get_capabilities = gst_ahc_src_get_capabilities;
+  iface->set_autofocus = gst_ahc_src_set_autofocus;
+}
+
+static void
+gst_ahc_src_class_init (GstAHCSrcClass * klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+  GstPushSrcClass *gstpushsrc_class = GST_PUSH_SRC_CLASS (klass);
+  GstBaseSrcClass *gstbasesrc_class = GST_BASE_SRC_CLASS (klass);
+
+  gobject_class->set_property = gst_ahc_src_set_property;
+  gobject_class->get_property = gst_ahc_src_get_property;
+  gobject_class->dispose = gst_ahc_src_dispose;
+
+  element_class->change_state = gst_ahc_src_change_state;
+
+  gstbasesrc_class->get_caps = gst_ahc_src_getcaps;
+  gstbasesrc_class->set_caps = gst_ahc_src_setcaps;
+  gstbasesrc_class->fixate = gst_ahc_src_fixate;
+  gstbasesrc_class->start = gst_ahc_src_start;
+  gstbasesrc_class->stop = gst_ahc_src_stop;
+  gstbasesrc_class->unlock = gst_ahc_src_unlock;
+  gstbasesrc_class->unlock_stop = gst_ahc_src_unlock_stop;
+  gstbasesrc_class->query = gst_ahc_src_query;
+
+  gstpushsrc_class->create = gst_ahc_src_create;
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&gst_ahc_src_pad_template));
+
+  /**
+   * GstAHCSrc:device:
+   *
+   * The Device ID of the camera to capture from
+   */
+  properties[PROP_DEVICE] = g_param_spec_string ("device",
+      "Device", "Device ID", DEFAULT_DEVICE,
+      G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_DEVICE,
+      properties[PROP_DEVICE]);
+
+  /**
+   * GstAHCSrc:device-name:
+   *
+   * A user-friendly name for the camera device
+   */
+  properties[PROP_DEVICE_NAME] = g_param_spec_string ("device-name",
+      "Device name", "Device name", NULL,
+      G_PARAM_READABLE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_DEVICE_NAME,
+      properties[PROP_DEVICE_NAME]);
+
+  /**
+   * GstAHCSrc:device-orientation:
+   *
+   * The orientation of the currently set camera @device.
+   * The value is the angle that the camera image needs to be rotated clockwise
+   * so it shows correctly on the display in its natural orientation.
+   * It should be 0, 90, 180, or 270.
+   */
+  properties[PROP_DEVICE_ORIENTATION] = g_param_spec_int ("device-orientation",
+      "Device orientation", "The orientation of the camera image",
+      0, 360, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_DEVICE_ORIENTATION,
+      properties[PROP_DEVICE_ORIENTATION]);
+
+  /**
+   * GstAHCSrc:device-facing:
+   *
+   * The direction that the currently select camera @device faces.
+   *
+   * A value of 0 means the camera is facing the opposite direction as the
+   * screen while a value of 1 means the camera is facing the same direction
+   * as the screen.
+   */
+  properties[PROP_DEVICE_FACING] = g_param_spec_enum ("device-facing",
+      "Device facing", "The direction that the camera faces",
+      GST_AHC_SRC_FACING_TYPE, CAMERA_FACING_BACK,
+      G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_DEVICE_FACING,
+      properties[PROP_DEVICE_FACING]);
+
+  /**
+   * GstAHCSrc:focal-length:
+   *
+   * Gets the focal length (in millimeter) of the camera.
+   */
+  properties[PROP_FOCAL_LENGTH] = g_param_spec_float ("focal-length",
+      "Focal length", "Gets the focal length (in millimeter) of the camera",
+      -G_MAXFLOAT, G_MAXFLOAT, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_FOCAL_LENGTH,
+      properties[PROP_FOCAL_LENGTH]);
+
+  /**
+   * GstAHCSrc:horizontal-view-angle:
+   *
+   * Gets the horizontal angle of view in degrees.
+   */
+  properties[PROP_HORIZONTAL_VIEW_ANGLE] =
+      g_param_spec_float ("horizontal-view-angle", "Horizontal view angle",
+      "Gets the horizontal angle of view in degrees",
+      -G_MAXFLOAT, G_MAXFLOAT, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_HORIZONTAL_VIEW_ANGLE,
+      properties[PROP_HORIZONTAL_VIEW_ANGLE]);
+
+  /**
+   * GstAHCSrc:vertical-view-angle:
+   *
+   * Gets the vertical angle of view in degrees.
+   */
+  properties[PROP_VERTICAL_VIEW_ANGLE] =
+      g_param_spec_float ("vertical-view-angle", "Vertical view angle",
+      "Gets the vertical angle of view in degrees",
+      -G_MAXFLOAT, G_MAXFLOAT, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_VERTICAL_VIEW_ANGLE,
+      properties[PROP_VERTICAL_VIEW_ANGLE]);
+
+  /**
+   * GstAHCSrc:video-stabilizatio:
+   *
+   * Video stabilization reduces the shaking due to the motion of the camera.
+   */
+  properties[PROP_VIDEO_STABILIZATION] =
+      g_param_spec_boolean ("video-stabilization", "Video stabilization",
+      "Video stabilization reduces the shaking due to the motion of the camera",
+      FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_VIDEO_STABILIZATION,
+      properties[PROP_VIDEO_STABILIZATION]);
+
+  /**
+   * GstAHCSrc:smooth-zoom:
+   *
+   * If enabled, then smooth zooming will be used when the @zoom property is
+   * changed. In that case, the @zoom property can be queried to know the
+   * current zoom level while the smooth zoom is in progress.
+   */
+  properties[PROP_SMOOTH_ZOOM] = g_param_spec_boolean ("smooth-zoom",
+      "Smooth Zoom", "Use smooth zoom when available",
+      FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_SMOOTH_ZOOM,
+      properties[PROP_SMOOTH_ZOOM]);
+
+  /* Override GstPhotography properties */
+  g_object_class_override_property (gobject_class, PROP_WB_MODE,
+      GST_PHOTOGRAPHY_PROP_WB_MODE);
+  properties[PROP_WB_MODE] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_WB_MODE);
+
+  g_object_class_override_property (gobject_class, PROP_COLOUR_TONE,
+      GST_PHOTOGRAPHY_PROP_COLOR_TONE);
+  properties[PROP_COLOUR_TONE] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_COLOR_TONE);
+
+  g_object_class_override_property (gobject_class, PROP_SCENE_MODE,
+      GST_PHOTOGRAPHY_PROP_SCENE_MODE);
+  properties[PROP_SCENE_MODE] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_SCENE_MODE);
+
+  g_object_class_override_property (gobject_class, PROP_FLASH_MODE,
+      GST_PHOTOGRAPHY_PROP_FLASH_MODE);
+  properties[PROP_FLASH_MODE] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_FLASH_MODE);
+
+  g_object_class_override_property (gobject_class, PROP_NOISE_REDUCTION,
+      GST_PHOTOGRAPHY_PROP_NOISE_REDUCTION);
+  properties[PROP_NOISE_REDUCTION] =
+      g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_NOISE_REDUCTION);
+
+  g_object_class_override_property (gobject_class, PROP_CAPABILITIES,
+      GST_PHOTOGRAPHY_PROP_CAPABILITIES);
+  properties[PROP_CAPABILITIES] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_CAPABILITIES);
+
+  g_object_class_override_property (gobject_class, PROP_EV_COMP,
+      GST_PHOTOGRAPHY_PROP_EV_COMP);
+  properties[PROP_EV_COMP] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_EV_COMP);
+
+  g_object_class_override_property (gobject_class, PROP_ISO_SPEED,
+      GST_PHOTOGRAPHY_PROP_ISO_SPEED);
+  properties[PROP_ISO_SPEED] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_ISO_SPEED);
+
+  g_object_class_override_property (gobject_class, PROP_APERTURE,
+      GST_PHOTOGRAPHY_PROP_APERTURE);
+  properties[PROP_APERTURE] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_APERTURE);
+
+#if 0
+  g_object_class_override_property (gobject_class, PROP_EXPOSURE_MODE,
+      GST_PHOTOGRAPHY_PROP_EXPOSURE_MODE);
+  properties[PROP_EXPOSURE] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_EXPOSURE_MODE);
+#endif
+
+  g_object_class_override_property (gobject_class,
+      PROP_IMAGE_CAPTURE_SUPPORTED_CAPS,
+      GST_PHOTOGRAPHY_PROP_IMAGE_CAPTURE_SUPPORTED_CAPS);
+  properties[PROP_IMAGE_CAPTURE_SUPPORTED_CAPS] =
+      g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_IMAGE_CAPTURE_SUPPORTED_CAPS);
+
+  g_object_class_override_property (gobject_class,
+      PROP_IMAGE_PREVIEW_SUPPORTED_CAPS,
+      GST_PHOTOGRAPHY_PROP_IMAGE_PREVIEW_SUPPORTED_CAPS);
+  properties[PROP_IMAGE_PREVIEW_SUPPORTED_CAPS] =
+      g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_IMAGE_PREVIEW_SUPPORTED_CAPS);
+
+  g_object_class_override_property (gobject_class, PROP_FLICKER_MODE,
+      GST_PHOTOGRAPHY_PROP_FLICKER_MODE);
+  properties[PROP_FLICKER_MODE] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_FLICKER_MODE);
+
+  g_object_class_override_property (gobject_class, PROP_FOCUS_MODE,
+      GST_PHOTOGRAPHY_PROP_FOCUS_MODE);
+  properties[PROP_FOCUS_MODE] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_FOCUS_MODE);
+
+  g_object_class_override_property (gobject_class, PROP_ZOOM,
+      GST_PHOTOGRAPHY_PROP_ZOOM);
+  properties[PROP_ZOOM] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_ZOOM);
+
+  g_object_class_override_property (gobject_class, PROP_WHITE_POINT,
+      GST_PHOTOGRAPHY_PROP_WHITE_POINT);
+  properties[PROP_WHITE_POINT] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_WHITE_POINT);
+
+  g_object_class_override_property (gobject_class, PROP_MIN_EXPOSURE_TIME,
+      GST_PHOTOGRAPHY_PROP_MIN_EXPOSURE_TIME);
+  properties[PROP_MIN_EXPOSURE_TIME] =
+      g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_MIN_EXPOSURE_TIME);
+
+  g_object_class_override_property (gobject_class, PROP_MAX_EXPOSURE_TIME,
+      GST_PHOTOGRAPHY_PROP_MAX_EXPOSURE_TIME);
+  properties[PROP_MAX_EXPOSURE_TIME] =
+      g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_MAX_EXPOSURE_TIME);
+
+  g_object_class_override_property (gobject_class, PROP_LENS_FOCUS,
+      GST_PHOTOGRAPHY_PROP_LENS_FOCUS);
+  properties[PROP_LENS_FOCUS] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_LENS_FOCUS);
+
+  g_object_class_override_property (gobject_class, PROP_EXPOSURE_TIME,
+      GST_PHOTOGRAPHY_PROP_EXPOSURE_TIME);
+  properties[PROP_EXPOSURE_TIME] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_EXPOSURE_TIME);
+
+  g_object_class_override_property (gobject_class, PROP_COLOR_TEMPERATURE,
+      GST_PHOTOGRAPHY_PROP_COLOR_TEMPERATURE);
+  properties[PROP_COLOR_TEMPERATURE] =
+      g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_COLOR_TEMPERATURE);
+
+  g_object_class_override_property (gobject_class, PROP_ANALOG_GAIN,
+      GST_PHOTOGRAPHY_PROP_ANALOG_GAIN);
+  properties[PROP_ANALOG_GAIN] = g_object_class_find_property (gobject_class,
+      GST_PHOTOGRAPHY_PROP_ANALOG_GAIN);
+
+
+
+  klass->probe_properties = NULL;
+
+  gst_element_class_set_static_metadata (element_class,
+      "Android Camera Source",
+      "Source/Video",
+      "Reads frames from android.hardware.Camera class into buffers",
+      "Youness Alaoui <youness.alaoui@collabora.co.uk>");
+
+  GST_DEBUG_CATEGORY_INIT (gst_ahc_src_debug, "ahcsrc", 0,
+      "android.hardware.Camera source element");
+}
+
+static gboolean
+_data_queue_check_full (GstDataQueue * queue, guint visible,
+    guint bytes, guint64 time, gpointer checkdata)
+{
+  return FALSE;
+}
+
+static void
+gst_ahc_src_init (GstAHCSrc * self)
+{
+  gst_base_src_set_live (GST_BASE_SRC (self), TRUE);
+  gst_base_src_set_format (GST_BASE_SRC (self), GST_FORMAT_TIME);
+  gst_base_src_set_do_timestamp (GST_BASE_SRC (self), FALSE);
+
+  self->camera = NULL;
+  self->texture = NULL;
+  self->data = NULL;
+  self->queue = gst_data_queue_new (_data_queue_check_full, NULL, NULL, NULL);
+  self->start = FALSE;
+  self->previous_ts = GST_CLOCK_TIME_NONE;
+
+  g_mutex_init (&self->mutex);
+}
+
+static void
+gst_ahc_src_dispose (GObject * object)
+{
+  GstAHCSrc *self = GST_AHC_SRC (object);
+
+  if (self->queue)
+    g_object_unref (self->queue);
+  self->queue = NULL;
+
+  g_mutex_clear (&self->mutex);
+
+  G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+gst_ahc_src_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstAHCSrc *self = GST_AHC_SRC (object);
+
+  GST_DEBUG_OBJECT (self, "set props %d", prop_id);
+
+  switch (prop_id) {
+    case PROP_DEVICE:{
+      const gchar *dev = g_value_get_string (value);
+      gchar *endptr = NULL;
+      guint64 device;
+
+      device = g_ascii_strtoll (dev, &endptr, 10);
+      if (endptr != dev && endptr[0] == 0 && device < G_MAXINT)
+        self->device = (gint) device;
+    }
+      break;
+    case PROP_VIDEO_STABILIZATION:
+      if (self->camera) {
+        GstAHCParameters *params;
+
+        params = gst_ah_camera_get_parameters (self->camera);
+        if (params) {
+          gst_ahc_parameters_set_video_stabilization (params,
+              g_value_get_boolean (value));
+          gst_ah_camera_set_parameters (self->camera, params);
+          gst_ahc_parameters_free (params);
+        }
+      }
+      break;
+    case PROP_SMOOTH_ZOOM:
+      self->smooth_zoom = g_value_get_boolean (value);
+      break;
+    case PROP_WB_MODE:{
+      GstPhotographyWhiteBalanceMode wb = g_value_get_enum (value);
+
+      gst_ahc_src_set_white_balance_mode (GST_PHOTOGRAPHY (self), wb);
+    }
+      break;
+    case PROP_COLOUR_TONE:{
+      GstPhotographyColorToneMode tone = g_value_get_enum (value);
+
+      gst_ahc_src_set_colour_tone_mode (GST_PHOTOGRAPHY (self), tone);
+    }
+      break;
+    case PROP_SCENE_MODE:{
+      GstPhotographySceneMode scene = g_value_get_enum (value);
+
+      gst_ahc_src_set_scene_mode (GST_PHOTOGRAPHY (self), scene);
+    }
+      break;
+    case PROP_FLASH_MODE:{
+      GstPhotographyFlashMode flash = g_value_get_enum (value);
+
+      gst_ahc_src_set_flash_mode (GST_PHOTOGRAPHY (self), flash);
+    }
+      break;
+    case PROP_EV_COMP:{
+      gfloat ev = g_value_get_float (value);
+
+      gst_ahc_src_set_ev_compensation (GST_PHOTOGRAPHY (self), ev);
+    }
+      break;
+    case PROP_FLICKER_MODE:{
+      GstPhotographyFlickerReductionMode flicker = g_value_get_enum (value);
+
+      gst_ahc_src_set_flicker_mode (GST_PHOTOGRAPHY (self), flicker);
+    }
+      break;
+    case PROP_FOCUS_MODE:{
+      GstPhotographyFocusMode focus = g_value_get_enum (value);
+
+      gst_ahc_src_set_focus_mode (GST_PHOTOGRAPHY (self), focus);
+    }
+      break;
+    case PROP_ZOOM:{
+      gfloat zoom = g_value_get_float (value);
+
+      gst_ahc_src_set_zoom (GST_PHOTOGRAPHY (self), zoom);
+    }
+      break;
+    case PROP_NOISE_REDUCTION:
+    case PROP_ISO_SPEED:
+    case PROP_APERTURE:
+    case PROP_EXPOSURE_MODE:
+    case PROP_IMAGE_CAPTURE_SUPPORTED_CAPS:
+    case PROP_IMAGE_PREVIEW_SUPPORTED_CAPS:
+    case PROP_WHITE_POINT:
+    case PROP_MIN_EXPOSURE_TIME:
+    case PROP_MAX_EXPOSURE_TIME:
+    case PROP_LENS_FOCUS:
+    case PROP_EXPOSURE_TIME:
+    case PROP_COLOR_TEMPERATURE:
+    case PROP_ANALOG_GAIN:
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_ahc_src_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstAHCSrc *self = GST_AHC_SRC (object);
+  (void) self;
+
+  switch (prop_id) {
+    case PROP_DEVICE:{
+      gchar *dev = g_strdup_printf ("%d", self->device);
+
+      g_value_take_string (value, dev);
+    }
+      break;
+    case PROP_DEVICE_NAME:{
+      GstAHCCameraInfo info;
+      gchar *dev;
+
+      if (gst_ah_camera_get_camera_info (self->device, &info))
+        dev = g_strdup_printf ("#%d %s", self->device,
+            info.facing == CameraInfo_CAMERA_FACING_BACK ? "Back" : "Front");
+      else
+        dev = g_strdup_printf ("#%d", self->device);
+
+      g_value_take_string (value, dev);
+    }
+      break;
+    case PROP_DEVICE_FACING:{
+      GstAHCCameraInfo info;
+
+      if (gst_ah_camera_get_camera_info (self->device, &info))
+        g_value_set_enum (value, info.facing == CameraInfo_CAMERA_FACING_BACK ?
+            CAMERA_FACING_BACK : CAMERA_FACING_FRONT);
+      else
+        g_value_set_enum (value, CAMERA_FACING_BACK);
+    }
+      break;
+    case PROP_DEVICE_ORIENTATION:{
+      GstAHCCameraInfo info;
+
+      if (gst_ah_camera_get_camera_info (self->device, &info))
+        g_value_set_int (value, info.orientation);
+      else
+        g_value_set_int (value, 0);
+    }
+      break;
+    case PROP_FOCAL_LENGTH:
+      if (self->camera) {
+        GstAHCParameters *params;
+
+        params = gst_ah_camera_get_parameters (self->camera);
+        if (params) {
+          g_value_set_float (value,
+              gst_ahc_parameters_get_focal_length (params));
+          gst_ahc_parameters_free (params);
+        }
+      }
+      break;
+    case PROP_HORIZONTAL_VIEW_ANGLE:
+      if (self->camera) {
+        GstAHCParameters *params;
+
+        params = gst_ah_camera_get_parameters (self->camera);
+        if (params) {
+          g_value_set_float (value,
+              gst_ahc_parameters_get_horizontal_view_angle (params));
+          gst_ahc_parameters_free (params);
+        }
+      }
+      break;
+    case PROP_VERTICAL_VIEW_ANGLE:
+      if (self->camera) {
+        GstAHCParameters *params;
+
+        params = gst_ah_camera_get_parameters (self->camera);
+        if (params) {
+          g_value_set_float (value,
+              gst_ahc_parameters_get_vertical_view_angle (params));
+          gst_ahc_parameters_free (params);
+        }
+      }
+      break;
+    case PROP_VIDEO_STABILIZATION:
+      if (self->camera) {
+        GstAHCParameters *params;
+
+        params = gst_ah_camera_get_parameters (self->camera);
+        if (params) {
+          g_value_set_boolean (value,
+              gst_ahc_parameters_get_video_stabilization (params));
+          gst_ahc_parameters_free (params);
+        }
+      }
+      break;
+    case PROP_SMOOTH_ZOOM:
+      g_value_set_boolean (value, self->smooth_zoom);
+      break;
+    case PROP_WB_MODE:{
+      GstPhotographyWhiteBalanceMode wb;
+
+      if (gst_ahc_src_get_white_balance_mode (GST_PHOTOGRAPHY (self), &wb))
+        g_value_set_enum (value, wb);
+    }
+      break;
+    case PROP_COLOUR_TONE:{
+      GstPhotographyColorToneMode tone;
+
+      if (gst_ahc_src_get_colour_tone_mode (GST_PHOTOGRAPHY (self), &tone))
+        g_value_set_enum (value, tone);
+    }
+      break;
+    case PROP_SCENE_MODE:{
+      GstPhotographySceneMode scene;
+
+      if (gst_ahc_src_get_scene_mode (GST_PHOTOGRAPHY (self), &scene))
+        g_value_set_enum (value, scene);
+    }
+      break;
+    case PROP_FLASH_MODE:{
+      GstPhotographyFlashMode flash;
+
+      if (gst_ahc_src_get_flash_mode (GST_PHOTOGRAPHY (self), &flash))
+        g_value_set_enum (value, flash);
+    }
+      break;
+    case PROP_CAPABILITIES:{
+      GstPhotographyCaps caps;
+
+      caps = gst_ahc_src_get_capabilities (GST_PHOTOGRAPHY (self));
+      g_value_set_ulong (value, caps);
+    }
+      break;
+    case PROP_EV_COMP:{
+      gfloat ev;
+
+      if (gst_ahc_src_get_ev_compensation (GST_PHOTOGRAPHY (self), &ev))
+        g_value_set_float (value, ev);
+    }
+      break;
+    case PROP_FLICKER_MODE:{
+      GstPhotographyFlickerReductionMode flicker;
+
+      if (gst_ahc_src_get_flicker_mode (GST_PHOTOGRAPHY (self), &flicker))
+        g_value_set_enum (value, flicker);
+    }
+      break;
+    case PROP_FOCUS_MODE:{
+      GstPhotographyFocusMode focus;
+
+      if (gst_ahc_src_get_focus_mode (GST_PHOTOGRAPHY (self), &focus))
+        g_value_set_enum (value, focus);
+    }
+      break;
+    case PROP_ZOOM:{
+      gfloat zoom;
+
+      if (gst_ahc_src_get_zoom (GST_PHOTOGRAPHY (self), &zoom))
+        g_value_set_float (value, zoom);
+    }
+      break;
+    case PROP_IMAGE_CAPTURE_SUPPORTED_CAPS:
+    case PROP_IMAGE_PREVIEW_SUPPORTED_CAPS:
+    case PROP_NOISE_REDUCTION:
+    case PROP_ISO_SPEED:
+    case PROP_APERTURE:
+    case PROP_EXPOSURE_MODE:
+    case PROP_WHITE_POINT:
+    case PROP_MIN_EXPOSURE_TIME:
+    case PROP_MAX_EXPOSURE_TIME:
+    case PROP_LENS_FOCUS:
+    case PROP_EXPOSURE_TIME:
+    case PROP_COLOR_TEMPERATURE:
+    case PROP_ANALOG_GAIN:
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+#if 0
+static const GList *
+gst_ahc_src_probe_get_properties (GstPropertyProbe * probe)
+{
+  GstAHCSrcClass *ahc_class = GST_AHC_SRC_CLASS (probe);
+  GList **list = &ahc_class->probe_properties;
+
+  if (!*list) {
+    *list = g_list_append (*list, properties[PROP_DEVICE]);
+    *list = g_list_append (*list, properties[PROP_EV_COMP]);
+    *list = g_list_append (*list, properties[PROP_ZOOM]);
+    *list = g_list_append (*list, properties[PROP_WB_MODE]);
+    *list = g_list_append (*list, properties[PROP_COLOUR_TONE]);
+    *list = g_list_append (*list, properties[PROP_FLASH_MODE]);
+    *list = g_list_append (*list, properties[PROP_FOCUS_MODE]);
+    *list = g_list_append (*list, properties[PROP_SCENE_MODE]);
+    *list = g_list_append (*list, properties[PROP_FLICKER_MODE]);
+  }
+
+  return *list;
+}
+
+#define PROBE_GET_ENUM_VALUES(name, type, struct_name)                  \
+  if (self->camera) {                                                   \
+    GstAHCParameters *params;                                           \
+                                                                        \
+    params = gst_ah_camera_get_parameters (self->camera);               \
+    if (params) {                                                       \
+      GList *list = gst_ahc_parameters_get_supported_##name (params);   \
+                                                                        \
+      if (list) {                                                       \
+          GValue value = { 0 };                                         \
+          GList *i;                                                     \
+                                                                        \
+          array = g_value_array_new (g_list_length (list));             \
+          g_value_init (&value, type);                                  \
+          for (i = list; i; i = i->next) {                              \
+            struct_name mode;                                           \
+            const gchar *name = i->data;                                \
+                                                                        \
+            if (_##name##_to_enum (name, &mode)) {                      \
+              g_value_set_enum (&value, mode);                          \
+              g_value_array_append (array, &value);                     \
+            }                                                           \
+          }                                                             \
+          g_value_unset (&value);                                       \
+      }                                                                 \
+                                                                        \
+      gst_ahc_parameters_supported_##name##_free (list);                \
+      gst_ahc_parameters_free (params);                                 \
+    }                                                                   \
+  }
+
+
+static GValueArray *
+gst_ahc_src_probe_get_values (GstPropertyProbe * probe,
+    guint prop_id, const GParamSpec * pspec)
+{
+  GstAHCSrc *self = GST_AHC_SRC (probe);
+  GValueArray *array = NULL;
+
+  /* g_object_class_find_property returns overriden property with
+   * param_id == 0, so we can't switch/case the prop_id and
+   * we need to check the pspec instead */
+  if (pspec == properties[PROP_DEVICE]) {
+    GValue value = { 0 };
+    gint num_cams = gst_ah_camera_get_number_of_cameras ();
+    gint i;
+
+    array = g_value_array_new (num_cams);
+    g_value_init (&value, G_TYPE_STRING);
+    for (i = 0; i < num_cams; i++) {
+      g_value_take_string (&value, g_strdup_printf ("%d", i));
+      g_value_array_append (array, &value);
+    }
+    g_value_unset (&value);
+  } else if (pspec == properties[PROP_EV_COMP]) {
+    if (self->camera) {
+      GstAHCParameters *params;
+
+      params = gst_ah_camera_get_parameters (self->camera);
+      if (params) {
+        gint min, max;
+        gfloat step;
+
+        min = gst_ahc_parameters_get_min_exposure_compensation (params);
+        max = gst_ahc_parameters_get_max_exposure_compensation (params);
+        step = gst_ahc_parameters_get_exposure_compensation_step (params);
+
+        if (step != 0.0 && min != max) {
+          GValue value = { 0 };
+          gint i;
+
+          /* Min and Max are inclusive */
+          array = g_value_array_new (max - min + 1);
+          g_value_init (&value, G_TYPE_FLOAT);
+          for (i = min; i <= max; i++) {
+            g_value_set_float (&value, step * i);
+            g_value_array_append (array, &value);
+          }
+          g_value_unset (&value);
+        }
+
+        gst_ahc_parameters_free (params);
+      }
+    }
+  } else if (pspec == properties[PROP_ZOOM]) {
+    if (self->camera) {
+      GstAHCParameters *params;
+
+      params = gst_ah_camera_get_parameters (self->camera);
+      if (params) {
+        GList *zoom_ratios = gst_ahc_parameters_get_zoom_ratios (params);
+        gint max_zoom = gst_ahc_parameters_get_max_zoom (params);
+
+        if (zoom_ratios && g_list_length (zoom_ratios) == (max_zoom + 1)) {
+          GValue value = { 0 };
+          GList *i;
+
+          array = g_value_array_new (max_zoom + 1);
+          g_value_init (&value, G_TYPE_FLOAT);
+          for (i = zoom_ratios; i; i = i->next) {
+            gint zoom_value = GPOINTER_TO_INT (i->data);
+            gfloat zoom = (gfloat) zoom_value / 100.0;
+
+            g_value_set_float (&value, zoom);
+            g_value_array_append (array, &value);
+          }
+          g_value_unset (&value);
+        }
+
+        gst_ahc_parameters_zoom_ratios_free (zoom_ratios);
+        gst_ahc_parameters_free (params);
+      }
+    }
+  } else if (pspec == properties[PROP_WB_MODE]) {
+    PROBE_GET_ENUM_VALUES (white_balance, GST_TYPE_WHITE_BALANCE_MODE,
+        GstPhotographyWhiteBalanceMode);
+  } else if (pspec == properties[PROP_COLOUR_TONE]) {
+    PROBE_GET_ENUM_VALUES (color_effects, GST_TYPE_COLOUR_TONE_MODE,
+        GstPhotographyColorToneMode);
+  } else if (pspec == properties[PROP_FLASH_MODE]) {
+    PROBE_GET_ENUM_VALUES (flash_modes, GST_TYPE_FLASH_MODE,
+        GstPhotographyFlashMode);
+  } else if (pspec == properties[PROP_FOCUS_MODE]) {
+    PROBE_GET_ENUM_VALUES (focus_modes, GST_TYPE_FOCUS_MODE,
+        GstPhotographyFocusMode);
+  } else if (pspec == properties[PROP_SCENE_MODE]) {
+    PROBE_GET_ENUM_VALUES (scene_modes, GST_TYPE_SCENE_MODE,
+        GstPhotographySceneMode);
+  } else if (pspec == properties[PROP_FLICKER_MODE]) {
+    PROBE_GET_ENUM_VALUES (antibanding, GST_TYPE_FLICKER_REDUCTION_MODE,
+        GstPhotographyFlickerReductionMode);
+  } else {
+    G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
+  }
+
+  return array;
+}
+#endif
+
+static gboolean
+_antibanding_to_enum (const gchar * antibanding,
+    GstPhotographyFlickerReductionMode * mode)
+{
+  if (antibanding == Parameters_ANTIBANDING_AUTO)
+    *mode = GST_PHOTOGRAPHY_FLICKER_REDUCTION_AUTO;
+  else if (antibanding == Parameters_ANTIBANDING_50HZ)
+    *mode = GST_PHOTOGRAPHY_FLICKER_REDUCTION_50HZ;
+  else if (antibanding == Parameters_ANTIBANDING_60HZ)
+    *mode = GST_PHOTOGRAPHY_FLICKER_REDUCTION_60HZ;
+  else if (antibanding == Parameters_ANTIBANDING_OFF)
+    *mode = GST_PHOTOGRAPHY_FLICKER_REDUCTION_OFF;
+  else
+    return FALSE;
+
+  return TRUE;
+}
+
+static gboolean
+_white_balance_to_enum (const gchar * white_balance,
+    GstPhotographyWhiteBalanceMode * mode)
+{
+  if (white_balance == Parameters_WHITE_BALANCE_AUTO)
+    *mode = GST_PHOTOGRAPHY_WB_MODE_AUTO;
+  else if (white_balance == Parameters_WHITE_BALANCE_INCANDESCENT)
+    *mode = GST_PHOTOGRAPHY_WB_MODE_TUNGSTEN;
+  else if (white_balance == Parameters_WHITE_BALANCE_FLUORESCENT)
+    *mode = GST_PHOTOGRAPHY_WB_MODE_FLUORESCENT;
+  else if (white_balance == Parameters_WHITE_BALANCE_WARM_FLUORESCENT)
+    *mode = GST_PHOTOGRAPHY_WB_MODE_WARM_FLUORESCENT;
+  else if (white_balance == Parameters_WHITE_BALANCE_DAYLIGHT)
+    *mode = GST_PHOTOGRAPHY_WB_MODE_DAYLIGHT;
+  else if (white_balance == Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT)
+    *mode = GST_PHOTOGRAPHY_WB_MODE_CLOUDY;
+  else if (white_balance == Parameters_WHITE_BALANCE_TWILIGHT)
+    *mode = GST_PHOTOGRAPHY_WB_MODE_SUNSET;
+  else if (white_balance == Parameters_WHITE_BALANCE_SHADE)
+    *mode = GST_PHOTOGRAPHY_WB_MODE_SHADE;
+  else
+    return FALSE;
+
+  return TRUE;
+}
+
+static gboolean
+_color_effects_to_enum (const gchar * color_effect,
+    GstPhotographyColorToneMode * mode)
+{
+  if (color_effect == Parameters_EFFECT_NONE)
+    *mode = GST_PHOTOGRAPHY_COLOR_TONE_MODE_NORMAL;
+  else if (color_effect == Parameters_EFFECT_MONO)
+    *mode = GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRAYSCALE;
+  else if (color_effect == Parameters_EFFECT_NEGATIVE)
+    *mode = GST_PHOTOGRAPHY_COLOR_TONE_MODE_NEGATIVE;
+  else if (color_effect == Parameters_EFFECT_SOLARIZE)
+    *mode = GST_PHOTOGRAPHY_COLOR_TONE_MODE_SOLARIZE;
+  else if (color_effect == Parameters_EFFECT_SEPIA)
+    *mode = GST_PHOTOGRAPHY_COLOR_TONE_MODE_SEPIA;
+  else if (color_effect == Parameters_EFFECT_POSTERIZE)
+    *mode = GST_PHOTOGRAPHY_COLOR_TONE_MODE_POSTERIZE;
+  else if (color_effect == Parameters_EFFECT_WHITEBOARD)
+    *mode = GST_PHOTOGRAPHY_COLOR_TONE_MODE_WHITEBOARD;
+  else if (color_effect == Parameters_EFFECT_BLACKBOARD)
+    *mode = GST_PHOTOGRAPHY_COLOR_TONE_MODE_BLACKBOARD;
+  else if (color_effect == Parameters_EFFECT_AQUA)
+    *mode = GST_PHOTOGRAPHY_COLOR_TONE_MODE_AQUA;
+  else
+    return FALSE;
+
+  return TRUE;
+}
+
+static gboolean
+_scene_modes_to_enum (const gchar * scene, GstPhotographySceneMode * mode)
+{
+  if (scene == Parameters_SCENE_MODE_AUTO)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_AUTO;
+  else if (scene == Parameters_SCENE_MODE_ACTION)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_ACTION;
+  else if (scene == Parameters_SCENE_MODE_PORTRAIT)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_PORTRAIT;
+  else if (scene == Parameters_SCENE_MODE_LANDSCAPE)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_LANDSCAPE;
+  else if (scene == Parameters_SCENE_MODE_NIGHT)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_NIGHT;
+  else if (scene == Parameters_SCENE_MODE_NIGHT_PORTRAIT)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_NIGHT_PORTRAIT;
+  else if (scene == Parameters_SCENE_MODE_THEATRE)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_THEATRE;
+  else if (scene == Parameters_SCENE_MODE_BEACH)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_BEACH;
+  else if (scene == Parameters_SCENE_MODE_SNOW)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_SNOW;
+  else if (scene == Parameters_SCENE_MODE_SUNSET)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_SUNSET;
+  else if (scene == Parameters_SCENE_MODE_STEADYPHOTO)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_STEADY_PHOTO;
+  else if (scene == Parameters_SCENE_MODE_FIREWORKS)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_FIREWORKS;
+  else if (scene == Parameters_SCENE_MODE_SPORTS)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_SPORT;
+  else if (scene == Parameters_SCENE_MODE_PARTY)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_PARTY;
+  else if (scene == Parameters_SCENE_MODE_CANDLELIGHT)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_CANDLELIGHT;
+  else if (scene == Parameters_SCENE_MODE_BARCODE)
+    *mode = GST_PHOTOGRAPHY_SCENE_MODE_BARCODE;
+  else
+    return FALSE;
+
+  return TRUE;
+}
+
+static gboolean
+_flash_modes_to_enum (const gchar * flash, GstPhotographyFlashMode * mode)
+{
+  if (flash == Parameters_FLASH_MODE_OFF)
+    *mode = GST_PHOTOGRAPHY_FLASH_MODE_OFF;
+  else if (flash == Parameters_FLASH_MODE_AUTO)
+    *mode = GST_PHOTOGRAPHY_FLASH_MODE_AUTO;
+  else if (flash == Parameters_FLASH_MODE_ON)
+    *mode = GST_PHOTOGRAPHY_FLASH_MODE_ON;
+  else if (flash == Parameters_FLASH_MODE_RED_EYE)
+    *mode = GST_PHOTOGRAPHY_FLASH_MODE_RED_EYE;
+  else if (flash == Parameters_FLASH_MODE_TORCH)
+    *mode = GST_PHOTOGRAPHY_FLASH_MODE_FILL_IN;
+  else
+    return FALSE;
+
+  return TRUE;
+}
+
+static gboolean
+_focus_modes_to_enum (const gchar * focus, GstPhotographyFocusMode * mode)
+{
+  if (focus == Parameters_FOCUS_MODE_AUTO)
+    *mode = GST_PHOTOGRAPHY_FOCUS_MODE_AUTO;
+  else if (focus == Parameters_FOCUS_MODE_INFINITY)
+    *mode = GST_PHOTOGRAPHY_FOCUS_MODE_INFINITY;
+  else if (focus == Parameters_FOCUS_MODE_MACRO)
+    *mode = GST_PHOTOGRAPHY_FOCUS_MODE_MACRO;
+  else if (focus == Parameters_FOCUS_MODE_FIXED)
+    *mode = GST_PHOTOGRAPHY_FOCUS_MODE_HYPERFOCAL;
+  else if (focus == Parameters_FOCUS_MODE_EDOF)
+    *mode = GST_PHOTOGRAPHY_FOCUS_MODE_EXTENDED;
+  else if (focus == Parameters_FOCUS_MODE_CONTINUOUS_VIDEO)
+    *mode = GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_EXTENDED;
+  else if (focus == Parameters_FOCUS_MODE_CONTINUOUS_PICTURE)
+    *mode = GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_NORMAL;
+  else
+    return FALSE;
+
+  return TRUE;
+}
+
+static gboolean
+gst_ahc_src_get_ev_compensation (GstPhotography * photo, gfloat * ev_comp)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      gint ev, min, max;
+      gfloat step;
+
+      ev = gst_ahc_parameters_get_exposure_compensation (params);
+      min = gst_ahc_parameters_get_min_exposure_compensation (params);
+      max = gst_ahc_parameters_get_max_exposure_compensation (params);
+      step = gst_ahc_parameters_get_exposure_compensation_step (params);
+
+      if (step != 0.0 && min != max && min <= ev && ev <= max) {
+        if (ev_comp)
+          *ev_comp = ev * step;
+        ret = TRUE;
+      }
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_get_white_balance_mode (GstPhotography * photo,
+    GstPhotographyWhiteBalanceMode * wb_mode)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      const gchar *wb = gst_ahc_parameters_get_white_balance (params);
+      GstPhotographyWhiteBalanceMode mode = GST_PHOTOGRAPHY_WB_MODE_AUTO;
+
+      if (_white_balance_to_enum (wb, &mode)) {
+        ret = TRUE;
+
+        if (wb_mode)
+          *wb_mode = mode;
+      }
+
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_get_colour_tone_mode (GstPhotography * photo,
+    GstPhotographyColorToneMode * tone_mode)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      const gchar *effect = gst_ahc_parameters_get_color_effect (params);
+      GstPhotographyColorToneMode mode = GST_PHOTOGRAPHY_COLOR_TONE_MODE_NORMAL;
+
+      if (_color_effects_to_enum (effect, &mode)) {
+        ret = TRUE;
+
+        if (tone_mode)
+          *tone_mode = mode;
+      }
+
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_get_scene_mode (GstPhotography * photo,
+    GstPhotographySceneMode * scene_mode)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (scene_mode && self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      const gchar *scene = gst_ahc_parameters_get_scene_mode (params);
+      GstPhotographySceneMode mode = GST_PHOTOGRAPHY_SCENE_MODE_AUTO;
+
+      if (_scene_modes_to_enum (scene, &mode)) {
+        ret = TRUE;
+
+        if (scene_mode)
+          *scene_mode = mode;
+      }
+
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_get_flash_mode (GstPhotography * photo,
+    GstPhotographyFlashMode * flash_mode)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      const gchar *flash = gst_ahc_parameters_get_flash_mode (params);
+      GstPhotographyFlashMode mode = GST_PHOTOGRAPHY_FLASH_MODE_OFF;
+
+      if (_flash_modes_to_enum (flash, &mode)) {
+        ret = TRUE;
+
+        if (flash_mode)
+          *flash_mode = mode;
+      }
+
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_get_zoom (GstPhotography * photo, gfloat * zoom)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      GList *zoom_ratios = gst_ahc_parameters_get_zoom_ratios (params);
+      gint zoom_idx = gst_ahc_parameters_get_zoom (params);
+      gint max_zoom = gst_ahc_parameters_get_max_zoom (params);
+
+      if (zoom_ratios && g_list_length (zoom_ratios) == (max_zoom + 1) &&
+          zoom_idx >= 0 && zoom_idx < max_zoom) {
+        gint zoom_value;
+
+        zoom_value = GPOINTER_TO_INT (g_list_nth_data (zoom_ratios, zoom_idx));
+        if (zoom)
+          *zoom = (gfloat) zoom_value / 100.0;
+
+        ret = TRUE;
+      }
+
+      gst_ahc_parameters_zoom_ratios_free (zoom_ratios);
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_get_flicker_mode (GstPhotography * photo,
+    GstPhotographyFlickerReductionMode * flicker_mode)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      const gchar *antibanding = gst_ahc_parameters_get_antibanding (params);
+      GstPhotographyFlickerReductionMode mode =
+          GST_PHOTOGRAPHY_FLICKER_REDUCTION_AUTO;
+
+      if (_antibanding_to_enum (antibanding, &mode)) {
+        ret = TRUE;
+
+        if (flicker_mode)
+          *flicker_mode = mode;
+      }
+
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_get_focus_mode (GstPhotography * photo,
+    GstPhotographyFocusMode * focus_mode)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      const gchar *focus = gst_ahc_parameters_get_focus_mode (params);
+      GstPhotographyFocusMode mode = GST_PHOTOGRAPHY_FOCUS_MODE_AUTO;
+
+      if (_focus_modes_to_enum (focus, &mode)) {
+        ret = TRUE;
+
+        if (focus_mode)
+          *focus_mode = mode;
+      }
+
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+
+static gboolean
+gst_ahc_src_set_ev_compensation (GstPhotography * photo, gfloat ev_comp)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      gint ev, min, max;
+      gfloat step;
+
+      ev = gst_ahc_parameters_get_exposure_compensation (params);
+      min = gst_ahc_parameters_get_min_exposure_compensation (params);
+      max = gst_ahc_parameters_get_max_exposure_compensation (params);
+      step = gst_ahc_parameters_get_exposure_compensation_step (params);
+      if (step != 0.0 && min != max &&
+          (min * step) <= ev_comp && ev_comp <= (max * step)) {
+        ev = ev_comp / step;
+        if ((ev * step) == ev_comp) {
+          gst_ahc_parameters_set_exposure_compensation (params, ev);
+          ret = gst_ah_camera_set_parameters (self->camera, params);
+        }
+      }
+    }
+    gst_ahc_parameters_free (params);
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_set_white_balance_mode (GstPhotography * photo,
+    GstPhotographyWhiteBalanceMode wb_mode)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      const gchar *white_balance = NULL;
+
+      switch (wb_mode) {
+        case GST_PHOTOGRAPHY_WB_MODE_AUTO:
+          white_balance = Parameters_WHITE_BALANCE_AUTO;
+          break;
+        case GST_PHOTOGRAPHY_WB_MODE_DAYLIGHT:
+          white_balance = Parameters_WHITE_BALANCE_DAYLIGHT;
+          break;
+        case GST_PHOTOGRAPHY_WB_MODE_CLOUDY:
+          white_balance = Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT;
+          break;
+        case GST_PHOTOGRAPHY_WB_MODE_SUNSET:
+          white_balance = Parameters_WHITE_BALANCE_TWILIGHT;
+          break;
+        case GST_PHOTOGRAPHY_WB_MODE_TUNGSTEN:
+          white_balance = Parameters_WHITE_BALANCE_INCANDESCENT;
+          break;
+        case GST_PHOTOGRAPHY_WB_MODE_FLUORESCENT:
+          white_balance = Parameters_WHITE_BALANCE_FLUORESCENT;
+          break;
+        case GST_PHOTOGRAPHY_WB_MODE_WARM_FLUORESCENT:
+          white_balance = Parameters_WHITE_BALANCE_WARM_FLUORESCENT;
+          break;
+        case GST_PHOTOGRAPHY_WB_MODE_SHADE:
+          white_balance = Parameters_WHITE_BALANCE_SHADE;
+          break;
+        default:
+          white_balance = NULL;
+          break;
+      }
+
+      if (white_balance) {
+        gst_ahc_parameters_set_white_balance (params, white_balance);
+        ret = gst_ah_camera_set_parameters (self->camera, params);
+      }
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_set_colour_tone_mode (GstPhotography * photo,
+    GstPhotographyColorToneMode tone_mode)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      const gchar *color_effect = NULL;
+
+      switch (tone_mode) {
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_NORMAL:
+          color_effect = Parameters_EFFECT_NONE;
+          break;
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_SEPIA:
+          color_effect = Parameters_EFFECT_SEPIA;
+          break;
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_NEGATIVE:
+          color_effect = Parameters_EFFECT_NEGATIVE;
+          break;
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRAYSCALE:
+          color_effect = Parameters_EFFECT_MONO;
+          break;
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_SOLARIZE:
+          color_effect = Parameters_EFFECT_SOLARIZE;
+          break;
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_POSTERIZE:
+          color_effect = Parameters_EFFECT_POSTERIZE;
+          break;
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_WHITEBOARD:
+          color_effect = Parameters_EFFECT_WHITEBOARD;
+          break;
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_BLACKBOARD:
+          color_effect = Parameters_EFFECT_BLACKBOARD;
+          break;
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_AQUA:
+          color_effect = Parameters_EFFECT_AQUA;
+          break;
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_NATURAL:
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_VIVID:
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_COLORSWAP:
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_OUT_OF_FOCUS:
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKY_BLUE:
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRASS_GREEN:
+        case GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKIN_WHITEN:
+        default:
+          color_effect = NULL;
+          break;
+      }
+
+      if (color_effect) {
+        gst_ahc_parameters_set_color_effect (params, color_effect);
+        ret = gst_ah_camera_set_parameters (self->camera, params);
+      }
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_set_scene_mode (GstPhotography * photo,
+    GstPhotographySceneMode scene_mode)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      const gchar *scene = NULL;
+
+      switch (scene_mode) {
+        case GST_PHOTOGRAPHY_SCENE_MODE_PORTRAIT:
+          scene = Parameters_SCENE_MODE_PORTRAIT;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_LANDSCAPE:
+          scene = Parameters_SCENE_MODE_LANDSCAPE;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_SPORT:
+          scene = Parameters_SCENE_MODE_SPORTS;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_NIGHT:
+          scene = Parameters_SCENE_MODE_NIGHT;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_AUTO:
+          scene = Parameters_SCENE_MODE_AUTO;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_ACTION:
+          scene = Parameters_SCENE_MODE_ACTION;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_NIGHT_PORTRAIT:
+          scene = Parameters_SCENE_MODE_NIGHT_PORTRAIT;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_THEATRE:
+          scene = Parameters_SCENE_MODE_THEATRE;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_BEACH:
+          scene = Parameters_SCENE_MODE_BEACH;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_SNOW:
+          scene = Parameters_SCENE_MODE_SNOW;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_SUNSET:
+          scene = Parameters_SCENE_MODE_SUNSET;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_STEADY_PHOTO:
+          scene = Parameters_SCENE_MODE_STEADYPHOTO;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_FIREWORKS:
+          scene = Parameters_SCENE_MODE_FIREWORKS;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_PARTY:
+          scene = Parameters_SCENE_MODE_PARTY;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_CANDLELIGHT:
+          scene = Parameters_SCENE_MODE_CANDLELIGHT;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_BARCODE:
+          scene = Parameters_SCENE_MODE_BARCODE;
+          break;
+        case GST_PHOTOGRAPHY_SCENE_MODE_MANUAL:
+        case GST_PHOTOGRAPHY_SCENE_MODE_CLOSEUP:
+        default:
+          scene = NULL;
+          break;
+      }
+
+      if (scene) {
+        gst_ahc_parameters_set_scene_mode (params, scene);
+        ret = gst_ah_camera_set_parameters (self->camera, params);
+      }
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_set_flash_mode (GstPhotography * photo,
+    GstPhotographyFlashMode flash_mode)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      const gchar *flash = NULL;
+
+      switch (flash_mode) {
+        case GST_PHOTOGRAPHY_FLASH_MODE_AUTO:
+          flash = Parameters_FLASH_MODE_AUTO;
+          break;
+        case GST_PHOTOGRAPHY_FLASH_MODE_OFF:
+          flash = Parameters_FLASH_MODE_OFF;
+          break;
+        case GST_PHOTOGRAPHY_FLASH_MODE_ON:
+          flash = Parameters_FLASH_MODE_ON;
+          break;
+        case GST_PHOTOGRAPHY_FLASH_MODE_FILL_IN:
+          flash = Parameters_FLASH_MODE_TORCH;
+          break;
+        case GST_PHOTOGRAPHY_FLASH_MODE_RED_EYE:
+          flash = Parameters_FLASH_MODE_RED_EYE;
+          break;
+        default:
+          flash = NULL;
+          break;
+      }
+
+      if (flash) {
+        gst_ahc_parameters_set_flash_mode (params, flash);
+        ret = gst_ah_camera_set_parameters (self->camera, params);
+      }
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_set_zoom (GstPhotography * photo, gfloat zoom)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      GList *zoom_ratios = gst_ahc_parameters_get_zoom_ratios (params);
+      gint max_zoom = gst_ahc_parameters_get_max_zoom (params);
+      gint zoom_idx = -1;
+
+      if (zoom_ratios && g_list_length (zoom_ratios) == (max_zoom + 1)) {
+        gint i;
+        gint value = zoom * 100;
+
+        for (i = 0; i < max_zoom + 1; i++) {
+          gint zoom_value = GPOINTER_TO_INT (g_list_nth_data (zoom_ratios, i));
+
+          if (value == zoom_value)
+            zoom_idx = i;
+        }
+      }
+
+      if (zoom_idx != -1) {
+        if (self->smooth_zoom &&
+            gst_ahc_parameters_is_smooth_zoom_supported (params)) {
+          // First, we need to cancel any previous smooth zoom operation
+          gst_ah_camera_stop_smooth_zoom (self->camera);
+          ret = gst_ah_camera_start_smooth_zoom (self->camera, zoom_idx);
+        } else {
+          gst_ahc_parameters_set_zoom (params, zoom_idx);
+          ret = gst_ah_camera_set_parameters (self->camera, params);
+        }
+      }
+
+      gst_ahc_parameters_zoom_ratios_free (zoom_ratios);
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_set_flicker_mode (GstPhotography * photo,
+    GstPhotographyFlickerReductionMode flicker_mode)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      const gchar *antibanding = NULL;
+
+      switch (flicker_mode) {
+        case GST_PHOTOGRAPHY_FLICKER_REDUCTION_OFF:
+          antibanding = Parameters_ANTIBANDING_OFF;
+          break;
+        case GST_PHOTOGRAPHY_FLICKER_REDUCTION_50HZ:
+          antibanding = Parameters_ANTIBANDING_50HZ;
+          break;
+        case GST_PHOTOGRAPHY_FLICKER_REDUCTION_60HZ:
+          antibanding = Parameters_ANTIBANDING_60HZ;
+          break;
+        case GST_PHOTOGRAPHY_FLICKER_REDUCTION_AUTO:
+          antibanding = Parameters_ANTIBANDING_AUTO;
+          break;
+        default:
+          antibanding = NULL;
+          break;
+      }
+
+      if (antibanding) {
+        gst_ahc_parameters_set_antibanding (params, antibanding);
+        ret = gst_ah_camera_set_parameters (self->camera, params);
+      }
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_set_focus_mode (GstPhotography * photo,
+    GstPhotographyFocusMode focus_mode)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+  gboolean ret = FALSE;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      const gchar *focus = NULL;
+
+      switch (focus_mode) {
+        case GST_PHOTOGRAPHY_FOCUS_MODE_AUTO:
+          focus = Parameters_FOCUS_MODE_AUTO;
+          break;
+        case GST_PHOTOGRAPHY_FOCUS_MODE_MACRO:
+          focus = Parameters_FOCUS_MODE_MACRO;
+          break;
+        case GST_PHOTOGRAPHY_FOCUS_MODE_INFINITY:
+          focus = Parameters_FOCUS_MODE_INFINITY;
+          break;
+        case GST_PHOTOGRAPHY_FOCUS_MODE_HYPERFOCAL:
+          focus = Parameters_FOCUS_MODE_FIXED;
+          break;
+        case GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_NORMAL:
+          focus = Parameters_FOCUS_MODE_CONTINUOUS_PICTURE;
+          break;
+        case GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_EXTENDED:
+          focus = Parameters_FOCUS_MODE_CONTINUOUS_VIDEO;
+          break;
+        case GST_PHOTOGRAPHY_FOCUS_MODE_EXTENDED:
+          focus = Parameters_FOCUS_MODE_EDOF;
+          break;
+        case GST_PHOTOGRAPHY_FOCUS_MODE_PORTRAIT:
+        default:
+          focus = NULL;
+          break;
+      }
+
+      if (focus) {
+        gst_ahc_parameters_set_focus_mode (params, focus);
+        ret = gst_ah_camera_set_parameters (self->camera, params);
+      }
+      gst_ahc_parameters_free (params);
+    }
+  }
+
+  return ret;
+}
+
+static GstPhotographyCaps
+gst_ahc_src_get_capabilities (GstPhotography * photo)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+
+  GstPhotographyCaps caps = GST_PHOTOGRAPHY_CAPS_EV_COMP |
+      GST_PHOTOGRAPHY_CAPS_WB_MODE | GST_PHOTOGRAPHY_CAPS_TONE |
+      GST_PHOTOGRAPHY_CAPS_SCENE | GST_PHOTOGRAPHY_CAPS_FLASH |
+      GST_PHOTOGRAPHY_CAPS_FOCUS | GST_PHOTOGRAPHY_CAPS_ZOOM;
+
+  if (self->camera) {
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (!gst_ahc_parameters_is_zoom_supported (params))
+      caps &= ~GST_PHOTOGRAPHY_CAPS_ZOOM;
+
+    gst_ahc_parameters_free (params);
+  }
+
+  return caps;
+}
+
+static void
+gst_ahc_src_on_auto_focus (gboolean success, gpointer user_data)
+{
+  GstAHCSrc *self = GST_AHC_SRC (user_data);
+
+  GST_WARNING_OBJECT (self, "Auto focus completed : %d", success);
+  gst_element_post_message (GST_ELEMENT (self),
+      gst_message_new_custom (GST_MESSAGE_ELEMENT, GST_OBJECT (self),
+          gst_structure_new_empty (GST_PHOTOGRAPHY_AUTOFOCUS_DONE)));
+}
+
+static void
+gst_ahc_src_set_autofocus (GstPhotography * photo, gboolean on)
+{
+  GstAHCSrc *self = GST_AHC_SRC (photo);
+
+  if (self->camera) {
+    if (on)
+      gst_ah_camera_auto_focus (self->camera, gst_ahc_src_on_auto_focus, self);
+    else
+      gst_ah_camera_cancel_auto_focus (self->camera);
+  }
+
+}
+
+static gint
+_compare_formats (int f1, int f2)
+{
+  if (f1 == f2)
+    return 0;
+  /* YV12 has priority */
+  if (f1 == ImageFormat_YV12)
+    return -1;
+  if (f2 == ImageFormat_YV12)
+    return 1;
+  /* Then NV21 */
+  if (f1 == ImageFormat_NV21)
+    return -1;
+  if (f2 == ImageFormat_NV21)
+    return 1;
+  /* Then we don't care */
+  return f2 - f1;
+}
+
+static gint
+_compare_sizes (GstAHCSize * s1, GstAHCSize * s2)
+{
+  return ((s2->width * s2->height) - (s1->width * s1->height));
+}
+
+
+static gint
+_compare_ranges (int *r1, int *r2)
+{
+  if (r1[1] == r2[1])
+    /* Smallest range */
+    return (r1[1] - r1[0]) - (r2[1] - r2[0]);
+  else
+    /* Highest fps */
+    return r2[1] - r1[1];
+}
+
+static GstCaps *
+gst_ahc_src_getcaps (GstBaseSrc * src, GstCaps * filter)
+{
+  GstAHCSrc *self = GST_AHC_SRC (src);
+
+  if (self->camera) {
+    GstCaps *ret = gst_caps_new_empty ();
+    GstAHCParameters *params;
+
+    params = gst_ah_camera_get_parameters (self->camera);
+    if (params) {
+      GList *formats, *sizes, *ranges;
+      GList *i, *j, *k;
+      int previous_format = ImageFormat_UNKNOWN;
+
+      formats = gst_ahc_parameters_get_supported_preview_formats (params);
+      formats = g_list_sort (formats, (GCompareFunc) _compare_formats);
+      sizes = gst_ahc_parameters_get_supported_preview_sizes (params);
+      sizes = g_list_sort (sizes, (GCompareFunc) _compare_sizes);
+      ranges = gst_ahc_parameters_get_supported_preview_fps_range (params);
+      ranges = g_list_sort (ranges, (GCompareFunc) _compare_ranges);
+      GST_DEBUG_OBJECT (self, "Supported preview formats:");
+
+      for (i = formats; i; i = i->next) {
+        int f = GPOINTER_TO_INT (i->data);
+        gchar *format_string = NULL;
+        GstStructure *format = NULL;
+
+        /* Ignore duplicates */
+        if (f == previous_format)
+          continue;
+
+        /* Can't use switch/case because the values are not constants */
+        if (f == ImageFormat_NV16) {
+          GST_DEBUG_OBJECT (self, "    NV16 (%d)", f);
+          format_string = g_strdup ("NV16");
+        } else if (f == ImageFormat_NV21) {
+          GST_DEBUG_OBJECT (self, "    NV21 (%d)", f);
+          format_string = g_strdup ("NV21");
+        } else if (f == ImageFormat_RGB_565) {
+          GstVideoFormat vformat;
+          vformat = gst_video_format_from_masks (16, 16, G_LITTLE_ENDIAN,
+              0xf800, 0x07e0, 0x001f, 0x0);
+          GST_DEBUG_OBJECT (self, "    RGB565 (%d)", f);
+          format_string = g_strdup (gst_video_format_to_string (vformat));
+        } else if (f == ImageFormat_YUY2) {
+          GST_DEBUG_OBJECT (self, "    YUY2 (%d)", f);
+          format_string = g_strdup ("YUY2");
+        } else if (f == ImageFormat_YV12) {
+          GST_DEBUG_OBJECT (self, "    YV12 (%d)", f);
+          format_string = g_strdup ("YV12");
+        }
+        previous_format = f;
+
+        if (format_string) {
+          format = gst_structure_new ("video/x-raw",
+              "format", G_TYPE_STRING, format_string, NULL);
+          g_free (format_string);
+        }
+
+        if (format) {
+          for (j = sizes; j; j = j->next) {
+            GstAHCSize *s = j->data;
+            GstStructure *size;
+
+            size = gst_structure_copy (format);
+            gst_structure_set (size, "width", G_TYPE_INT, s->width,
+                "height", G_TYPE_INT, s->height,
+                "interlaced", G_TYPE_BOOLEAN, FALSE,
+                "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, NULL);
+
+            for (k = ranges; k; k = k->next) {
+              int *range = k->data;
+              GstStructure *s;
+
+              s = gst_structure_copy (size);
+              if (range[0] == range[1]) {
+                gst_structure_set (s, "framerate", GST_TYPE_FRACTION,
+                    range[0], 1000, NULL);
+              } else {
+                gst_structure_set (s, "framerate", GST_TYPE_FRACTION_RANGE,
+                    range[0], 1000, range[1], 1000, NULL);
+              }
+              gst_caps_append_structure (ret, s);
+            }
+            gst_structure_free (size);
+          }
+          gst_structure_free (format);
+        }
+      }
+      GST_DEBUG_OBJECT (self, "Supported preview sizes:");
+      for (i = sizes; i; i = i->next) {
+        GstAHCSize *s = i->data;
+
+        GST_DEBUG_OBJECT (self, "    %dx%d", s->width, s->height);
+      }
+      GST_DEBUG_OBJECT (self, "Supported preview fps range:");
+      for (i = ranges; i; i = i->next) {
+        int *range = i->data;
+
+        GST_DEBUG_OBJECT (self, "    [%d, %d]", range[0], range[1]);
+      }
+
+      gst_ahc_parameters_supported_preview_formats_free (formats);
+      gst_ahc_parameters_supported_preview_sizes_free (sizes);
+      gst_ahc_parameters_supported_preview_fps_range_free (ranges);
+      gst_ahc_parameters_free (params);
+    }
+
+    return ret;
+  } else {
+    return NULL;
+  }
+}
+
+static GstCaps *
+gst_ahc_src_fixate (GstBaseSrc * src, GstCaps * caps)
+{
+  GstAHCSrc *self = GST_AHC_SRC (src);
+  GstStructure *s = gst_caps_get_structure (caps, 0);
+
+  GST_DEBUG_OBJECT (self, "Fixating : %" GST_PTR_FORMAT, caps);
+
+  caps = gst_caps_make_writable (caps);
+
+  /* Width/height will be fixed already here, format will
+   * be left for fixation by the default handler.
+   * We only have to fixate framerate here, to the
+   * highest possible framerate.
+   */
+  gst_structure_fixate_field_nearest_fraction (s, "framerate", G_MAXINT, 1);
+
+  caps = GST_BASE_SRC_CLASS (parent_class)->fixate (src, caps);
+
+  return caps;
+}
+
+static gboolean
+gst_ahc_src_setcaps (GstBaseSrc * src, GstCaps * caps)
+{
+  GstAHCSrc *self = GST_AHC_SRC (src);
+  gboolean ret = FALSE;
+  GstAHCParameters *params = NULL;
+
+  if (!self->camera) {
+    GST_WARNING_OBJECT (self, "setcaps called without a camera available");
+    goto end;
+  }
+
+  params = gst_ah_camera_get_parameters (self->camera);
+  if (params) {
+    GstStructure *s;
+    const gchar *format_str = NULL;
+    GstVideoFormat format;
+    gint fmt;
+    gint width, height, fps_n, fps_d, buffer_size;
+    GList *ranges, *l;
+    gint range_size = G_MAXINT;
+
+    s = gst_caps_get_structure (caps, 0);
+
+    format_str = gst_structure_get_string (s, "format");
+    format = gst_video_format_from_string (format_str);
+
+    gst_structure_get_int (s, "width", &width);
+    gst_structure_get_int (s, "height", &height);
+    gst_structure_get_fraction (s, "framerate", &fps_n, &fps_d);
+
+    fps_n *= 1000 / fps_d;
+
+    /* Select the best range that contains our framerate.
+     * We *must* set a range of those returned by the camera
+     * according to the API docs and can't use a subset of any
+     * of those ranges.
+     * We chose the smallest range that contains the target
+     * framerate.
+     */
+    self->fps_max = self->fps_min = 0;
+    ranges = gst_ahc_parameters_get_supported_preview_fps_range (params);
+    ranges = g_list_sort (ranges, (GCompareFunc) _compare_ranges);
+    for (l = ranges; l; l = l->next) {
+      int *range = l->data;
+
+      if (fps_n >= range[0] && fps_n <= range[1] &&
+          range_size > (range[1] - range[0])) {
+        self->fps_min = range[0];
+        self->fps_max = range[1];
+        range_size = range[1] - range[0];
+      }
+    }
+    gst_ahc_parameters_supported_preview_fps_range_free (ranges);
+    if (self->fps_max == 0) {
+      GST_ERROR_OBJECT (self, "Couldn't find an applicable FPS range");
+      goto end;
+    }
+
+    switch (format) {
+      case GST_VIDEO_FORMAT_YV12:
+        fmt = ImageFormat_YV12;
+        break;
+      case GST_VIDEO_FORMAT_NV21:
+        fmt = ImageFormat_NV21;
+        break;
+      case GST_VIDEO_FORMAT_YUY2:
+        fmt = ImageFormat_YUY2;
+        break;
+      case GST_VIDEO_FORMAT_RGB16:
+        fmt = ImageFormat_RGB_565;
+        break;
+        /* GST_VIDEO_FORMAT_NV16 doesn't exist */
+        //case GST_VIDEO_FORMAT_NV16:
+        //fmt = ImageFormat_NV16;
+        //break;
+      default:
+        fmt = ImageFormat_UNKNOWN;
+        break;
+    }
+
+    if (fmt == ImageFormat_UNKNOWN) {
+      GST_WARNING_OBJECT (self, "unsupported video format (%s)", format_str);
+      goto end;
+    }
+
+    gst_ahc_parameters_set_preview_size (params, width, height);
+    gst_ahc_parameters_set_preview_format (params, fmt);
+    gst_ahc_parameters_set_preview_fps_range (params, self->fps_min,
+        self->fps_max);
+
+    GST_DEBUG_OBJECT (self, "Setting camera parameters : %d %dx%d @ [%f, %f]",
+        fmt, width, height, self->fps_min / 1000.0, self->fps_max / 1000.0);
+
+    if (!gst_ah_camera_set_parameters (self->camera, params)) {
+      GST_WARNING_OBJECT (self, "Unable to set video parameters");
+      goto end;
+    }
+
+    self->width = width;
+    self->height = height;
+    self->format = fmt;
+    buffer_size = width * height *
+        ((double) gst_ag_imageformat_get_bits_per_pixel (fmt) / 8);
+
+    if (buffer_size > self->buffer_size) {
+      JNIEnv *env = gst_amc_jni_get_env ();
+      gint i;
+
+      for (i = 0; i < NUM_CALLBACK_BUFFERS; i++) {
+        jbyteArray array = (*env)->NewByteArray (env, buffer_size);
+
+        if (array) {
+          gst_ah_camera_add_callback_buffer (self->camera, array);
+          (*env)->DeleteLocalRef (env, array);
+        }
+      }
+    }
+    self->buffer_size = buffer_size;
+
+    GST_DEBUG_OBJECT (self, "setting buffer w:%d h:%d buffer_size: %d",
+        self->width, self->height, self->buffer_size);
+
+    ret = TRUE;
+  }
+
+end:
+  if (params)
+    gst_ahc_parameters_free (params);
+
+  if (ret && self->start) {
+    GST_DEBUG_OBJECT (self, "Starting preview");
+    ret = gst_ah_camera_start_preview (self->camera);
+    if (ret) {
+      /* Need to reset callbacks after every startPreview */
+      gst_ah_camera_set_preview_callback_with_buffer (self->camera,
+          gst_ahc_src_on_preview_frame, self);
+      gst_ah_camera_set_error_callback (self->camera, gst_ahc_src_on_error,
+          self);
+      self->start = FALSE;
+    }
+  }
+  return ret;
+}
+
+typedef struct
+{
+  GstAHCSrc *self;
+  jbyteArray array;
+  jbyte *data;
+} FreeFuncBuffer;
+
+static void
+gst_ahc_src_buffer_free_func (gpointer priv)
+{
+  FreeFuncBuffer *data = (FreeFuncBuffer *) priv;
+  GstAHCSrc *self = data->self;
+  JNIEnv *env = gst_amc_jni_get_env ();
+
+  g_mutex_lock (&self->mutex);
+
+  GST_DEBUG_OBJECT (self, "release %p->%p", data, data->array);
+
+  (*env)->ReleaseByteArrayElements (env, data->array, data->data, JNI_ABORT);
+  if (self->camera)
+    gst_ah_camera_add_callback_buffer (self->camera, data->array);
+
+  (*env)->DeleteGlobalRef (env, data->array);
+
+  g_slice_free (FreeFuncBuffer, data);
+
+  g_mutex_unlock (&self->mutex);
+  gst_object_unref (self);
+}
+
+static void
+_data_queue_item_free (GstDataQueueItem * item)
+{
+  GST_DEBUG ("release  %p", item->object);
+
+  gst_buffer_unref (GST_BUFFER (item->object));
+  g_slice_free (GstDataQueueItem, item);
+}
+
+static void
+gst_ahc_src_on_preview_frame (jbyteArray array, gpointer user_data)
+{
+  GstAHCSrc *self = GST_AHC_SRC (user_data);
+  JNIEnv *env = gst_amc_jni_get_env ();
+  GstBuffer *buffer;
+  GstDataQueueItem *item = NULL;
+  FreeFuncBuffer *malloc_data = NULL;
+  GstClockTime timestamp = GST_CLOCK_TIME_NONE;
+  GstClockTime duration = 0;
+  GstClock *clock;
+  gboolean queued = FALSE;
+
+  g_mutex_lock (&self->mutex);
+
+  if (array == NULL) {
+    GST_DEBUG_OBJECT (self, "Size of array in queue is too small, dropping it");
+    goto done;
+  }
+
+  if ((clock = GST_ELEMENT_CLOCK (self))) {
+    GstClockTime base_time = GST_ELEMENT_CAST (self)->base_time;
+    GstClockTime current_ts;
+
+    gst_object_ref (clock);
+    current_ts = gst_clock_get_time (clock) - base_time;
+    gst_object_unref (clock);
+    if (GST_CLOCK_TIME_IS_VALID (self->previous_ts)) {
+      timestamp = self->previous_ts;
+      duration = current_ts - self->previous_ts;
+      self->previous_ts = current_ts;
+    } else {
+      /* Drop the first buffer */
+      self->previous_ts = current_ts;
+      gst_ah_camera_add_callback_buffer (self->camera, array);
+      GST_DEBUG_OBJECT (self, "dropping the first buffer");
+      goto done;
+    }
+  } else {
+    GST_DEBUG_OBJECT (self, "element clock hasn't created yet.");
+    gst_ah_camera_add_callback_buffer (self->camera, array);
+    goto done;
+  }
+
+  GST_DEBUG_OBJECT (self, "Received data buffer %p", array);
+
+  malloc_data = g_slice_new0 (FreeFuncBuffer);
+  malloc_data->self = gst_object_ref (self);
+  malloc_data->array = (*env)->NewGlobalRef (env, array);
+  malloc_data->data = (*env)->GetByteArrayElements (env, array, NULL);
+
+  buffer =
+      gst_buffer_new_wrapped_full (GST_MEMORY_FLAG_READONLY, malloc_data->data,
+      self->buffer_size, 0, self->buffer_size, malloc_data,
+      gst_ahc_src_buffer_free_func);
+  GST_BUFFER_DURATION (buffer) = duration;
+  GST_BUFFER_PTS (buffer) = timestamp;
+
+  GST_DEBUG_OBJECT (self, "creating wrapped buffer (size: %d)",
+      self->buffer_size);
+
+  item = g_slice_new0 (GstDataQueueItem);
+  item->object = GST_MINI_OBJECT (buffer);
+  item->size = gst_buffer_get_size (buffer);
+  item->duration = GST_BUFFER_DURATION (buffer);
+  item->visible = TRUE;
+  item->destroy = (GDestroyNotify) _data_queue_item_free;
+
+  GST_DEBUG_OBJECT (self, "wrapping jni array %p->%p %p->%p", item,
+      item->object, malloc_data, malloc_data->array);
+
+  queued = gst_data_queue_push (self->queue, item);
+
+done:
+  g_mutex_unlock (&self->mutex);
+
+  if (item && !queued) {
+    GST_INFO_OBJECT (self, "could not add buffer to queue");
+    /* Can't add buffer to queue. Must be flushing. */
+    _data_queue_item_free (item);
+  }
+}
+
+static void
+gst_ahc_src_on_error (gint error, gpointer user_data)
+{
+  GstAHCSrc *self = GST_AHC_SRC (user_data);
+
+  GST_WARNING_OBJECT (self, "Received error code : %d", error);
+}
+
+static gboolean
+gst_ahc_src_open (GstAHCSrc * self)
+{
+  GST_DEBUG_OBJECT (self, "Openning camera");
+
+  self->camera = gst_ah_camera_open (self->device);
+
+  if (self->camera) {
+    GST_DEBUG_OBJECT (self, "Opened camera");
+
+    self->texture = gst_ag_surfacetexture_new (0);
+    gst_ah_camera_set_preview_texture (self->camera, self->texture);
+    self->buffer_size = 0;
+  } else {
+    gint num_cams = gst_ah_camera_get_number_of_cameras ();
+    if (num_cams > 0 && self->device < num_cams) {
+      GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND,
+          ("Unable to open device '%d'.", self->device), GST_ERROR_SYSTEM);
+    } else if (num_cams > 0) {
+      GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND,
+          ("Device '%d' does not exist.", self->device), GST_ERROR_SYSTEM);
+    } else {
+      GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND,
+          ("There are no cameras available on this device."), GST_ERROR_SYSTEM);
+    }
+  }
+
+  return (self->camera != NULL);
+}
+
+static void
+gst_ahc_src_close (GstAHCSrc * self)
+{
+  if (self->camera) {
+    gst_ah_camera_set_error_callback (self->camera, NULL, NULL);
+    gst_ah_camera_set_preview_callback_with_buffer (self->camera, NULL, NULL);
+    gst_ah_camera_release (self->camera);
+    gst_ah_camera_free (self->camera);
+  }
+  self->camera = NULL;
+
+  if (self->texture) {
+    gst_ag_surfacetexture_release (self->texture);
+    gst_ag_surfacetexture_free (self->texture);
+  }
+  self->texture = NULL;
+}
+
+static GstStateChangeReturn
+gst_ahc_src_change_state (GstElement * element, GstStateChange transition)
+{
+  GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
+  GstAHCSrc *self = GST_AHC_SRC (element);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_NULL_TO_READY:
+      if (!gst_ahc_src_open (self))
+        return GST_STATE_CHANGE_FAILURE;
+      break;
+    default:
+      break;
+  }
+
+  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+
+  switch (transition) {
+    case GST_STATE_CHANGE_READY_TO_NULL:
+      gst_ahc_src_close (self);
+      break;
+    default:
+      break;
+  }
+
+  return ret;
+}
+
+static gboolean
+gst_ahc_src_start (GstBaseSrc * bsrc)
+{
+  GstAHCSrc *self = GST_AHC_SRC (bsrc);
+
+  GST_DEBUG_OBJECT (self, "Starting preview");
+  if (self->camera) {
+    self->previous_ts = GST_CLOCK_TIME_NONE;
+    self->fps_min = self->fps_max = self->width = self->height = 0;
+    self->format = ImageFormat_UNKNOWN;
+    self->start = TRUE;
+
+    return TRUE;
+  } else {
+    return FALSE;
+  }
+}
+
+static gboolean
+gst_ahc_src_stop (GstBaseSrc * bsrc)
+{
+  GstAHCSrc *self = GST_AHC_SRC (bsrc);
+
+  GST_DEBUG_OBJECT (self, "Stopping preview");
+  if (self->camera) {
+    gst_data_queue_flush (self->queue);
+    self->start = FALSE;
+    gst_ah_camera_set_error_callback (self->camera, NULL, NULL);
+    return gst_ah_camera_stop_preview (self->camera);
+  }
+  return TRUE;
+}
+
+static gboolean
+gst_ahc_src_unlock (GstBaseSrc * bsrc)
+{
+  GstAHCSrc *self = GST_AHC_SRC (bsrc);
+
+  GST_DEBUG_OBJECT (self, "Unlocking create");
+  gst_data_queue_set_flushing (self->queue, TRUE);
+
+  return TRUE;
+}
+
+static gboolean
+gst_ahc_src_unlock_stop (GstBaseSrc * bsrc)
+{
+  GstAHCSrc *self = GST_AHC_SRC (bsrc);
+
+  GST_DEBUG_OBJECT (self, "Stopping unlock");
+  gst_data_queue_set_flushing (self->queue, FALSE);
+
+  return TRUE;
+}
+
+static GstFlowReturn
+gst_ahc_src_create (GstPushSrc * src, GstBuffer ** buffer)
+{
+  GstAHCSrc *self = GST_AHC_SRC (src);
+  GstDataQueueItem *item;
+
+  if (!gst_data_queue_pop (self->queue, &item)) {
+    GST_INFO_OBJECT (self, "empty queue");
+    return GST_FLOW_FLUSHING;
+  }
+
+  GST_DEBUG_OBJECT (self, "creating buffer %p->%p", item, item->object);
+
+  *buffer = GST_BUFFER (item->object);
+  g_slice_free (GstDataQueueItem, item);
+
+  return GST_FLOW_OK;
+}
+
+static gboolean
+gst_ahc_src_query (GstBaseSrc * bsrc, GstQuery * query)
+{
+  GstAHCSrc *self = GST_AHC_SRC (bsrc);
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_LATENCY:{
+      GstClockTime min;
+
+      /* Allow of 1 frame latency base on the longer frame duration */
+      gst_query_parse_latency (query, NULL, &min, NULL);
+      min = gst_util_uint64_scale (GST_SECOND, 1000, self->fps_min);
+      GST_DEBUG_OBJECT (self,
+          "Reporting latency min: %" GST_TIME_FORMAT, GST_TIME_ARGS (min));
+      gst_query_set_latency (query, TRUE, min, min);
+
+      return TRUE;
+      break;
+    }
+    default:
+      return GST_BASE_SRC_CLASS (parent_class)->query (bsrc, query);
+      break;
+  }
+
+  g_assert_not_reached ();
+}
diff --git a/sys/androidmedia/gstahcsrc.h b/sys/androidmedia/gstahcsrc.h
new file mode 100644
index 0000000..fc24989
--- /dev/null
+++ b/sys/androidmedia/gstahcsrc.h
@@ -0,0 +1,89 @@
+/* GStreamer android.hardware.Camera Source
+ *
+ * Copyright (C) 2012, Cisco Systems, Inc.
+ *   Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
+ *
+ * Copyright (C) 2015, Collabora Ltd.
+ *   Author: Justin Kim <justin.kim@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GST_AHC_SRC_H__
+#define __GST_AHC_SRC_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstpushsrc.h>
+#include <gst/base/gstdataqueue.h>
+
+#include "gst-android-hardware-camera.h"
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_AHC_SRC \
+  (gst_ahc_src_get_type())
+#define GST_AHC_SRC(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_AHC_SRC, GstAHCSrc))
+#define GST_AHC_SRC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_AHC_SRC, GstAHCSrcClass))
+#define GST_IS_AHC_SRC(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_AHC_SRC))
+#define GST_IS_AHC_SRC_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_AHC_SRC))
+
+
+typedef struct _GstAHCSrc GstAHCSrc;
+typedef struct _GstAHCSrcClass GstAHCSrcClass;
+
+/**
+ * GstAHCSrc:
+ *
+ * Opaque data structure.
+ */
+struct _GstAHCSrc
+{
+  /*< private >*/
+  GstPushSrc parent;
+
+  GstAHCamera *camera;
+  GstAGSurfaceTexture *texture;
+  GList *data;
+  GstDataQueue *queue;
+  gint buffer_size;
+  GstClockTime previous_ts;
+  gint format;
+  gint width;
+  gint height;
+  gint fps_min;
+  gint fps_max;
+  gboolean start;
+  gboolean smooth_zoom;
+  GMutex mutex;
+
+  /* Properties */
+  gint device;
+};
+
+struct _GstAHCSrcClass
+{
+  GstPushSrcClass parent_class;
+  GList *probe_properties;
+};
+
+GType gst_ahc_src_get_type (void);
+
+G_END_DECLS
+#endif /* __GST_AHC_SRC_H__ */
diff --git a/sys/androidmedia/gstamc.c b/sys/androidmedia/gstamc.c
index f333820..5b4e936 100644
--- a/sys/androidmedia/gstamc.c
+++ b/sys/androidmedia/gstamc.c
@@ -29,6 +29,8 @@
 #define orc_memcpy memcpy
 #endif
 
+#include "gstahcsrc.h"
+
 #include "gstamc.h"
 #include "gstamc-constants.h"
 
@@ -367,21 +369,23 @@
           media_codec.get_output_buffer, &buffer, index))
     goto done;
 
-  ret = g_new0 (GstAmcBuffer, 1);
-  ret->object = gst_amc_jni_object_make_global (env, buffer);
-  if (!ret->object) {
-    gst_amc_jni_set_error (env, err, GST_LIBRARY_ERROR,
-        GST_LIBRARY_ERROR_FAILED, "Failed to create global buffer reference");
-    goto error;
-  }
+  if (buffer != NULL) {
+    ret = g_new0 (GstAmcBuffer, 1);
+    ret->object = gst_amc_jni_object_make_global (env, buffer);
+    if (!ret->object) {
+      gst_amc_jni_set_error (env, err, GST_LIBRARY_ERROR,
+          GST_LIBRARY_ERROR_FAILED, "Failed to create global buffer reference");
+      goto error;
+    }
 
-  ret->data = (*env)->GetDirectBufferAddress (env, ret->object);
-  if (!ret->data) {
-    gst_amc_jni_set_error (env, err, GST_LIBRARY_ERROR,
-        GST_LIBRARY_ERROR_FAILED, "Failed to get buffer address");
-    goto error;
+    ret->data = (*env)->GetDirectBufferAddress (env, ret->object);
+    if (!ret->data) {
+      gst_amc_jni_set_error (env, err, GST_LIBRARY_ERROR,
+          GST_LIBRARY_ERROR_FAILED, "Failed to get buffer address");
+      goto error;
+    }
+    ret->size = (*env)->GetDirectBufferCapacity (env, ret->object);
   }
-  ret->size = (*env)->GetDirectBufferCapacity (env, ret->object);
 
 done:
 
@@ -3316,6 +3320,28 @@
   if (!register_codecs (plugin))
     return FALSE;
 
+  if (!gst_android_graphics_surfacetexture_init ()) {
+    GST_ERROR ("Failed to init android surface texture");
+    return FALSE;
+  }
+
+  if (!gst_android_graphics_imageformat_init ()) {
+    GST_ERROR ("Failed to init android image format");
+    gst_android_graphics_surfacetexture_deinit ();
+    return FALSE;
+  }
+
+  if (!gst_android_hardware_camera_init ()) {
+    gst_android_graphics_surfacetexture_deinit ();
+    gst_android_graphics_imageformat_deinit ();
+    return FALSE;
+  }
+
+  if (!gst_element_register (plugin, "ahcsrc", GST_RANK_NONE, GST_TYPE_AHC_SRC)) {
+    GST_ERROR ("Failed to register android camera source");
+    return FALSE;
+  }
+
   return TRUE;
 }
 
diff --git a/sys/androidmedia/gstamc.h b/sys/androidmedia/gstamc.h
index a640616..383eb42 100644
--- a/sys/androidmedia/gstamc.h
+++ b/sys/androidmedia/gstamc.h
@@ -167,8 +167,10 @@
 guint32 gst_amc_audio_channel_mask_from_positions (GstAudioChannelPosition *positions, gint channels);
 void gst_amc_codec_info_to_caps (const GstAmcCodecInfo * codec_info, GstCaps **sink_caps, GstCaps **src_caps);
 
-#define GST_ELEMENT_ERROR_FROM_ERROR(el, err) G_STMT_START { \
-  gchar *__dbg = g_strdup (err->message);                               \
+#define GST_ELEMENT_ERROR_FROM_ERROR(el, err) G_STMT_START {            \
+  gchar *__dbg;                                                         \
+  g_assert (err != NULL);                                               \
+  __dbg = g_strdup (err->message);                                      \
   GST_WARNING_OBJECT (el, "error: %s", __dbg);                          \
   gst_element_message_full (GST_ELEMENT(el), GST_MESSAGE_ERROR,         \
     err->domain, err->code,                                             \
@@ -176,8 +178,10 @@
   g_clear_error (&err); \
 } G_STMT_END
 
-#define GST_ELEMENT_WARNING_FROM_ERROR(el, err) G_STMT_START { \
-  gchar *__dbg = g_strdup (err->message);                               \
+#define GST_ELEMENT_WARNING_FROM_ERROR(el, err) G_STMT_START {          \
+  gchar *__dbg;                                                         \
+  g_assert (err != NULL);                                               \
+  __dbg = g_strdup (err->message);                                      \
   GST_WARNING_OBJECT (el, "error: %s", __dbg);                          \
   gst_element_message_full (GST_ELEMENT(el), GST_MESSAGE_WARNING,       \
     err->domain, err->code,                                             \
diff --git a/sys/androidmedia/gstamcaudiodec.c b/sys/androidmedia/gstamcaudiodec.c
index ce86a96..fbd6d09 100644
--- a/sys/androidmedia/gstamcaudiodec.c
+++ b/sys/androidmedia/gstamcaudiodec.c
@@ -493,8 +493,10 @@
   is_eos = ! !(buffer_info.flags & BUFFER_FLAG_END_OF_STREAM);
 
   buf = gst_amc_codec_get_output_buffer (self->codec, idx, &err);
-  if (!buf)
+  if (err)
     goto failed_to_get_output_buffer;
+  else if (!buf)
+    goto got_null_output_buffer;
 
   if (buffer_info.size > 0) {
     GstBuffer *outbuf;
@@ -699,6 +701,22 @@
     g_mutex_unlock (&self->drain_lock);
     return;
   }
+
+got_null_output_buffer:
+  {
+    GST_ELEMENT_ERROR (self, LIBRARY, SETTINGS, (NULL),
+        ("Got no output buffer"));
+    gst_pad_push_event (GST_AUDIO_DECODER_SRC_PAD (self), gst_event_new_eos ());
+    gst_pad_pause_task (GST_AUDIO_DECODER_SRC_PAD (self));
+    self->downstream_flow_ret = GST_FLOW_ERROR;
+    GST_AUDIO_DECODER_STREAM_UNLOCK (self);
+    g_mutex_lock (&self->drain_lock);
+    self->draining = FALSE;
+    g_cond_broadcast (&self->drain_cond);
+    g_mutex_unlock (&self->drain_lock);
+    return;
+  }
+
 invalid_buffer_size:
   {
     GST_ELEMENT_ERROR (self, LIBRARY, FAILED, (NULL),
diff --git a/sys/androidmedia/gstamcvideodec.c b/sys/androidmedia/gstamcvideodec.c
index 1581d06..f024b4c 100644
--- a/sys/androidmedia/gstamcvideodec.c
+++ b/sys/androidmedia/gstamcvideodec.c
@@ -485,6 +485,21 @@
     self->surface = NULL;
   }
 
+  if (self->listener) {
+    JNIEnv *env = gst_amc_jni_get_env ();
+    GError *err = NULL;
+
+    if (!gst_amc_jni_call_void_method (env, &err, self->listener,
+            self->set_context_id, GST_AMC_VIDEO_DEC_TO_JLONG (NULL))) {
+      GST_ERROR_OBJECT (self, "Failed to unset back pointer on the listener. "
+          "crashes/hangs may ensue: %s", err ? err->message : "Unknown");
+      GST_ELEMENT_ERROR_FROM_ERROR (self, err);
+    }
+
+    gst_amc_jni_object_unref (env, self->listener);
+  }
+  self->listener = NULL;
+
   if (self->codec) {
     GError *err = NULL;
 
@@ -899,11 +914,17 @@
           "frames for frame %u", sync, diff, sync->gl_frame_no);
     }
 
-    GST_TRACE ("gl_sync %p release_output_buffer idx %u frame %u", sync,
-        sync->buffer_idx, sync->gl_frame_no);
+    GST_TRACE ("gl_sync %p release_output_buffer idx %u frame %u render %s",
+        sync, sync->buffer_idx, sync->gl_frame_no, render ? "TRUE" : "FALSE");
 
     /* Release the frame into the surface */
     sync->sink->gl_released_frame_count++;
+    if (!render) {
+      /* Advance the ready counter ourselves if we aren't going to render
+       * and therefore receive a listener callback */
+      sync->sink->gl_ready_frame_count++;
+    }
+
     if (!gst_amc_codec_release_output_buffer (sync->sink->codec,
             sync->buffer_idx, render, &error)) {
       GST_ERROR_OBJECT (sync->sink,
@@ -989,8 +1010,8 @@
   if (!af_meta) {
     GST_WARNING ("Failed to retreive the transformation meta from the "
         "gl_sync %p buffer %p", sync, sync->buffer);
-  } else if (gst_amc_surface_texture_get_transform_matrix (sync->surface->
-          texture, matrix, &error)) {
+  } else if (gst_amc_surface_texture_get_transform_matrix (sync->
+          surface->texture, matrix, &error)) {
 
     gst_video_affine_transformation_meta_apply_matrix (af_meta, matrix);
     gst_video_affine_transformation_meta_apply_matrix (af_meta, yflip_matrix);
@@ -1080,7 +1101,7 @@
     /* Frames are currently pushed in order and waits need to be performed
      * in the same order */
 
-    end_time = 30 * G_TIME_SPAN_MILLISECOND + tmp->released_ts;
+    end_time = wait ? 30 * G_TIME_SPAN_MILLISECOND + tmp->released_ts : -1;
     if (!_amc_gl_possibly_wait_for_gl_sync (tmp, end_time))
       ret = FALSE;
 
@@ -1271,9 +1292,12 @@
   is_eos = ! !(buffer_info.flags & BUFFER_FLAG_END_OF_STREAM);
 
   buf = gst_amc_codec_get_output_buffer (self->codec, idx, &err);
-  if (!buf)
+  if (err)
     goto failed_to_get_output_buffer;
 
+  if (self->codec_config != AMC_CODEC_CONFIG_WITH_SURFACE && !buf)
+    goto got_null_output_buffer;
+
   if (frame
       && (deadline =
           gst_video_decoder_get_max_decode_time (GST_VIDEO_DECODER (self),
@@ -1282,7 +1306,7 @@
         "Frame is too late, dropping (deadline %" GST_STIME_FORMAT ")",
         GST_STIME_ARGS (deadline));
     flow_ret = gst_video_decoder_drop_frame (GST_VIDEO_DECODER (self), frame);
-  } else if (self->codec_config == AMC_CODEC_CONFIG_WITH_SURFACE) {
+  } else if (frame && self->codec_config == AMC_CODEC_CONFIG_WITH_SURFACE) {
     GstBuffer *outbuf;
     GstGLSyncMeta *sync_meta;
     GstVideoCodecState *state;
@@ -1346,6 +1370,7 @@
         sync);
     sync_meta->set_sync = _amc_gl_set_sync;
     sync_meta->wait = _amc_gl_wait;
+    sync_meta->wait_cpu = _amc_gl_wait;
     sync_meta->copy = _amc_gl_copy;
     sync_meta->free = _amc_gl_free;
 
@@ -1442,8 +1467,10 @@
     flow_ret = gst_video_decoder_drop_frame (GST_VIDEO_DECODER (self), frame);
   }
 
-  gst_amc_buffer_free (buf);
-  buf = NULL;
+  if (buf) {
+    gst_amc_buffer_free (buf);
+    buf = NULL;
+  }
 
   if (release_buffer) {
     if (!gst_amc_codec_release_output_buffer (self->codec, idx, FALSE, &err)) {
@@ -1574,6 +1601,21 @@
     return;
   }
 
+got_null_output_buffer:
+  {
+    GST_ELEMENT_ERROR (self, LIBRARY, SETTINGS, (NULL),
+        ("Got no output buffer"));
+    gst_pad_push_event (GST_VIDEO_DECODER_SRC_PAD (self), gst_event_new_eos ());
+    gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
+    self->downstream_flow_ret = GST_FLOW_ERROR;
+    GST_VIDEO_DECODER_STREAM_UNLOCK (self);
+    g_mutex_lock (&self->drain_lock);
+    self->draining = FALSE;
+    g_cond_broadcast (&self->drain_cond);
+    g_mutex_unlock (&self->drain_lock);
+    return;
+  }
+
 invalid_buffer:
   {
     GST_ELEMENT_ERROR (self, LIBRARY, SETTINGS, (NULL),
@@ -1590,6 +1632,10 @@
   }
 gl_output_error:
   {
+    if (buf) {
+      gst_amc_buffer_free (buf);
+      buf = NULL;
+    }
     gst_pad_push_event (GST_VIDEO_DECODER_SRC_PAD (self), gst_event_new_eos ());
     gst_pad_pause_task (GST_VIDEO_DECODER_SRC_PAD (self));
     self->downstream_flow_ret = GST_FLOW_NOT_NEGOTIATED;
@@ -1659,7 +1705,6 @@
   jobject listener = NULL;
   jclass listener_cls = NULL;
   jmethodID constructor_id = 0;
-  jmethodID set_context_id = 0;
 
   JNINativeMethod amcOnFrameAvailableListener = {
     "native_onFrameAvailable",
@@ -1687,9 +1732,9 @@
     goto done;
   }
 
-  set_context_id =
+  decoder->set_context_id =
       gst_amc_jni_get_method_id (env, err, listener_cls, "setContext", "(J)V");
-  if (!set_context_id) {
+  if (!decoder->set_context_id) {
     goto done;
   }
 
@@ -1700,7 +1745,7 @@
   }
 
   if (!gst_amc_jni_call_void_method (env, err, listener,
-          set_context_id, GST_AMC_VIDEO_DEC_TO_JLONG (decoder))) {
+          decoder->set_context_id, GST_AMC_VIDEO_DEC_TO_JLONG (decoder))) {
     gst_amc_jni_object_unref (env, listener);
     listener = NULL;
   }
@@ -1919,7 +1964,6 @@
   } else if (self->downstream_supports_gl && !self->surface) {
     int ret = TRUE;
     JNIEnv *env = NULL;
-    jobject listener = NULL;
     GstAmcSurfaceTexture *surface_texture = NULL;
 
     env = gst_amc_jni_get_env ();
@@ -1929,15 +1973,24 @@
       return FALSE;
     }
 
-    listener =
+    if (self->listener) {
+      if (!gst_amc_jni_call_void_method (env, &err, self->listener,
+              self->set_context_id, GST_AMC_VIDEO_DEC_TO_JLONG (NULL))) {
+        ret = FALSE;
+        goto done;
+      }
+
+      gst_amc_jni_object_unref (env, self->listener);
+    }
+    self->listener =
         gst_amc_video_dec_new_on_frame_available_listener (self, env, &err);
-    if (!listener) {
+    if (!self->listener) {
       ret = FALSE;
       goto done;
     }
 
     if (!gst_amc_surface_texture_set_on_frame_available_listener
-        (surface_texture, listener, &err)) {
+        (surface_texture, self->listener, &err)) {
       ret = FALSE;
       goto done;
     }
@@ -1947,7 +2000,6 @@
 
   done:
     g_object_unref (surface_texture);
-    gst_amc_jni_object_unref (env, listener);
     if (!ret) {
       GST_ELEMENT_ERROR_FROM_ERROR (self, err);
       return FALSE;
@@ -2487,6 +2539,10 @@
 {
   GstAmcVideoDec *self = JLONG_TO_GST_AMC_VIDEO_DEC (context);
 
+  /* apparently we can be called after the decoder has been closed */
+  if (!self)
+    return;
+
   g_mutex_lock (&self->gl_lock);
   self->gl_ready_frame_count++;
   GST_LOG_OBJECT (self, "frame %u available", self->gl_ready_frame_count);
diff --git a/sys/androidmedia/gstamcvideodec.h b/sys/androidmedia/gstamcvideodec.h
index eca39fe..039a785 100644
--- a/sys/androidmedia/gstamcvideodec.h
+++ b/sys/androidmedia/gstamcvideodec.h
@@ -100,6 +100,9 @@
   gboolean downstream_supports_gl;
   GstFlowReturn downstream_flow_ret;
 
+  jobject listener;
+  jmethodID set_context_id;
+
   gboolean gl_mem_attached;
   GstGLMemory *oes_mem;
   GError *gl_error;
diff --git a/sys/androidmedia/gstamcvideoenc.c b/sys/androidmedia/gstamcvideoenc.c
index 5198fe6..fc4436c 100644
--- a/sys/androidmedia/gstamcvideoenc.c
+++ b/sys/androidmedia/gstamcvideoenc.c
@@ -1023,8 +1023,10 @@
   is_eos = ! !(buffer_info.flags & BUFFER_FLAG_END_OF_STREAM);
 
   buf = gst_amc_codec_get_output_buffer (self->codec, idx, &err);
-  if (!buf)
+  if (err)
     goto failed_to_get_output_buffer;
+  else if (!buf)
+    goto got_null_output_buffer;
 
   flow_ret =
       gst_amc_video_enc_handle_output_frame (self, buf, &buffer_info, frame);
@@ -1147,7 +1149,22 @@
     GST_ELEMENT_ERROR_FROM_ERROR (self, err);
     gst_pad_push_event (GST_VIDEO_ENCODER_SRC_PAD (self), gst_event_new_eos ());
     gst_pad_pause_task (GST_VIDEO_ENCODER_SRC_PAD (self));
-    self->downstream_flow_ret = GST_FLOW_NOT_NEGOTIATED;
+    self->downstream_flow_ret = GST_FLOW_ERROR;
+    GST_VIDEO_ENCODER_STREAM_UNLOCK (self);
+    g_mutex_lock (&self->drain_lock);
+    self->draining = FALSE;
+    g_cond_broadcast (&self->drain_cond);
+    g_mutex_unlock (&self->drain_lock);
+    return;
+  }
+
+got_null_output_buffer:
+  {
+    GST_ELEMENT_ERROR (self, LIBRARY, SETTINGS, (NULL),
+        ("Got no output buffer"));
+    gst_pad_push_event (GST_VIDEO_ENCODER_SRC_PAD (self), gst_event_new_eos ());
+    gst_pad_pause_task (GST_VIDEO_ENCODER_SRC_PAD (self));
+    self->downstream_flow_ret = GST_FLOW_ERROR;
     GST_VIDEO_ENCODER_STREAM_UNLOCK (self);
     g_mutex_lock (&self->drain_lock);
     self->draining = FALSE;
diff --git a/sys/applemedia-nonpublic/Makefile.in b/sys/applemedia-nonpublic/Makefile.in
index a898639..cf293cc 100644
--- a/sys/applemedia-nonpublic/Makefile.in
+++ b/sys/applemedia-nonpublic/Makefile.in
@@ -125,16 +125,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -365,7 +364,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -387,7 +385,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -409,9 +406,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -573,6 +567,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -586,8 +581,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -674,8 +667,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -727,6 +718,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -747,6 +739,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -784,7 +778,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/applemedia/Makefile.am b/sys/applemedia/Makefile.am
index c95b059..87b80b5 100644
--- a/sys/applemedia/Makefile.am
+++ b/sys/applemedia/Makefile.am
@@ -3,10 +3,12 @@
 libgstapplemedia_la_SOURCES =			\
 	plugin.m				\
 	vtutil.c				\
+	corevideomemory.c			\
 	corevideobuffer.c			\
 	coremediabuffer.c			\
-	videotexturecache.m 		\
-	atdec.c
+	videotexturecache.m 			\
+	atdec.c 				\
+	glcontexthelper.c
 
 libgstapplemedia_la_CPPFLAGS =			\
 	-Dgst_core_media_buffer_new=gst_core_media_buffer_priv_new		\
@@ -73,7 +75,8 @@
 	videotexturecache.h			\
 	atdec.h 				\
 	iosassetsrc.h				\
-	avfassetsrc.h
+	avfassetsrc.h  				\
+	glcontexthelper.h
 
 if HAVE_IOS
 
diff --git a/sys/applemedia/Makefile.in b/sys/applemedia/Makefile.in
index 7d4155b..d61e070 100644
--- a/sys/applemedia/Makefile.in
+++ b/sys/applemedia/Makefile.in
@@ -146,16 +146,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -198,10 +197,10 @@
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
 am__libgstapplemedia_la_SOURCES_DIST = plugin.m vtutil.c \
-	corevideobuffer.c coremediabuffer.c videotexturecache.m \
-	atdec.c iosassetsrc.m qtkitvideosrc.m iosurfacememory.c \
-	avfvideosrc.m avfassetsrc.m avsamplevideosink.m vtenc.c \
-	vtdec.c
+	corevideomemory.c corevideobuffer.c coremediabuffer.c \
+	videotexturecache.m atdec.c glcontexthelper.c iosassetsrc.m \
+	qtkitvideosrc.m iosurfacememory.c avfvideosrc.m avfassetsrc.m \
+	avsamplevideosink.m vtenc.c vtdec.c
 @HAVE_IOS_TRUE@am__objects_1 = libgstapplemedia_la-iosassetsrc.lo
 @HAVE_IOS_FALSE@am__objects_2 = libgstapplemedia_la-qtkitvideosrc.lo \
 @HAVE_IOS_FALSE@	libgstapplemedia_la-iosurfacememory.lo
@@ -213,11 +212,13 @@
 @HAVE_VIDEOTOOLBOX_TRUE@	libgstapplemedia_la-vtdec.lo
 am_libgstapplemedia_la_OBJECTS = libgstapplemedia_la-plugin.lo \
 	libgstapplemedia_la-vtutil.lo \
+	libgstapplemedia_la-corevideomemory.lo \
 	libgstapplemedia_la-corevideobuffer.lo \
 	libgstapplemedia_la-coremediabuffer.lo \
 	libgstapplemedia_la-videotexturecache.lo \
-	libgstapplemedia_la-atdec.lo $(am__objects_1) $(am__objects_2) \
-	$(am__objects_3) $(am__objects_4)
+	libgstapplemedia_la-atdec.lo \
+	libgstapplemedia_la-glcontexthelper.lo $(am__objects_1) \
+	$(am__objects_2) $(am__objects_3) $(am__objects_4)
 libgstapplemedia_la_OBJECTS = $(am_libgstapplemedia_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -392,7 +393,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -414,7 +414,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -436,9 +435,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -600,6 +596,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -613,8 +610,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -701,8 +696,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -754,6 +747,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -774,6 +768,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -811,7 +807,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -852,9 +847,10 @@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
 plugin_LTLIBRARIES = libgstapplemedia.la
-libgstapplemedia_la_SOURCES = plugin.m vtutil.c corevideobuffer.c \
-	coremediabuffer.c videotexturecache.m atdec.c $(am__append_2) \
-	$(am__append_4) $(am__append_6) $(am__append_8)
+libgstapplemedia_la_SOURCES = plugin.m vtutil.c corevideomemory.c \
+	corevideobuffer.c coremediabuffer.c videotexturecache.m \
+	atdec.c glcontexthelper.c $(am__append_2) $(am__append_4) \
+	$(am__append_6) $(am__append_8)
 libgstapplemedia_la_CPPFLAGS = \
 	-Dgst_core_media_buffer_new=gst_core_media_buffer_priv_new		\
 	-Dgst_core_media_buffer_get_type=gst_core_media_buffer_priv_get_type	\
@@ -903,7 +899,8 @@
 	videotexturecache.h			\
 	atdec.h 				\
 	iosassetsrc.h				\
-	avfassetsrc.h
+	avfassetsrc.h  				\
+	glcontexthelper.h
 
 all: all-am
 
@@ -989,6 +986,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-avsamplevideosink.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-coremediabuffer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-corevideobuffer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-corevideomemory.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-glcontexthelper.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-iosassetsrc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-iosurfacememory.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstapplemedia_la-plugin.Plo@am__quote@
@@ -1029,6 +1028,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_la-vtutil.lo `test -f 'vtutil.c' || echo '$(srcdir)/'`vtutil.c
 
+libgstapplemedia_la-corevideomemory.lo: corevideomemory.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_la-corevideomemory.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_la-corevideomemory.Tpo -c -o libgstapplemedia_la-corevideomemory.lo `test -f 'corevideomemory.c' || echo '$(srcdir)/'`corevideomemory.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_la-corevideomemory.Tpo $(DEPDIR)/libgstapplemedia_la-corevideomemory.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='corevideomemory.c' object='libgstapplemedia_la-corevideomemory.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_la-corevideomemory.lo `test -f 'corevideomemory.c' || echo '$(srcdir)/'`corevideomemory.c
+
 libgstapplemedia_la-corevideobuffer.lo: corevideobuffer.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_la-corevideobuffer.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_la-corevideobuffer.Tpo -c -o libgstapplemedia_la-corevideobuffer.lo `test -f 'corevideobuffer.c' || echo '$(srcdir)/'`corevideobuffer.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_la-corevideobuffer.Tpo $(DEPDIR)/libgstapplemedia_la-corevideobuffer.Plo
@@ -1050,6 +1056,13 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_la-atdec.lo `test -f 'atdec.c' || echo '$(srcdir)/'`atdec.c
 
+libgstapplemedia_la-glcontexthelper.lo: glcontexthelper.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_la-glcontexthelper.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_la-glcontexthelper.Tpo -c -o libgstapplemedia_la-glcontexthelper.lo `test -f 'glcontexthelper.c' || echo '$(srcdir)/'`glcontexthelper.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_la-glcontexthelper.Tpo $(DEPDIR)/libgstapplemedia_la-glcontexthelper.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='glcontexthelper.c' object='libgstapplemedia_la-glcontexthelper.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -c -o libgstapplemedia_la-glcontexthelper.lo `test -f 'glcontexthelper.c' || echo '$(srcdir)/'`glcontexthelper.c
+
 libgstapplemedia_la-iosurfacememory.lo: iosurfacememory.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstapplemedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgstapplemedia_la_CPPFLAGS) $(CPPFLAGS) $(libgstapplemedia_la_CFLAGS) $(CFLAGS) -MT libgstapplemedia_la-iosurfacememory.lo -MD -MP -MF $(DEPDIR)/libgstapplemedia_la-iosurfacememory.Tpo -c -o libgstapplemedia_la-iosurfacememory.lo `test -f 'iosurfacememory.c' || echo '$(srcdir)/'`iosurfacememory.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstapplemedia_la-iosurfacememory.Tpo $(DEPDIR)/libgstapplemedia_la-iosurfacememory.Plo
diff --git a/sys/applemedia/avfassetsrc.m b/sys/applemedia/avfassetsrc.m
index 38b986c..40496a4 100644
--- a/sys/applemedia/avfassetsrc.m
+++ b/sys/applemedia/avfassetsrc.m
@@ -1079,7 +1079,7 @@
     return NULL;
   }
 
-  buf = gst_core_media_buffer_new (cmbuf, FALSE, TRUE);
+  buf = gst_core_media_buffer_new (cmbuf, FALSE);
   CFRelease (cmbuf);
   if (buf == NULL)
     return NULL;
diff --git a/sys/applemedia/avfvideosrc.m b/sys/applemedia/avfvideosrc.m
index 075adff..1c8f633 100644
--- a/sys/applemedia/avfvideosrc.m
+++ b/sys/applemedia/avfvideosrc.m
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2010 Ole André Vadla Ravnås <oleavr@soundrop.com>
+ * Copyright (C) 2016 Alessandro Decina <twi@centricular.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -22,6 +23,7 @@
 #endif
 
 #include "avfvideosrc.h"
+#include "glcontexthelper.h"
 
 #import <AVFoundation/AVFoundation.h>
 #if !HAVE_IOS
@@ -55,7 +57,7 @@
 #else
         GST_VIDEO_CAPS_MAKE_WITH_FEATURES
         (GST_CAPS_FEATURE_MEMORY_GL_MEMORY,
-            "BGRA") ", "
+            "NV12") ", "
         "texture-target = " GST_GL_TEXTURE_TARGET_2D_STR "; "
 #endif
         "video/x-raw, "
@@ -114,6 +116,7 @@
   BOOL captureScreenMouseClicks;
 
   BOOL useVideoMeta;
+  GstGLContextHelper *ctxh;
   GstVideoTextureCache *textureCache;
 }
 
@@ -147,9 +150,11 @@
 - (BOOL)unlock;
 - (BOOL)unlockStop;
 - (BOOL)query:(GstQuery *)query;
+- (void)setContext:(GstContext *)context;
 - (GstStateChangeReturn)changeState:(GstStateChange)transition;
 - (GstFlowReturn)create:(GstBuffer **)buf;
 - (GstCaps *)fixate:(GstCaps *)caps;
+- (BOOL)decideAllocation:(GstQuery *)query;
 - (void)updateStatistics;
 - (void)captureOutput:(AVCaptureOutput *)captureOutput
 didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
@@ -180,7 +185,7 @@
     captureScreenMouseClicks = NO;
     useVideoMeta = NO;
     textureCache = NULL;
-
+    ctxh = gst_gl_context_helper_new (element);
     mainQueue =
         dispatch_queue_create ("org.freedesktop.gstreamer.avfvideosrc.main", NULL);
     workerQueue =
@@ -421,7 +426,7 @@
 #if !HAVE_IOS
   GstVideoFormat gl_format = GST_VIDEO_FORMAT_UYVY;
 #else
-  GstVideoFormat gl_format = GST_VIDEO_FORMAT_BGRA;
+  GstVideoFormat gl_format = GST_VIDEO_FORMAT_NV12;
 #endif
 
   GST_DEBUG_OBJECT (element, "Getting device caps");
@@ -490,7 +495,7 @@
 
   result_gl_caps = gst_caps_simplify (gst_caps_merge (result_gl_caps, result_caps));
 
-  GST_INFO_OBJECT (element, "Device returned the following caps %" GST_PTR_FORMAT, result_gl_caps);
+  GST_DEBUG_OBJECT (element, "Device returned the following caps %" GST_PTR_FORMAT, result_gl_caps);
 
   return result_gl_caps;
 }
@@ -521,16 +526,24 @@
           [[rate valueForKey:@"maxFrameRate"] getValue:&max_frame_rate];
           if ((framerate >= min_frame_rate - 0.00001) &&
               (framerate <= max_frame_rate + 0.00001)) {
-            NSValue *min_frame_duration, *max_frame_duration;
-
+            NSValue *frame_duration_value;
             found_framerate = TRUE;
-            min_frame_duration = [rate valueForKey:@"minFrameDuration"];
-            max_frame_duration = [rate valueForKey:@"maxFrameDuration"];
-            [device setValue:min_frame_duration forKey:@"activeVideoMinFrameDuration"];
+            if (min_frame_rate == max_frame_rate) {
+              /* on mac we get tight ranges and an exception is raised if the
+               * frame duration doesn't match the one reported in the range to
+               * the last decimal point
+               */
+              frame_duration_value = [rate valueForKey:@"minFrameDuration"];
+            } else {
+              double frame_duration;
+
+              gst_util_fraction_to_double (info->fps_d, info->fps_n, &frame_duration);
+              frame_duration_value = [NSNumber numberWithDouble:frame_duration];
+            }
+            [device setValue:frame_duration_value forKey:@"activeVideoMinFrameDuration"];
             @try {
               /* Only available on OSX >= 10.8 and iOS >= 7.0 */
-              // Restrict activeVideoMaxFrameDuration to the minimum value so we get a better capture frame rate
-              [device setValue:min_frame_duration forKey:@"activeVideoMaxFrameDuration"];
+              [device setValue:frame_duration_value forKey:@"activeVideoMaxFrameDuration"];
             } @catch (NSException *exception) {
               if (![[exception name] isEqualToString:NSUndefinedKeyException]) {
                 GST_WARNING ("An unexcepted error occured: %s",
@@ -683,8 +696,6 @@
   dispatch_sync (mainQueue, ^{
     int newformat;
 
-    g_assert (![session isRunning]);
-
     if (captureScreen) {
 #if !HAVE_IOS
       AVCaptureScreenInput *screenInput = (AVCaptureScreenInput *)input;
@@ -745,26 +756,11 @@
         dictionaryWithObject:[NSNumber numberWithInt:newformat]
         forKey:(NSString*)kCVPixelBufferPixelFormatTypeKey];
 
-    if (caps)
-      gst_caps_unref (caps);
-    caps = gst_caps_copy (new_caps);
+    gst_caps_replace (&caps, new_caps);
+    GST_INFO_OBJECT (element, "configured caps %"GST_PTR_FORMAT, caps);
 
-    if (textureCache)
-      gst_video_texture_cache_free (textureCache);
-    textureCache = NULL;
-
-    GstCapsFeatures *features = gst_caps_get_features (caps, 0);
-    if (gst_caps_features_contains (features, GST_CAPS_FEATURE_MEMORY_GL_MEMORY)) {
-      GstGLContext *context = query_gl_context (GST_BASE_SRC_PAD (baseSrc));
-      textureCache = gst_video_texture_cache_new (context);
-      gst_video_texture_cache_set_format (textureCache, format, caps);
-      gst_object_unref (context);
-    }
-
-    GST_INFO_OBJECT (element, "configured caps %"GST_PTR_FORMAT
-        ", pushing textures %d", caps, textureCache != NULL);
-
-    [session startRunning];
+    if (![session isRunning])
+      [session startRunning];
 
     /* Unlock device configuration only after session is started so the session
      * won't reset the capture formats */
@@ -801,9 +797,13 @@
   bufQueue = nil;
 
   if (textureCache)
-      gst_video_texture_cache_free (textureCache);
+    gst_video_texture_cache_free (textureCache);
   textureCache = NULL;
 
+  if (ctxh)
+    gst_gl_context_helper_free (ctxh);
+  ctxh = NULL;
+
   return YES;
 }
 
@@ -940,7 +940,7 @@
     }
   }
 
-  *buf = gst_core_media_buffer_new (sbuf, useVideoMeta, textureCache == NULL);
+  *buf = gst_core_media_buffer_new (sbuf, useVideoMeta);
   if (*buf == NULL) {
     CFRelease (sbuf);
     return GST_FLOW_ERROR;
@@ -964,50 +964,57 @@
   return GST_FLOW_OK;
 }
 
-static GstGLContext *
-query_gl_context (GstPad *srcpad)
-{
-  GstGLContext *gl_context = NULL;
-  GstContext *context = NULL;
-  GstQuery *query;
-
-  query = gst_query_new_context ("gst.gl.local_context");
-  if (gst_pad_peer_query (srcpad, query)) {
-    gst_query_parse_context (query, &context);
-    if (context) {
-      const GstStructure *s = gst_context_get_structure (context);
-      gst_structure_get (s, "context", GST_GL_TYPE_CONTEXT, &gl_context, NULL);
-    }
-  }
-  gst_query_unref (query);
-
-  return gl_context;
-}
-
-static gboolean
-caps_filter_out_gl_memory (GstCapsFeatures * features, GstStructure * structure,
-    gpointer user_data)
-{
-  return !gst_caps_features_contains (features,
-      GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
-}
-
-
 - (GstCaps *)fixate:(GstCaps *)new_caps
 {
-  GstGLContext *context;
+  GstStructure *structure;
 
   new_caps = gst_caps_make_writable (new_caps);
-
-  context = query_gl_context (GST_BASE_SRC_PAD (baseSrc));
-  if (!context)
-    gst_caps_filter_and_map_in_place (new_caps, caps_filter_out_gl_memory, NULL);
-  else
-    gst_object_unref (context);
+  new_caps = gst_caps_truncate (new_caps);
+  structure = gst_caps_get_structure (new_caps, 0);
+  /* crank up to 11. This is what the presets do, but we don't use the presets
+   * in ios >= 7.0 */
+  gst_structure_fixate_field_nearest_int (structure, "height", G_MAXINT);
+  gst_structure_fixate_field_nearest_fraction (structure, "framerate", G_MAXINT, 1);
 
   return gst_caps_fixate (new_caps);
 }
 
+- (BOOL)decideAllocation:(GstQuery *)query
+{
+  GstCaps *alloc_caps;
+  GstCapsFeatures *features;
+  gboolean ret;
+
+  ret = GST_BASE_SRC_CLASS (parent_class)->decide_allocation (baseSrc, query);
+  if (!ret)
+    return ret;
+
+  gst_query_parse_allocation (query, &alloc_caps, NULL);
+  features = gst_caps_get_features (alloc_caps, 0);
+  if (gst_caps_features_contains (features, GST_CAPS_FEATURE_MEMORY_GL_MEMORY)) {
+    gst_gl_context_helper_ensure_context (ctxh);
+    GST_INFO_OBJECT (element, "pushing textures, context %p old context %p",
+        ctxh->context, textureCache ? textureCache->ctx : NULL);
+    if (textureCache && textureCache->ctx != ctxh->context) {
+      gst_video_texture_cache_free (textureCache);
+      textureCache = NULL;
+    }
+    textureCache = gst_video_texture_cache_new (ctxh->context);
+    gst_video_texture_cache_set_format (textureCache, format, alloc_caps);
+  }
+
+  return TRUE;
+}
+
+- (void)setContext:(GstContext *)context
+{
+  GST_INFO_OBJECT (element, "setting context %s",
+          gst_context_get_context_type (context));
+  gst_gl_handle_set_context (element, context,
+          &ctxh->display, &ctxh->other_context);
+  GST_ELEMENT_CLASS (parent_class)->set_context (element, context);
+}
+
 - (void)getSampleBuffer:(CMSampleBufferRef)sbuf
               timestamp:(GstClockTime *)outTimestamp
                duration:(GstClockTime *)outDuration
@@ -1136,10 +1143,12 @@
 static gboolean gst_avf_video_src_unlock_stop (GstBaseSrc * basesrc);
 static GstFlowReturn gst_avf_video_src_create (GstPushSrc * pushsrc,
     GstBuffer ** buf);
-static gboolean gst_avf_video_src_negotiate (GstBaseSrc * basesrc);
 static GstCaps * gst_avf_video_src_fixate (GstBaseSrc * bsrc,
     GstCaps * caps);
-
+static gboolean gst_avf_video_src_decide_allocation (GstBaseSrc * bsrc,
+    GstQuery * query);
+static void gst_avf_video_src_set_context (GstElement * element,
+        GstContext * context);
 
 static void
 gst_avf_video_src_class_init (GstAVFVideoSrcClass * klass)
@@ -1154,6 +1163,7 @@
   gobject_class->set_property = gst_avf_video_src_set_property;
 
   gstelement_class->change_state = gst_avf_video_src_change_state;
+  gstelement_class->set_context = gst_avf_video_src_set_context;
 
   gstbasesrc_class->get_caps = gst_avf_video_src_get_caps;
   gstbasesrc_class->set_caps = gst_avf_video_src_set_caps;
@@ -1163,7 +1173,7 @@
   gstbasesrc_class->unlock = gst_avf_video_src_unlock;
   gstbasesrc_class->unlock_stop = gst_avf_video_src_unlock_stop;
   gstbasesrc_class->fixate = gst_avf_video_src_fixate;
-  gstbasesrc_class->negotiate = gst_avf_video_src_negotiate;
+  gstbasesrc_class->decide_allocation = gst_avf_video_src_decide_allocation;
 
   gstpushsrc_class->create = gst_avf_video_src_create;
 
@@ -1406,16 +1416,6 @@
   return ret;
 }
 
-static gboolean
-gst_avf_video_src_negotiate (GstBaseSrc * basesrc)
-{
-  /* FIXME: We don't support reconfiguration yet */
-  if (gst_pad_has_current_caps (GST_BASE_SRC_PAD (basesrc)))
-    return TRUE;
-
-  return GST_BASE_SRC_CLASS (parent_class)->negotiate (basesrc);
-}
-
 
 static GstCaps *
 gst_avf_video_src_fixate (GstBaseSrc * bsrc, GstCaps * caps)
@@ -1428,3 +1428,24 @@
 
   return ret;
 }
+
+static gboolean
+gst_avf_video_src_decide_allocation (GstBaseSrc * bsrc,
+    GstQuery * query)
+{
+  gboolean ret;
+
+  OBJC_CALLOUT_BEGIN ();
+  ret = [GST_AVF_VIDEO_SRC_IMPL (bsrc) decideAllocation:query];
+  OBJC_CALLOUT_END ();
+
+  return ret;
+}
+
+static void
+gst_avf_video_src_set_context (GstElement * element, GstContext * context)
+{
+  OBJC_CALLOUT_BEGIN ();
+  [GST_AVF_VIDEO_SRC_IMPL (element) setContext:context];
+  OBJC_CALLOUT_END ();
+}
diff --git a/sys/applemedia/coremediabuffer.c b/sys/applemedia/coremediabuffer.c
index 681fe14..cf34224 100644
--- a/sys/applemedia/coremediabuffer.c
+++ b/sys/applemedia/coremediabuffer.c
@@ -19,15 +19,42 @@
  * Boston, MA 02110-1301, USA.
  */
 
+#include "corevideobuffer.h"
 #include "coremediabuffer.h"
+#include "corevideomemory.h"
+
+static const GstMetaInfo *gst_core_media_meta_get_info (void);
+
+static void
+gst_core_media_meta_add (GstBuffer * buffer, CMSampleBufferRef sample_buf,
+    CVImageBufferRef image_buf, CMBlockBufferRef block_buf)
+{
+  GstCoreMediaMeta *meta;
+
+  meta =
+      (GstCoreMediaMeta *) gst_buffer_add_meta (buffer,
+      gst_core_media_meta_get_info (), NULL);
+  CFRetain (sample_buf);
+  if (image_buf)
+    CVBufferRetain (image_buf);
+  if (block_buf)
+    CFRetain (block_buf);
+  meta->sample_buf = sample_buf;
+  meta->image_buf = image_buf;
+  meta->block_buf = block_buf;
+  if (image_buf != NULL && CFGetTypeID (image_buf) == CVPixelBufferGetTypeID ())
+    meta->pixel_buf = (CVPixelBufferRef) image_buf;
+  else
+    meta->pixel_buf = NULL;
+}
 
 static void
 gst_core_media_meta_free (GstCoreMediaMeta * meta, GstBuffer * buf)
 {
   if (meta->image_buf != NULL) {
-    CVPixelBufferUnlockBaseAddress (meta->image_buf, 0);
     CVBufferRelease (meta->image_buf);
   }
+
   if (meta->block_buf != NULL) {
     CFRelease (meta->block_buf);
   }
@@ -35,6 +62,22 @@
   CFRelease (meta->sample_buf);
 }
 
+static gboolean
+gst_core_media_meta_transform (GstBuffer * transbuf, GstCoreMediaMeta * meta,
+    GstBuffer * buffer, GQuark type, GstMetaTransformCopy * data)
+{
+  if (!data->region) {
+    /* only copy if the complete data is copied as well */
+    gst_core_media_meta_add (transbuf, meta->sample_buf, meta->image_buf,
+        meta->block_buf);
+  } else {
+    GST_WARNING_OBJECT (transbuf,
+        "dropping Core Media metadata due to partial buffer");
+  }
+
+  return TRUE;                  /* retval unused */
+}
+
 GType
 gst_core_media_meta_api_get_type (void)
 {
@@ -58,7 +101,7 @@
         "GstCoreMediaMeta", sizeof (GstCoreMediaMeta),
         (GstMetaInitFunction) NULL,
         (GstMetaFreeFunction) gst_core_media_meta_free,
-        (GstMetaTransformFunction) NULL);
+        (GstMetaTransformFunction) gst_core_media_meta_transform);
     g_once_init_leave (&core_media_meta_info, meta);
   }
   return core_media_meta_info;
@@ -85,68 +128,6 @@
 }
 
 static gboolean
-gst_core_media_buffer_wrap_pixel_buffer (GstBuffer * buf, GstVideoInfo * info,
-    CVPixelBufferRef pixel_buf, gboolean * has_padding, gboolean map)
-{
-  guint n_planes;
-  gsize offset[GST_VIDEO_MAX_PLANES] = { 0 };
-  gint stride[GST_VIDEO_MAX_PLANES] = { 0 };
-  GstVideoMeta *video_meta;
-  UInt32 size;
-
-  if (map && CVPixelBufferLockBaseAddress (pixel_buf, 0) != kCVReturnSuccess) {
-    GST_ERROR ("Could not lock pixel buffer base address");
-    return FALSE;
-  }
-
-  *has_padding = FALSE;
-
-  if (CVPixelBufferIsPlanar (pixel_buf)) {
-    gint i, size = 0, plane_offset = 0;
-
-    n_planes = CVPixelBufferGetPlaneCount (pixel_buf);
-    for (i = 0; i < n_planes; i++) {
-      stride[i] = CVPixelBufferGetBytesPerRowOfPlane (pixel_buf, i);
-
-      if (stride[i] != GST_VIDEO_INFO_PLANE_STRIDE (info, i)) {
-        *has_padding = TRUE;
-      }
-
-      size = stride[i] * CVPixelBufferGetHeightOfPlane (pixel_buf, i);
-      offset[i] = plane_offset;
-      plane_offset += size;
-
-      if (map) {
-        gst_buffer_append_memory (buf,
-            gst_memory_new_wrapped (GST_MEMORY_FLAG_NO_SHARE,
-                CVPixelBufferGetBaseAddressOfPlane (pixel_buf, i), size, 0,
-                size, NULL, NULL));
-      }
-    }
-  } else {
-
-    n_planes = 1;
-    stride[0] = CVPixelBufferGetBytesPerRow (pixel_buf);
-    offset[0] = 0;
-    size = stride[0] * CVPixelBufferGetHeight (pixel_buf);
-
-    if (map) {
-      gst_buffer_append_memory (buf,
-          gst_memory_new_wrapped (GST_MEMORY_FLAG_NO_SHARE,
-              CVPixelBufferGetBaseAddress (pixel_buf), size, 0, size, NULL,
-              NULL));
-    }
-  }
-
-  video_meta =
-      gst_buffer_add_video_meta_full (buf, GST_VIDEO_FRAME_FLAG_NONE,
-      GST_VIDEO_INFO_FORMAT (info), info->width, info->height, n_planes, offset,
-      stride);
-
-  return TRUE;
-}
-
-static gboolean
 gst_core_media_buffer_wrap_block_buffer (GstBuffer * buf,
     CMBlockBufferRef block_buf)
 {
@@ -247,11 +228,10 @@
 
 GstBuffer *
 gst_core_media_buffer_new (CMSampleBufferRef sample_buf,
-    gboolean use_video_meta, gboolean map)
+    gboolean use_video_meta)
 {
   CVImageBufferRef image_buf;
   CMBlockBufferRef block_buf;
-  GstCoreMediaMeta *meta;
   GstBuffer *buf;
 
   image_buf = CMSampleBufferGetImageBuffer (sample_buf);
@@ -259,35 +239,22 @@
 
   buf = gst_buffer_new ();
 
-  meta = (GstCoreMediaMeta *) gst_buffer_add_meta (buf,
-      gst_core_media_meta_get_info (), NULL);
-  CFRetain (sample_buf);
-  if (image_buf)
-    CVBufferRetain (image_buf);
-  if (block_buf)
-    CFRetain (block_buf);
-  meta->sample_buf = sample_buf;
-  meta->image_buf = image_buf;
-  meta->pixel_buf = NULL;
-  meta->block_buf = block_buf;
+  gst_core_media_meta_add (buf, sample_buf, image_buf, block_buf);
 
   if (image_buf != NULL && CFGetTypeID (image_buf) == CVPixelBufferGetTypeID ()) {
     GstVideoInfo info;
     gboolean has_padding = FALSE;
+    CVPixelBufferRef pixel_buf = (CVPixelBufferRef) image_buf;
 
-    meta->pixel_buf = (CVPixelBufferRef) image_buf;
-    if (!gst_video_info_init_from_pixel_buffer (&info, meta->pixel_buf)) {
+    if (!gst_video_info_init_from_pixel_buffer (&info, pixel_buf)) {
       goto error;
     }
 
-    if (!gst_core_media_buffer_wrap_pixel_buffer (buf, &info, meta->pixel_buf,
-            &has_padding, map)) {
-      goto error;
-    }
+    gst_core_video_wrap_pixel_buffer (buf, &info, pixel_buf, &has_padding);
 
     /* If the video meta API is not supported, remove padding by
      * copying the core media buffer to a system memory buffer */
-    if (map && has_padding && !use_video_meta) {
+    if (has_padding && !use_video_meta) {
       GstBuffer *copy_buf;
       copy_buf = gst_core_media_buffer_new_from_buffer (buf, &info);
       if (!copy_buf) {
@@ -299,7 +266,7 @@
     }
 
   } else if (block_buf != NULL) {
-    if (map && !gst_core_media_buffer_wrap_block_buffer (buf, block_buf)) {
+    if (!gst_core_media_buffer_wrap_block_buffer (buf, block_buf)) {
       goto error;
     }
   } else {
diff --git a/sys/applemedia/coremediabuffer.h b/sys/applemedia/coremediabuffer.h
index 2b3b74d..bc18acf 100644
--- a/sys/applemedia/coremediabuffer.h
+++ b/sys/applemedia/coremediabuffer.h
@@ -43,8 +43,7 @@
 
 
 GstBuffer * gst_core_media_buffer_new      (CMSampleBufferRef sample_buf,
-                                            gboolean use_video_meta,
-                                            gboolean map);
+                                            gboolean use_video_meta);
 CVPixelBufferRef gst_core_media_buffer_get_pixel_buffer
                                            (GstBuffer * buf);
 GType gst_core_media_meta_api_get_type (void);
diff --git a/sys/applemedia/corevideobuffer.c b/sys/applemedia/corevideobuffer.c
index 269e19d..67d899c 100644
--- a/sys/applemedia/corevideobuffer.c
+++ b/sys/applemedia/corevideobuffer.c
@@ -18,15 +18,40 @@
  */
 
 #include "corevideobuffer.h"
+#include "corevideomemory.h"
+
+static const GstMetaInfo *gst_core_video_meta_get_info (void);
+
+static void
+gst_core_video_meta_add (GstBuffer * buffer, CVBufferRef cvbuf)
+{
+  GstCoreVideoMeta *meta;
+
+  meta = (GstCoreVideoMeta *) gst_buffer_add_meta (buffer,
+      gst_core_video_meta_get_info (), NULL);
+  meta->cvbuf = CVBufferRetain (cvbuf);
+  meta->pixbuf = (CVPixelBufferRef) cvbuf;
+}
 
 static void
 gst_core_video_meta_free (GstCoreVideoMeta * meta, GstBuffer * buf)
 {
-  if (meta->pixbuf != NULL) {
-    CVPixelBufferUnlockBaseAddress (meta->pixbuf, 0);
+  CVBufferRelease (meta->cvbuf);
+}
+
+static gboolean
+gst_core_video_meta_transform (GstBuffer * transbuf, GstCoreVideoMeta * meta,
+    GstBuffer * buffer, GQuark type, GstMetaTransformCopy * data)
+{
+  if (!data->region) {
+    /* only copy if the complete data is copied as well */
+    gst_core_video_meta_add (transbuf, meta->cvbuf);
+  } else {
+    GST_WARNING_OBJECT (transbuf,
+        "dropping Core Video metadata due to partial buffer");
   }
 
-  CVBufferRelease (meta->cvbuf);
+  return TRUE;                  /* retval unused */
 }
 
 GType
@@ -52,89 +77,89 @@
         "GstCoreVideoMeta", sizeof (GstCoreVideoMeta),
         (GstMetaInitFunction) NULL,
         (GstMetaFreeFunction) gst_core_video_meta_free,
-        (GstMetaTransformFunction) NULL);
+        (GstMetaTransformFunction) gst_core_video_meta_transform);
     g_once_init_leave (&core_video_meta_info, meta);
   }
   return core_video_meta_info;
 }
 
+void
+gst_core_video_wrap_pixel_buffer (GstBuffer * buf, GstVideoInfo * info,
+    CVPixelBufferRef pixel_buf, gboolean * has_padding)
+{
+  guint n_planes;
+  gsize offset[GST_VIDEO_MAX_PLANES] = { 0 };
+  gint stride[GST_VIDEO_MAX_PLANES] = { 0 };
+  UInt32 size;
+  GstAppleCoreVideoPixelBuffer *gpixbuf;
+
+  gpixbuf = gst_apple_core_video_pixel_buffer_new (pixel_buf);
+  *has_padding = FALSE;
+
+  if (CVPixelBufferIsPlanar (pixel_buf)) {
+    gint i, size = 0, plane_offset = 0;
+
+    n_planes = CVPixelBufferGetPlaneCount (pixel_buf);
+    for (i = 0; i < n_planes; i++) {
+      stride[i] = CVPixelBufferGetBytesPerRowOfPlane (pixel_buf, i);
+
+      if (stride[i] != GST_VIDEO_INFO_PLANE_STRIDE (info, i)) {
+        *has_padding = TRUE;
+      }
+
+      size = stride[i] * CVPixelBufferGetHeightOfPlane (pixel_buf, i);
+      offset[i] = plane_offset;
+      plane_offset += size;
+
+      gst_buffer_append_memory (buf,
+          gst_apple_core_video_memory_new_wrapped (gpixbuf, i, size));
+    }
+  } else {
+    n_planes = 1;
+    stride[0] = CVPixelBufferGetBytesPerRow (pixel_buf);
+    offset[0] = 0;
+    size = stride[0] * CVPixelBufferGetHeight (pixel_buf);
+
+    gst_buffer_append_memory (buf,
+        gst_apple_core_video_memory_new_wrapped (gpixbuf,
+            GST_APPLE_CORE_VIDEO_NO_PLANE, size));
+  }
+
+  gst_apple_core_video_pixel_buffer_unref (gpixbuf);
+
+  if (info) {
+    GstVideoMeta *video_meta;
+
+    video_meta =
+        gst_buffer_add_video_meta_full (buf, GST_VIDEO_FRAME_FLAG_NONE,
+        GST_VIDEO_INFO_FORMAT (info), info->width, info->height, n_planes,
+        offset, stride);
+  }
+}
+
 GstBuffer *
-gst_core_video_buffer_new (CVBufferRef cvbuf, GstVideoInfo * vinfo,
-    gboolean map)
+gst_core_video_buffer_new (CVBufferRef cvbuf, GstVideoInfo * vinfo)
 {
   CVPixelBufferRef pixbuf = NULL;
   GstBuffer *buf;
   GstCoreVideoMeta *meta;
-  guint n_planes;
-  gsize offset[GST_VIDEO_MAX_PLANES];
-  gint stride[GST_VIDEO_MAX_PLANES];
+  gboolean has_padding;         /* not used for now */
 
   if (CFGetTypeID (cvbuf) != CVPixelBufferGetTypeID ())
     /* TODO: Do we need to handle other buffer types? */
-    goto error;
+    return NULL;
 
   pixbuf = (CVPixelBufferRef) cvbuf;
 
-  if (map && CVPixelBufferLockBaseAddress (pixbuf, 0) != kCVReturnSuccess) {
-    goto error;
-  }
-
   buf = gst_buffer_new ();
 
-  /* add the corevideo meta to free the underlying corevideo buffer */
+  /* add the corevideo meta to pass the underlying corevideo buffer */
   meta = (GstCoreVideoMeta *) gst_buffer_add_meta (buf,
       gst_core_video_meta_get_info (), NULL);
   meta->cvbuf = CVBufferRetain (cvbuf);
   meta->pixbuf = pixbuf;
 
-  /* set stride, offset and size */
-  memset (&offset, 0, sizeof (offset));
-  memset (&stride, 0, sizeof (stride));
-
-  if (CVPixelBufferIsPlanar (pixbuf)) {
-    int i, size, off;
-
-    n_planes = CVPixelBufferGetPlaneCount (pixbuf);
-    off = 0;
-    for (i = 0; i < n_planes; ++i) {
-      stride[i] = CVPixelBufferGetBytesPerRowOfPlane (pixbuf, i);
-      size = stride[i] * CVPixelBufferGetHeightOfPlane (pixbuf, i);
-      offset[i] = off;
-      off += size;
-
-      if (map) {
-        gst_buffer_append_memory (buf,
-            gst_memory_new_wrapped (GST_MEMORY_FLAG_NO_SHARE,
-                CVPixelBufferGetBaseAddressOfPlane (pixbuf, i), size, 0, size,
-                NULL, NULL));
-      }
-    }
-  } else {
-    int size;
-
-    n_planes = 1;
-    stride[0] = CVPixelBufferGetBytesPerRow (pixbuf);
-    offset[0] = 0;
-    size = stride[0] * CVPixelBufferGetHeight (pixbuf);
-
-    if (map) {
-      gst_buffer_append_memory (buf,
-          gst_memory_new_wrapped (GST_MEMORY_FLAG_NO_SHARE,
-              CVPixelBufferGetBaseAddress (pixbuf), size, 0, size, NULL, NULL));
-    }
-  }
-
-  if (vinfo) {
-    GstVideoMeta *video_meta;
-
-    video_meta =
-        gst_buffer_add_video_meta_full (buf, GST_VIDEO_FRAME_FLAG_NONE,
-        vinfo->finfo->format, CVPixelBufferGetWidth (pixbuf),
-        CVPixelBufferGetHeight (pixbuf), n_planes, offset, stride);
-  }
+  gst_core_video_wrap_pixel_buffer (buf, vinfo, pixbuf, &has_padding);
 
   return buf;
-
-error:
-  return NULL;
 }
diff --git a/sys/applemedia/corevideobuffer.h b/sys/applemedia/corevideobuffer.h
index 8f58a6e..0ea7d1e 100644
--- a/sys/applemedia/corevideobuffer.h
+++ b/sys/applemedia/corevideobuffer.h
@@ -41,8 +41,11 @@
 } GstCoreVideoMeta;
 
 GstBuffer * gst_core_video_buffer_new      (CVBufferRef cvbuf,
-                                            GstVideoInfo *info,
-                                            gboolean map);
+                                            GstVideoInfo *info);
+void gst_core_video_wrap_pixel_buffer      (GstBuffer * buf,
+                                            GstVideoInfo * info,
+                                            CVPixelBufferRef pixel_buf,
+                                            gboolean * has_padding);
 GType gst_core_video_meta_api_get_type (void);
 
 G_END_DECLS
diff --git a/sys/applemedia/corevideomemory.c b/sys/applemedia/corevideomemory.c
new file mode 100644
index 0000000..4cb085d
--- /dev/null
+++ b/sys/applemedia/corevideomemory.c
@@ -0,0 +1,465 @@
+/* GStreamer Apple Core Video memory
+ * Copyright (C) 2015 Ilya Konstantinov
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for mordetails.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "corevideomemory.h"
+
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_APPLE_CORE_VIDEO_MEMORY);
+#define GST_CAT_DEFAULT GST_CAT_APPLE_CORE_VIDEO_MEMORY
+
+static const char *_lock_state_names[] = {
+  "Unlocked", "Locked Read-Only", "Locked Read-Write"
+};
+
+/**
+ * gst_apple_core_video_pixel_buffer_new:
+ * @buf: an unlocked CVPixelBuffer
+ *
+ * Initializes a wrapper to manage locking state for a CVPixelBuffer.
+ * This function expects to receive unlocked CVPixelBuffer, and further assumes
+ * that no one else will lock it (as long as the wrapper exists).
+ *
+ * This function retains @buf.
+ *
+ * Returns: The wrapped @buf.
+ */
+GstAppleCoreVideoPixelBuffer *
+gst_apple_core_video_pixel_buffer_new (CVPixelBufferRef buf)
+{
+  GstAppleCoreVideoPixelBuffer *gpixbuf =
+      g_slice_new (GstAppleCoreVideoPixelBuffer);
+  gpixbuf->refcount = 1;
+  g_mutex_init (&gpixbuf->mutex);
+  gpixbuf->buf = CVPixelBufferRetain (buf);
+  gpixbuf->lock_state = GST_APPLE_CORE_VIDEO_MEMORY_UNLOCKED;
+  gpixbuf->lock_count = 0;
+  return gpixbuf;
+}
+
+GstAppleCoreVideoPixelBuffer *
+gst_apple_core_video_pixel_buffer_ref (GstAppleCoreVideoPixelBuffer * gpixbuf)
+{
+  g_atomic_int_inc (&gpixbuf->refcount);
+  return gpixbuf;
+}
+
+void
+gst_apple_core_video_pixel_buffer_unref (GstAppleCoreVideoPixelBuffer * gpixbuf)
+{
+  if (g_atomic_int_dec_and_test (&gpixbuf->refcount)) {
+    if (gpixbuf->lock_state != GST_APPLE_CORE_VIDEO_MEMORY_UNLOCKED) {
+      GST_ERROR
+          ("%p: CVPixelBuffer memory still locked (lock_count = %d), likely forgot to unmap GstAppleCoreVideoMemory",
+          gpixbuf, gpixbuf->lock_count);
+    }
+    CVPixelBufferRelease (gpixbuf->buf);
+    g_mutex_clear (&gpixbuf->mutex);
+    g_slice_free (GstAppleCoreVideoPixelBuffer, gpixbuf);
+  }
+}
+
+/**
+ * gst_apple_core_video_pixel_buffer_lock:
+ * @gpixbuf: the wrapped CVPixelBuffer
+ * @flags: mapping flags for either read-only or read-write locking
+ *
+ * Locks the pixel buffer into CPU memory for reading only, or
+ * reading and writing. The desired lock mode is deduced from @flags.
+ *
+ * For planar buffers, each plane's #GstAppleCoreVideoMemory will reference
+ * the same #GstAppleCoreVideoPixelBuffer; therefore this function will be
+ * called multiple times for the same @gpixbuf. Each call to this function
+ * should be matched by a call to gst_apple_core_video_pixel_buffer_unlock().
+ *
+ * Notes:
+ *
+ * - Read-only locking improves performance by preventing Core Video
+ *   from invalidating existing caches of the buffer’s contents.
+ *
+ * - Only the first call actually locks; subsequent calls succeed
+ *   as long as their requested flags are compatible with how the buffer
+ *   is already locked.
+ *
+ *   For example, the following code will succeed:
+ *   |[<!-- language="C" -->
+ *   gst_memory_map(plane1, GST_MAP_READWRITE);
+ *   gst_memory_map(plane2, GST_MAP_READ);
+ *   ]|
+ *   while the ƒollowing code will fail:
+ *   |[<!-- language="C" -->
+ *   gst_memory_map(plane1, GST_MAP_READ);
+ *   gst_memory_map(plane2, GST_MAP_READWRITE); /<!-- -->* ERROR: already locked for read-only *<!-- -->/
+ *   ]|
+ *
+ * Returns: %TRUE if the buffer was locked as requested
+ */
+static gboolean
+gst_apple_core_video_pixel_buffer_lock (GstAppleCoreVideoPixelBuffer * gpixbuf,
+    GstMapFlags flags)
+{
+  CVReturn cvret;
+  CVOptionFlags lockFlags;
+
+  g_mutex_lock (&gpixbuf->mutex);
+
+  switch (gpixbuf->lock_state) {
+    case GST_APPLE_CORE_VIDEO_MEMORY_UNLOCKED:
+      lockFlags = (flags & GST_MAP_WRITE) ? 0 : kCVPixelBufferLock_ReadOnly;
+      cvret = CVPixelBufferLockBaseAddress (gpixbuf->buf, lockFlags);
+      if (cvret != kCVReturnSuccess) {
+        g_mutex_unlock (&gpixbuf->mutex);
+        /* TODO: Map kCVReturnError etc. into strings */
+        GST_ERROR ("%p: unable to lock base address for pixbuf %p: %d", gpixbuf,
+            gpixbuf->buf, cvret);
+        return FALSE;
+      }
+      gpixbuf->lock_state =
+          (flags & GST_MAP_WRITE) ?
+          GST_APPLE_CORE_VIDEO_MEMORY_LOCKED_READ_WRITE :
+          GST_APPLE_CORE_VIDEO_MEMORY_LOCKED_READONLY;
+      break;
+
+    case GST_APPLE_CORE_VIDEO_MEMORY_LOCKED_READONLY:
+      if (flags & GST_MAP_WRITE) {
+        g_mutex_unlock (&gpixbuf->mutex);
+        GST_ERROR ("%p: pixel buffer %p already locked for read-only access",
+            gpixbuf, gpixbuf->buf);
+        return FALSE;
+      }
+      break;
+
+    case GST_APPLE_CORE_VIDEO_MEMORY_LOCKED_READ_WRITE:
+      break;                    /* nothing to do, already most permissive mapping */
+  }
+
+  g_atomic_int_inc (&gpixbuf->lock_count);
+
+  g_mutex_unlock (&gpixbuf->mutex);
+
+  GST_DEBUG ("%p: pixbuf %p, %s (%d times)",
+      gpixbuf,
+      gpixbuf->buf,
+      _lock_state_names[gpixbuf->lock_state], gpixbuf->lock_count);
+
+  return TRUE;
+}
+
+/**
+ * gst_apple_core_video_pixel_buffer_unlock:
+ * @gpixbuf: the wrapped CVPixelBuffer
+ *
+ * Unlocks the pixel buffer from CPU memory. Should be called
+ * for every gst_apple_core_video_pixel_buffer_lock() call.
+ */
+static gboolean
+gst_apple_core_video_pixel_buffer_unlock (GstAppleCoreVideoPixelBuffer *
+    gpixbuf)
+{
+  CVOptionFlags lockFlags;
+  CVReturn cvret;
+
+  if (gpixbuf->lock_state == GST_APPLE_CORE_VIDEO_MEMORY_UNLOCKED) {
+    GST_ERROR ("%p: pixel buffer %p not locked", gpixbuf, gpixbuf->buf);
+    return FALSE;
+  }
+
+  if (!g_atomic_int_dec_and_test (&gpixbuf->lock_count)) {
+    return TRUE;                /* still locked, by current and/or other callers */
+  }
+
+  g_mutex_lock (&gpixbuf->mutex);
+
+  lockFlags =
+      (gpixbuf->lock_state ==
+      GST_APPLE_CORE_VIDEO_MEMORY_LOCKED_READONLY) ? kCVPixelBufferLock_ReadOnly
+      : 0;
+  cvret = CVPixelBufferUnlockBaseAddress (gpixbuf->buf, lockFlags);
+  if (cvret != kCVReturnSuccess) {
+    g_mutex_unlock (&gpixbuf->mutex);
+    g_atomic_int_inc (&gpixbuf->lock_count);
+    /* TODO: Map kCVReturnError etc. into strings */
+    GST_ERROR ("%p: unable to unlock base address for pixbuf %p: %d", gpixbuf,
+        gpixbuf->buf, cvret);
+    return FALSE;
+  }
+
+  gpixbuf->lock_state = GST_APPLE_CORE_VIDEO_MEMORY_UNLOCKED;
+
+  g_mutex_unlock (&gpixbuf->mutex);
+
+  GST_DEBUG ("%p: pixbuf %p, %s (%d locks remaining)",
+      gpixbuf,
+      gpixbuf->buf,
+      _lock_state_names[gpixbuf->lock_state], gpixbuf->lock_count);
+
+  return TRUE;
+}
+
+/*
+ * GstAppleCoreVideoAllocator
+ */
+
+struct _GstAppleCoreVideoAllocatorClass
+{
+  GstAllocatorClass parent_class;
+};
+
+typedef struct _GstAppleCoreVideoAllocatorClass GstAppleCoreVideoAllocatorClass;
+
+struct _GstAppleCoreVideoAllocator
+{
+  GstAllocator parent_instance;
+};
+
+typedef struct _GstAppleCoreVideoAllocator GstAppleCoreVideoAllocator;
+
+/* GType for GstAppleCoreVideoAllocator */
+GType gst_apple_core_video_allocator_get_type (void);
+#define GST_TYPE_APPLE_CORE_VIDEO_ALLOCATOR             (gst_apple_core_video_allocator_get_type())
+#define GST_IS_APPLE_CORE_VIDEO_ALLOCATOR(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_APPLE_CORE_VIDEO_ALLOCATOR))
+#define GST_IS_APPLE_CORE_VIDEO_ALLOCATOR_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_APPLE_CORE_VIDEO_ALLOCATOR))
+#define GST_APPLE_CORE_VIDEO_ALLOCATOR_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_APPLE_CORE_VIDEO_ALLOCATOR, GstAppleCoreVideoAllocatorClass))
+#define GST_APPLE_CORE_VIDEO_ALLOCATOR(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_APPLE_CORE_VIDEO_ALLOCATOR, GstAppleCoreVideoAllocator))
+#define GST_APPLE_CORE_VIDEO_ALLOCATOR_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_APPLE_CORE_VIDEO_ALLOCATOR, GstAppleCoreVideoAllocatorClass))
+
+G_DEFINE_TYPE (GstAppleCoreVideoAllocator, gst_apple_core_video_allocator,
+    GST_TYPE_ALLOCATOR);
+
+/* Name for allocator registration */
+#define GST_APPLE_CORE_VIDEO_ALLOCATOR_NAME "AppleCoreVideoMemory"
+
+/* Singleton instance of GstAppleCoreVideoAllocator */
+static GstAppleCoreVideoAllocator *_apple_core_video_allocator;
+
+/**
+ * gst_apple_core_video_memory_init:
+ *
+ * Initializes the Core Video Memory allocator. This function must be called
+ * before #GstAppleCoreVideoMemory can be created.
+ *
+ * It is safe to call this function multiple times.
+ */
+void
+gst_apple_core_video_memory_init (void)
+{
+  static volatile gsize _init = 0;
+
+  if (g_once_init_enter (&_init)) {
+    GST_DEBUG_CATEGORY_INIT (GST_CAT_APPLE_CORE_VIDEO_MEMORY, "corevideomemory",
+        0, "Apple Core Video Memory");
+
+    _apple_core_video_allocator =
+        g_object_new (GST_TYPE_APPLE_CORE_VIDEO_ALLOCATOR, NULL);
+
+    gst_allocator_register (GST_APPLE_CORE_VIDEO_ALLOCATOR_NAME,
+        gst_object_ref (_apple_core_video_allocator));
+    g_once_init_leave (&_init, 1);
+  }
+}
+
+/**
+ * gst_is_apple_core_video_memory:
+ * @mem: #GstMemory
+ *
+ * Checks whether @mem is backed by a CVPixelBuffer.
+ * This has limited use since #GstAppleCoreVideoMemory is transparently
+ * mapped into CPU memory on request.
+ *
+ * Returns: %TRUE when @mem is backed by a CVPixelBuffer
+ */
+gboolean
+gst_is_apple_core_video_memory (GstMemory * mem)
+{
+  g_return_val_if_fail (mem != NULL, FALSE);
+
+  return GST_IS_APPLE_CORE_VIDEO_ALLOCATOR (mem->allocator);
+}
+
+/**
+ * gst_apple_core_video_memory_new:
+ *
+ * Helper function for gst_apple_core_video_mem_share().
+ * Users should call gst_apple_core_video_memory_new_wrapped() instead.
+ */
+static GstMemory *
+gst_apple_core_video_memory_new (GstMemoryFlags flags, GstMemory * parent,
+    GstAppleCoreVideoPixelBuffer * gpixbuf, gsize plane, gsize maxsize,
+    gsize align, gsize offset, gsize size)
+{
+  GstAppleCoreVideoMemory *mem;
+
+  g_return_val_if_fail (gpixbuf != NULL, NULL);
+
+  mem = g_slice_new0 (GstAppleCoreVideoMemory);
+  gst_memory_init (GST_MEMORY_CAST (mem), flags,
+      GST_ALLOCATOR_CAST (_apple_core_video_allocator), parent, maxsize, align,
+      offset, size);
+
+  mem->gpixbuf = gst_apple_core_video_pixel_buffer_ref (gpixbuf);
+  mem->plane = plane;
+
+  GST_DEBUG ("%p: gpixbuf %p, plane: %" G_GSSIZE_FORMAT ", size %"
+      G_GSIZE_FORMAT, mem, mem->gpixbuf, mem->plane, mem->mem.size);
+
+  return (GstMemory *) mem;
+}
+
+/**
+ * gst_apple_core_video_memory_new_wrapped:
+ * @gpixbuf: the backing #GstAppleCoreVideoPixelBuffer
+ * @plane: the plane this memory will represent, or #GST_APPLE_CORE_VIDEO_NO_PLANE for non-planar buffer
+ * @size: the size of the buffer or specific plane
+ *
+ * Returns: a newly allocated #GstAppleCoreVideoMemory
+ */
+GstMemory *
+gst_apple_core_video_memory_new_wrapped (GstAppleCoreVideoPixelBuffer * gpixbuf,
+    gsize plane, gsize size)
+{
+  return gst_apple_core_video_memory_new (0, NULL, gpixbuf, plane, size, 0, 0,
+      size);
+}
+
+static gpointer
+gst_apple_core_video_mem_map (GstMemory * gmem, gsize maxsize,
+    GstMapFlags flags)
+{
+  GstAppleCoreVideoMemory *mem = (GstAppleCoreVideoMemory *) gmem;
+  gpointer ret;
+
+  if (!gst_apple_core_video_pixel_buffer_lock (mem->gpixbuf, flags))
+    return NULL;
+
+  if (mem->plane != GST_APPLE_CORE_VIDEO_NO_PLANE) {
+    ret = CVPixelBufferGetBaseAddressOfPlane (mem->gpixbuf->buf, mem->plane);
+
+    if (ret != NULL)
+      GST_DEBUG ("%p: pixbuf %p plane %" G_GSIZE_FORMAT
+          " flags %08x: mapped %p", mem, mem->gpixbuf->buf, mem->plane, flags,
+          ret);
+    else
+      GST_ERROR ("%p: invalid plane base address (NULL) for pixbuf %p plane %"
+          G_GSIZE_FORMAT, mem, mem->gpixbuf->buf, mem->plane);
+  } else {
+    ret = CVPixelBufferGetBaseAddress (mem->gpixbuf->buf);
+
+    if (ret != NULL)
+      GST_DEBUG ("%p: pixbuf %p flags %08x: mapped %p", mem, mem->gpixbuf->buf,
+          flags, ret);
+    else
+      GST_ERROR ("%p: invalid base address (NULL) for pixbuf %p"
+          G_GSIZE_FORMAT, mem, mem->gpixbuf->buf);
+  }
+
+  return ret;
+}
+
+static void
+gst_apple_core_video_mem_unmap (GstMemory * gmem)
+{
+  GstAppleCoreVideoMemory *mem = (GstAppleCoreVideoMemory *) gmem;
+  (void) gst_apple_core_video_pixel_buffer_unlock (mem->gpixbuf);
+  if (mem->plane != GST_APPLE_CORE_VIDEO_NO_PLANE)
+    GST_DEBUG ("%p: pixbuf %p plane %" G_GSIZE_FORMAT, mem,
+        mem->gpixbuf->buf, mem->plane);
+  else
+    GST_DEBUG ("%p: pixbuf %p", mem, mem->gpixbuf->buf);
+}
+
+static GstMemory *
+gst_apple_core_video_mem_share (GstMemory * gmem, gssize offset, gssize size)
+{
+  GstAppleCoreVideoMemory *mem;
+  GstMemory *parent, *sub;
+
+  mem = (GstAppleCoreVideoMemory *) gmem;
+
+  /* find the real parent */
+  parent = gmem->parent;
+  if (parent == NULL)
+    parent = gmem;
+
+  if (size == -1)
+    size = gmem->size - offset;
+
+  /* the shared memory is always readonly */
+  sub =
+      gst_apple_core_video_memory_new (GST_MINI_OBJECT_FLAGS (parent) |
+      GST_MINI_OBJECT_FLAG_LOCK_READONLY, parent, mem->gpixbuf, mem->plane,
+      gmem->maxsize, gmem->align, gmem->offset + offset, size);
+
+  return sub;
+}
+
+static gboolean
+gst_apple_core_video_mem_is_span (GstMemory * mem1, GstMemory * mem2,
+    gsize * offset)
+{
+  /* We may only return FALSE since:
+   * 1) Core Video gives no guarantees about planes being consecutive.
+   *    We may only know this after mapping.
+   * 2) GstAppleCoreVideoMemory instances for planes do not share a common
+   *    parent -- i.e. they're not offsets into the same parent
+   *    memory instance.
+   *
+   * It's not unlikely that planes will be stored in consecutive memory
+   * but it should be checked by the user after mapping.
+   */
+  return FALSE;
+}
+
+static void
+gst_apple_core_video_mem_free (GstAllocator * allocator, GstMemory * gmem)
+{
+  GstAppleCoreVideoMemory *mem = (GstAppleCoreVideoMemory *) gmem;
+
+  gst_apple_core_video_pixel_buffer_unref (mem->gpixbuf);
+
+  g_slice_free (GstAppleCoreVideoMemory, mem);
+}
+
+static void
+gst_apple_core_video_allocator_class_init (GstAppleCoreVideoAllocatorClass *
+    klass)
+{
+  GstAllocatorClass *allocator_class;
+
+  allocator_class = (GstAllocatorClass *) klass;
+
+  /* we don't do allocations, only wrap existing pixel buffers */
+  allocator_class->alloc = NULL;
+  allocator_class->free = gst_apple_core_video_mem_free;
+}
+
+static void
+gst_apple_core_video_allocator_init (GstAppleCoreVideoAllocator * allocator)
+{
+  GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator);
+
+  alloc->mem_type = GST_APPLE_CORE_VIDEO_ALLOCATOR_NAME;
+  alloc->mem_map = gst_apple_core_video_mem_map;
+  alloc->mem_unmap = gst_apple_core_video_mem_unmap;
+  alloc->mem_share = gst_apple_core_video_mem_share;
+  alloc->mem_is_span = gst_apple_core_video_mem_is_span;
+
+  GST_OBJECT_FLAG_SET (allocator, GST_ALLOCATOR_FLAG_CUSTOM_ALLOC);
+}
diff --git a/sys/applemedia/glcontexthelper.c b/sys/applemedia/glcontexthelper.c
new file mode 100644
index 0000000..4e6f617
--- /dev/null
+++ b/sys/applemedia/glcontexthelper.c
@@ -0,0 +1,132 @@
+/* GStreamer
+ * Copyright (C) 2016 Alessandro Decina <alessandro.d@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "glcontexthelper.h"
+
+static GstGLContext *
+_find_local_gl_context (GstGLContextHelper * ctxh)
+{
+  GstQuery *query;
+  GstContext *context;
+  GstGLContext *gl_context = NULL;
+  const GstStructure *s;
+
+  g_return_val_if_fail (ctxh != NULL, FALSE);
+
+  query = gst_query_new_context ("gst.gl.local_context");
+  if (gst_gl_run_query (ctxh->element, query, GST_PAD_SRC)) {
+    gst_query_parse_context (query, &context);
+    if (context) {
+      s = gst_context_get_structure (context);
+      gst_structure_get (s, "context", GST_GL_TYPE_CONTEXT, &gl_context, NULL);
+    }
+  }
+  if (!gl_context && gst_gl_run_query (ctxh->element, query, GST_PAD_SINK)) {
+    gst_query_parse_context (query, &context);
+    if (context) {
+      s = gst_context_get_structure (context);
+      gst_structure_get (s, "context", GST_GL_TYPE_CONTEXT, &gl_context, NULL);
+    }
+  }
+
+  GST_DEBUG_OBJECT (ctxh->element, "found local context %p", gl_context);
+
+  gst_query_unref (query);
+
+  return gl_context;
+}
+
+GstGLContextHelper *
+gst_gl_context_helper_new (GstElement * element)
+{
+  GstGLContextHelper *ctxh = g_new0 (GstGLContextHelper, 1);
+  ctxh->element = gst_object_ref (element);
+
+  return ctxh;
+}
+
+void
+gst_gl_context_helper_free (GstGLContextHelper * ctxh)
+{
+  g_return_if_fail (ctxh != NULL);
+
+  gst_object_unref (ctxh->element);
+
+  if (ctxh->display)
+    gst_object_unref (ctxh->display);
+
+  if (ctxh->context)
+    gst_object_unref (ctxh->context);
+
+  if (ctxh->other_context)
+    gst_object_unref (ctxh->other_context);
+
+  g_free (ctxh);
+}
+
+void
+gst_gl_context_helper_ensure_context (GstGLContextHelper * ctxh)
+{
+  GError *error = NULL;
+  GstGLContext *context;
+
+  g_return_if_fail (ctxh != NULL);
+
+  if (!ctxh->display)
+    gst_gl_ensure_element_data (ctxh->element, &ctxh->display,
+        &ctxh->other_context);
+
+  context = _find_local_gl_context (ctxh);
+  if (context) {
+    GST_INFO_OBJECT (ctxh->element, "found local context %p, old context %p",
+        context, ctxh->context);
+    if (ctxh->context)
+      gst_object_unref (ctxh->context);
+    ctxh->context = context;
+  }
+
+  if (!ctxh->context) {
+    GST_OBJECT_LOCK (ctxh->display);
+    do {
+      if (ctxh->context)
+        gst_object_unref (ctxh->context);
+      ctxh->context =
+          gst_gl_display_get_gl_context_for_thread (ctxh->display, NULL);
+      if (!ctxh->context) {
+        if (!gst_gl_display_create_context (ctxh->display,
+                ctxh->other_context, &ctxh->context, &error)) {
+          GST_OBJECT_UNLOCK (ctxh->display);
+          goto context_error;
+        }
+      }
+    } while (!gst_gl_display_add_context (ctxh->display, ctxh->context));
+    GST_OBJECT_UNLOCK (ctxh->display);
+  }
+
+  return;
+
+context_error:
+  {
+    GST_ELEMENT_ERROR (ctxh->element, RESOURCE, NOT_FOUND, ("%s",
+            error->message), (NULL));
+    g_clear_error (&error);
+
+    return;
+  }
+}
diff --git a/sys/applemedia/glcontexthelper.h b/sys/applemedia/glcontexthelper.h
new file mode 100644
index 0000000..4e043f1
--- /dev/null
+++ b/sys/applemedia/glcontexthelper.h
@@ -0,0 +1,39 @@
+/* GStreamer
+ * Copyright (C) 2016 Alessandro Decina <alessandro.d@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _GST_GL_CONTEXT_HELPER_H_
+#define _GST_GL_CONTEXT_HELPER_H_
+
+#include <gst/gst.h>
+#include <gst/gl/gl.h>
+
+typedef struct _GstGLContextHelper
+{
+  GstElement *element;
+  GstGLDisplay *display;
+  GstGLContext *context;
+  GstGLContext *other_context;
+} GstGLContextHelper;
+
+GstGLContextHelper * gst_gl_context_helper_new (GstElement *element);
+void gst_gl_context_helper_free (GstGLContextHelper *ctxh);
+void gst_gl_context_helper_ensure_context (GstGLContextHelper *ctxh);
+
+#endif
+
diff --git a/sys/applemedia/iosurfacememory.c b/sys/applemedia/iosurfacememory.c
index 04acc51..694202c 100644
--- a/sys/applemedia/iosurfacememory.c
+++ b/sys/applemedia/iosurfacememory.c
@@ -168,12 +168,11 @@
 
   g_return_val_if_fail (target == GST_GL_TEXTURE_TARGET_RECTANGLE, NULL);
 
-  mem = g_slice_new0 (GstIOSurfaceMemory);
+  mem = g_new0 (GstIOSurfaceMemory, 1);
   gst_gl_memory_init (&mem->gl_mem, _io_surface_memory_allocator, NULL, context,
       target, NULL, info, plane, valign, user_data, notify);
 
   GST_MINI_OBJECT_FLAG_SET (mem, GST_MEMORY_FLAG_READONLY);
-  GST_MINI_OBJECT_FLAG_SET (mem, GST_MEMORY_FLAG_NO_SHARE);
 
   mem->surface = NULL;
   _io_surface_memory_set_surface (mem, surface);
diff --git a/sys/applemedia/plugin.m b/sys/applemedia/plugin.m
index c17c38b..0ff4ec1 100644
--- a/sys/applemedia/plugin.m
+++ b/sys/applemedia/plugin.m
@@ -22,6 +22,7 @@
 #endif
 
 #include <Foundation/Foundation.h>
+#include "corevideomemory.h"
 #ifdef HAVE_IOS
 #include "iosassetsrc.h"
 #else
@@ -63,6 +64,8 @@
 {
   gboolean res = TRUE;
 
+  gst_apple_core_video_memory_init ();
+
 #ifdef HAVE_IOS
   res &= gst_element_register (plugin, "iosassetsrc", GST_RANK_SECONDARY,
       GST_TYPE_IOS_ASSET_SRC);
diff --git a/sys/applemedia/qtkitvideosrc.m b/sys/applemedia/qtkitvideosrc.m
index 2c15bb5..e6b427f 100644
--- a/sys/applemedia/qtkitvideosrc.m
+++ b/sys/applemedia/qtkitvideosrc.m
@@ -434,7 +434,7 @@
   [queueLock unlockWithCondition:
       ([queue count] == 0) ? NO_FRAMES : HAS_FRAME_OR_STOP_REQUEST];
 
-  *buf = gst_core_video_buffer_new ((CVBufferRef)frame, NULL, TRUE);
+  *buf = gst_core_video_buffer_new ((CVBufferRef)frame, NULL);
   CVBufferRelease (frame);
 
   [self timestampBuffer:*buf];
diff --git a/sys/applemedia/videotexturecache.m b/sys/applemedia/videotexturecache.m
index 091339f..e1bdb64 100644
--- a/sys/applemedia/videotexturecache.m
+++ b/sys/applemedia/videotexturecache.m
@@ -53,8 +53,6 @@
   CFMutableDictionaryRef cache_attrs =
       CFDictionaryCreateMutable (NULL, 0, &kCFTypeDictionaryKeyCallBacks,
       &kCFTypeDictionaryValueCallBacks);
-  gst_vtutil_dict_set_i32 (cache_attrs,
-      kCVOpenGLESTextureCacheMaximumTextureAgeKey, 0);
   CVOpenGLESTextureCacheCreate (kCFAllocatorDefault, (CFDictionaryRef) cache_attrs,
       (CVEAGLContext) gst_gl_context_get_gl_context (ctx), NULL, &cache->cache);
 #else
@@ -145,22 +143,20 @@
 }
 
 #if HAVE_IOS
-static gboolean
-gl_mem_from_buffer (GstVideoTextureCache * cache,
-        GstBuffer * buffer, GstMemory **mem1, GstMemory **mem2)
+static void
+_do_get_gl_buffer (GstGLContext * context, ContextThreadData * data)
 {
   CVOpenGLESTextureRef texture = NULL;
-  CVPixelBufferRef pixel_buf = cv_pixel_buffer_from_gst_buffer (buffer);
+  GstVideoTextureCache *cache = data->cache;
+  CVPixelBufferRef pixel_buf = cv_pixel_buffer_from_gst_buffer (data->input_buffer);
   GstGLTextureTarget gl_target;
   GstGLBaseMemoryAllocator *base_mem_alloc;
   GstGLVideoAllocationParams *params;
+  GstBuffer *output_buffer;
 
   base_mem_alloc = GST_GL_BASE_MEMORY_ALLOCATOR (gst_gl_memory_allocator_get_default (cache->ctx));
-
-  *mem1 = NULL;
-  *mem2 = NULL;
-
-  CVOpenGLESTextureCacheFlush (cache->cache, 0);
+  output_buffer = gst_buffer_new ();
+  gst_buffer_copy_into (output_buffer, data->input_buffer, GST_BUFFER_COPY_ALL, 0, -1);
 
   switch (GST_VIDEO_INFO_FORMAT (&cache->input_info)) {
       case GST_VIDEO_FORMAT_BGRA:
@@ -178,8 +174,9 @@
             CVOpenGLESTextureGetName (texture), texture,
             (GDestroyNotify) CFRelease);
 
-        *mem1 = (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
-            (GstGLAllocationParams *) params);
+        gst_buffer_replace_memory (output_buffer, 0,
+                (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
+                    (GstGLAllocationParams *) params));
         gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
         break;
       case GST_VIDEO_FORMAT_NV12: {
@@ -204,8 +201,9 @@
             CVOpenGLESTextureGetName (texture), texture,
             (GDestroyNotify) CFRelease);
 
-        *mem1 = (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
-            (GstGLAllocationParams *) params);
+        gst_buffer_replace_memory (output_buffer, 0,
+                (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
+                    (GstGLAllocationParams *) params));
         gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
 
         textype = gst_gl_texture_type_from_format (cache->ctx, GST_VIDEO_FORMAT_NV12, 1);
@@ -225,8 +223,9 @@
             CVOpenGLESTextureGetName (texture), texture,
             (GDestroyNotify) CFRelease);
 
-        *mem2 = (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
-            (GstGLAllocationParams *) params);
+        gst_buffer_replace_memory (output_buffer, 1,
+                (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
+                    (GstGLAllocationParams *) params));
         gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
         break;
       }
@@ -237,21 +236,23 @@
 
   gst_object_unref (base_mem_alloc);
 
-  return TRUE;
+  data->output_buffer = output_buffer;
+
+  return;
 
 error:
-  return FALSE;
+  data->output_buffer = NULL;
 }
 #else /* !HAVE_IOS */
-
-static gboolean
-gl_mem_from_buffer (GstVideoTextureCache * cache,
-        GstBuffer * buffer, GstMemory **mem1, GstMemory **mem2)
+static void
+_do_get_gl_buffer (GstGLContext * context, ContextThreadData * data)
 {
-  CVPixelBufferRef pixel_buf = cv_pixel_buffer_from_gst_buffer (buffer);
-  IOSurfaceRef surface = CVPixelBufferGetIOSurface(pixel_buf);
+  GstVideoTextureCache *cache = data->cache;
+  CVPixelBufferRef pixel_buf = cv_pixel_buffer_from_gst_buffer (data->input_buffer);
+  IOSurfaceRef surface = CVPixelBufferGetIOSurface (pixel_buf);
 
-  *mem1 = *mem2 = NULL;
+  data->output_buffer = gst_buffer_new ();
+  gst_buffer_copy_into (data->output_buffer, data->input_buffer, GST_BUFFER_COPY_ALL, 0, -1);
   for (int i = 0; i < GST_VIDEO_INFO_N_PLANES (&cache->input_info); i++) {
     GstIOSurfaceMemory *mem;
 
@@ -260,41 +261,21 @@
             surface, GST_GL_TEXTURE_TARGET_RECTANGLE, &cache->input_info,
             i, NULL, pixel_buf, (GDestroyNotify) CFRelease);
 
-    if (i == 0)
-        *mem1 = (GstMemory *) mem;
-    else
-        *mem2 = (GstMemory *) mem;
+    gst_buffer_replace_memory (data->output_buffer, i, (GstMemory *) mem);
   }
-
-  return TRUE;
 }
 #endif
 
-static void
-_do_get_gl_buffer (GstGLContext * context, ContextThreadData * data)
-{
-  GstMemory *mem1 = NULL, *mem2 = NULL;
-  GstVideoTextureCache *cache = data->cache;
-  GstBuffer *buffer = data->input_buffer;
-
-  if (!gl_mem_from_buffer (cache, buffer, &mem1, &mem2)) {
-    gst_buffer_unref (buffer);
-    return;
-  }
-
-  gst_buffer_append_memory (buffer, mem1);
-  if (mem2)
-    gst_buffer_append_memory (buffer, mem2);
-
-  data->output_buffer = buffer;
-}
-
 GstBuffer *
 gst_video_texture_cache_get_gl_buffer (GstVideoTextureCache * cache,
         GstBuffer * cv_buffer)
 {
   ContextThreadData data = {cache, cv_buffer, NULL};
+
   gst_gl_context_thread_add (cache->ctx,
       (GstGLContextThreadFunc) _do_get_gl_buffer, &data);
+
+  gst_buffer_unref (cv_buffer);
+
   return data.output_buffer;
 }
diff --git a/sys/applemedia/vtdec.c b/sys/applemedia/vtdec.c
index 639ba56..86df2ab 100644
--- a/sys/applemedia/vtdec.c
+++ b/sys/applemedia/vtdec.c
@@ -1,6 +1,6 @@
 /* GStreamer
  * Copyright (C) 2010, 2013 Ole André Vadla Ravnås <oleavr@soundrop.com>
- * Copyright (C) 2012, 2013 Alessandro Decina <alessandro.d@gmail.com>
+ * Copyright (C) 2012-2016 Alessandro Decina <alessandro.d@gmail.com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -88,6 +88,7 @@
 static gboolean gst_vtdec_compute_reorder_queue_length (GstVtdec * vtdec,
     CMVideoCodecType cm_format, GstBuffer * codec_data);
 static void gst_vtdec_set_latency (GstVtdec * vtdec);
+static void gst_vtdec_set_context (GstElement * element, GstContext * context);
 
 static GstStaticPadTemplate gst_vtdec_sink_template =
     GST_STATIC_PAD_TEMPLATE ("sink",
@@ -120,17 +121,18 @@
 gst_vtdec_class_init (GstVtdecClass * klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
   GstVideoDecoderClass *video_decoder_class = GST_VIDEO_DECODER_CLASS (klass);
 
   /* Setting up pads and setting metadata should be moved to
      base_class_init if you intend to subclass this class. */
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
+  gst_element_class_add_pad_template (element_class,
       gst_static_pad_template_get (&gst_vtdec_sink_template));
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
+  gst_element_class_add_pad_template (element_class,
       gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
           gst_caps_from_string (VIDEO_SRC_CAPS)));
 
-  gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
+  gst_element_class_set_static_metadata (element_class,
       "Apple VideoToolbox decoder",
       "Codec/Decoder/Video",
       "Apple VideoToolbox Decoder",
@@ -138,6 +140,7 @@
       "Alessandro Decina <alessandro.d@gmail.com>");
 
   gobject_class->finalize = gst_vtdec_finalize;
+  element_class->set_context = gst_vtdec_set_context;
   video_decoder_class->start = GST_DEBUG_FUNCPTR (gst_vtdec_start);
   video_decoder_class->stop = GST_DEBUG_FUNCPTR (gst_vtdec_stop);
   video_decoder_class->negotiate = GST_DEBUG_FUNCPTR (gst_vtdec_negotiate);
@@ -152,6 +155,7 @@
 gst_vtdec_init (GstVtdec * vtdec)
 {
   vtdec->reorder_queue = g_async_queue_new ();
+  vtdec->ctxh = gst_gl_context_helper_new (GST_ELEMENT (vtdec));
 }
 
 void
@@ -162,7 +166,7 @@
   GST_DEBUG_OBJECT (vtdec, "finalize");
 
   g_async_queue_unref (vtdec->reorder_queue);
-
+  gst_gl_context_helper_free (vtdec->ctxh);
 
   G_OBJECT_CLASS (gst_vtdec_parent_class)->finalize (object);
 }
@@ -198,26 +202,6 @@
   return TRUE;
 }
 
-static GstGLContext *
-query_gl_context (GstVtdec * vtdec)
-{
-  GstGLContext *gl_context = NULL;
-  GstContext *context = NULL;
-  GstQuery *query;
-
-  query = gst_query_new_context ("gst.gl.local_context");
-  if (gst_pad_peer_query (GST_VIDEO_DECODER_SRC_PAD (vtdec), query)) {
-    gst_query_parse_context (query, &context);
-    if (context) {
-      const GstStructure *s = gst_context_get_structure (context);
-      gst_structure_get (s, "context", GST_GL_TYPE_CONTEXT, &gl_context, NULL);
-    }
-  }
-  gst_query_unref (query);
-
-  return gl_context;
-}
-
 static void
 setup_texture_cache (GstVtdec * vtdec, GstGLContext * context)
 {
@@ -225,8 +209,6 @@
 
   g_return_if_fail (vtdec->texture_cache == NULL);
 
-  GST_INFO_OBJECT (vtdec, "Setting up texture cache. GL context %p", context);
-
   output_state = gst_video_decoder_get_output_state (GST_VIDEO_DECODER (vtdec));
   vtdec->texture_cache = gst_video_texture_cache_new (context);
   gst_video_texture_cache_set_format (vtdec->texture_cache,
@@ -235,14 +217,6 @@
 }
 
 static gboolean
-caps_filter_out_gl_memory (GstCapsFeatures * features, GstStructure * structure,
-    gpointer user_data)
-{
-  return !gst_caps_features_contains (features,
-      GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
-}
-
-static gboolean
 gst_vtdec_negotiate (GstVideoDecoder * decoder)
 {
   GstVideoCodecState *output_state = NULL;
@@ -250,7 +224,6 @@
   GstVideoFormat format;
   GstStructure *structure;
   const gchar *s;
-  GstGLContext *context;
   GstVtdec *vtdec;
   gboolean ret = TRUE;
   GstCapsFeatures *features = NULL;
@@ -263,9 +236,6 @@
       gst_caps_make_writable (gst_pad_peer_query_caps (GST_VIDEO_DECODER_SRC_PAD
           (vtdec), templcaps));
   gst_caps_unref (templcaps);
-  context = query_gl_context (vtdec);
-  if (!context)
-    gst_caps_filter_and_map_in_place (caps, caps_filter_out_gl_memory, NULL);
 
   caps = gst_caps_truncate (caps);
   structure = gst_caps_get_structure (caps, 0);
@@ -306,21 +276,29 @@
     }
 
     ret = gst_vtdec_create_session (vtdec, format);
-    if (ret) {
-      if (vtdec->texture_cache) {
-        gst_video_texture_cache_free (vtdec->texture_cache);
-        vtdec->texture_cache = NULL;
-      }
+  }
 
-      if (output_textures)
-        setup_texture_cache (vtdec, context);
+  if (ret && output_textures) {
+    /* call this regardless of whether caps have changed or not since a new
+     * local context could have become available
+     */
+    gst_gl_context_helper_ensure_context (vtdec->ctxh);
+
+    GST_INFO_OBJECT (vtdec, "pushing textures, context %p old context %p",
+        vtdec->ctxh->context,
+        vtdec->texture_cache ? vtdec->texture_cache->ctx : NULL);
+
+    if (vtdec->texture_cache
+        && vtdec->texture_cache->ctx != vtdec->ctxh->context) {
+      gst_video_texture_cache_free (vtdec->texture_cache);
+      vtdec->texture_cache = NULL;
     }
+    if (!vtdec->texture_cache)
+      setup_texture_cache (vtdec, vtdec->ctxh->context);
   }
 
   if (prevcaps)
     gst_caps_unref (prevcaps);
-  if (context)
-    gst_object_unref (context);
 
   if (!ret)
     return ret;
@@ -767,9 +745,7 @@
       GST_WARNING_OBJECT (vtdec, "Output state not configured, release buffer");
       frame->flags &= VTDEC_FRAME_FLAG_SKIP;
     } else {
-      buf =
-          gst_core_video_buffer_new (image_buffer, &state->info,
-          vtdec->texture_cache == NULL);
+      buf = gst_core_video_buffer_new (image_buffer, &state->info);
       gst_video_codec_state_unref (state);
       GST_BUFFER_PTS (buf) = pts.value;
       GST_BUFFER_DURATION (buf) = duration.value;
@@ -1002,6 +978,18 @@
   gst_video_decoder_set_latency (GST_VIDEO_DECODER (vtdec), latency, latency);
 }
 
+static void
+gst_vtdec_set_context (GstElement * element, GstContext * context)
+{
+  GstVtdec *vtdec = GST_VTDEC (element);
+
+  GST_INFO_OBJECT (element, "setting context %s",
+      gst_context_get_context_type (context));
+  gst_gl_handle_set_context (element, context,
+      &vtdec->ctxh->display, &vtdec->ctxh->other_context);
+  GST_ELEMENT_CLASS (gst_vtdec_parent_class)->set_context (element, context);
+}
+
 #ifndef HAVE_IOS
 #define GST_TYPE_VTDEC_HW   (gst_vtdec_hw_get_type())
 #define GST_VTDEC_HW(obj)   (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VTDEC_HW,GstVtdecHw))
diff --git a/sys/applemedia/vtdec.h b/sys/applemedia/vtdec.h
index 7d194f4..46354d8 100644
--- a/sys/applemedia/vtdec.h
+++ b/sys/applemedia/vtdec.h
@@ -26,6 +26,7 @@
 #include <CoreMedia/CoreMedia.h>
 #include <VideoToolbox/VideoToolbox.h>
 #include "videotexturecache.h"
+#include "glcontexthelper.h"
 
 G_BEGIN_DECLS
 
@@ -48,6 +49,7 @@
   GAsyncQueue *reorder_queue;
   gint reorder_queue_length;
   GstVideoTextureCache *texture_cache;
+  GstGLContextHelper *ctxh;
 
   gboolean require_hardware;
 };
diff --git a/sys/applemedia/vtenc.c b/sys/applemedia/vtenc.c
index f0af751..de60272 100644
--- a/sys/applemedia/vtenc.c
+++ b/sys/applemedia/vtenc.c
@@ -136,8 +136,13 @@
     const void *planeAddresses[]);
 #endif
 
+#ifdef HAVE_IOS
 static GstStaticCaps sink_caps =
 GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ NV12, I420 }"));
+#else
+static GstStaticCaps sink_caps =
+GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ UYVY, NV12, I420 }"));
+#endif
 
 static void
 gst_vtenc_base_init (GstVTEncClass * klass)
@@ -1107,8 +1112,7 @@
       goto cv_error;
     }
 
-    outbuf =
-        gst_core_video_buffer_new ((CVBufferRef) pbuf, &self->video_info, TRUE);
+    outbuf = gst_core_video_buffer_new ((CVBufferRef) pbuf, &self->video_info);
     if (!gst_video_frame_map (&outframe, &self->video_info, outbuf,
             GST_MAP_WRITE)) {
       gst_video_frame_unmap (&inframe);
@@ -1164,6 +1168,9 @@
         case GST_VIDEO_FORMAT_NV12:
           pixel_format_type = kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange;
           break;
+        case GST_VIDEO_FORMAT_UYVY:
+          pixel_format_type = kCVPixelFormatType_422YpCbCr8;
+          break;
         default:
           gst_vtenc_frame_free (vframe);
           goto cv_error;
@@ -1287,7 +1294,7 @@
 
   /* We are dealing with block buffers here, so we don't need
    * to enable the use of the video meta API on the core media buffer */
-  frame->output_buffer = gst_core_media_buffer_new (sampleBuffer, FALSE, TRUE);
+  frame->output_buffer = gst_core_media_buffer_new (sampleBuffer, FALSE);
 
 beach:
   /* needed anyway so the frame will be released */
diff --git a/sys/avc/Makefile.in b/sys/avc/Makefile.in
index 7f08043..0cde012 100644
--- a/sys/avc/Makefile.in
+++ b/sys/avc/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/bluez/Makefile.in b/sys/bluez/Makefile.in
index 78bd35b..6217af3 100644
--- a/sys/bluez/Makefile.in
+++ b/sys/bluez/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -329,7 +328,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -351,7 +349,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -373,9 +370,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -537,6 +531,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -550,8 +545,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -638,8 +631,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -691,6 +682,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -711,6 +703,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -748,7 +742,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/d3dvideosink/Makefile.in b/sys/d3dvideosink/Makefile.in
index de13582..56fe397 100644
--- a/sys/d3dvideosink/Makefile.in
+++ b/sys/d3dvideosink/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/decklink/Makefile.in b/sys/decklink/Makefile.in
index 8d6c297..9d355fd 100644
--- a/sys/decklink/Makefile.in
+++ b/sys/decklink/Makefile.in
@@ -125,16 +125,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -345,7 +344,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -367,7 +365,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -389,9 +386,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -553,6 +547,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -566,8 +561,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -654,8 +647,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -707,6 +698,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -727,6 +719,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -764,7 +758,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/decklink/gstdecklink.cpp b/sys/decklink/gstdecklink.cpp
index c0d1128..64637f1 100644
--- a/sys/decklink/gstdecklink.cpp
+++ b/sys/decklink/gstdecklink.cpp
@@ -316,28 +316,53 @@
 }
 
 static GstStructure *
-gst_decklink_mode_get_structure (GstDecklinkModeEnum e)
+gst_decklink_mode_get_structure (GstDecklinkModeEnum e, BMDPixelFormat f)
 {
   const GstDecklinkMode *mode = &modes[e];
-
-  return gst_structure_new ("video/x-raw",
-      "format", G_TYPE_STRING, "UYVY",
+  GstStructure *s = gst_structure_new ("video/x-raw",
       "width", G_TYPE_INT, mode->width,
       "height", G_TYPE_INT, mode->height,
-      "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d,
-      "interlace-mode", G_TYPE_STRING,
-      mode->interlaced ? "interleaved" : "progressive", "pixel-aspect-ratio",
-      GST_TYPE_FRACTION, mode->par_n, mode->par_d, "colorimetry", G_TYPE_STRING,
-      mode->colorimetry, "chroma-site", G_TYPE_STRING, "mpeg2", NULL);
+      "pixel-aspect-ratio", GST_TYPE_FRACTION, mode->par_n, mode->par_d,
+      "interlace-mode", G_TYPE_STRING, mode->interlaced ? "interleaved" : "progressive",
+      "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, NULL);
+
+  switch (f) {
+    case bmdFormat8BitYUV: /* '2vuy' */
+      gst_structure_set (s, "format", G_TYPE_STRING, "UYVY",
+          "colorimetry", G_TYPE_STRING, mode->colorimetry,
+          "chroma-site", G_TYPE_STRING, "mpeg2", NULL);
+      break;
+    case bmdFormat10BitYUV: /* 'v210' */
+      gst_structure_set (s, "format", G_TYPE_STRING, "v210", NULL);
+      break;
+    case bmdFormat8BitARGB: /* 'ARGB' */
+      gst_structure_set (s, "format", G_TYPE_STRING, "ARGB", NULL);
+      break;
+    case bmdFormat8BitBGRA: /* 'BGRA' */
+      gst_structure_set (s, "format", G_TYPE_STRING, "BGRA", NULL);
+      break;
+    case bmdFormat10BitRGB: /* 'r210' Big-endian RGB 10-bit per component with SMPTE video levels (64-960). Packed as 2:10:10:10 */
+    case bmdFormat12BitRGB: /* 'R12B' Big-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */
+    case bmdFormat12BitRGBLE: /* 'R12L' Little-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */
+    case bmdFormat10BitRGBXLE: /* 'R10l' Little-endian 10-bit RGB with SMPTE video levels (64-940) */
+    case bmdFormat10BitRGBX: /* 'R10b' Big-endian 10-bit RGB with SMPTE video levels (64-940) */
+    default:
+      GST_WARNING ("format not supported %d", f);
+      gst_structure_free (s);
+      s = NULL;
+      break;
+  }
+
+  return s;
 }
 
 GstCaps *
-gst_decklink_mode_get_caps (GstDecklinkModeEnum e)
+gst_decklink_mode_get_caps (GstDecklinkModeEnum e, BMDPixelFormat f)
 {
   GstCaps *caps;
 
   caps = gst_caps_new_empty ();
-  gst_caps_append_structure (caps, gst_decklink_mode_get_structure (e));
+  gst_caps_append_structure (caps, gst_decklink_mode_get_structure (e, f));
 
   return caps;
 }
@@ -351,7 +376,9 @@
 
   caps = gst_caps_new_empty ();
   for (i = 1; i < (int) G_N_ELEMENTS (modes); i++) {
-    s = gst_decklink_mode_get_structure ((GstDecklinkModeEnum) i);
+    s = gst_decklink_mode_get_structure ((GstDecklinkModeEnum) i, bmdFormat8BitYUV);
+    gst_caps_append_structure (caps, s);
+    s = gst_decklink_mode_get_structure ((GstDecklinkModeEnum) i, bmdFormat8BitARGB);
     gst_caps_append_structure (caps, s);
   }
 
@@ -365,7 +392,7 @@
   GstCaps *mode_caps;
 
   for (i = 1; i < (int) G_N_ELEMENTS (modes); i++) {
-    mode_caps = gst_decklink_mode_get_caps ((GstDecklinkModeEnum) i);
+    mode_caps = gst_decklink_mode_get_caps ((GstDecklinkModeEnum) i, bmdFormat8BitYUV);
     if (gst_caps_can_intersect (caps, mode_caps)) {
       gst_caps_unref (mode_caps);
       return gst_decklink_get_mode ((GstDecklinkModeEnum) i);
@@ -470,19 +497,25 @@
 
   virtual HRESULT STDMETHODCALLTYPE
       VideoInputFormatChanged (BMDVideoInputFormatChangedEvents,
-      IDeckLinkDisplayMode * mode, BMDDetectedVideoInputFormatFlags)
+      IDeckLinkDisplayMode * mode, BMDDetectedVideoInputFormatFlags formatFlags)
   {
+    BMDPixelFormat pixelFormat = bmdFormat8BitYUV;
+
     GST_INFO ("Video input format changed");
 
+    if (formatFlags & bmdDetectedVideoInputRGB444)
+      pixelFormat = bmdFormat8BitARGB;
+
     g_mutex_lock (&m_input->lock);
     m_input->input->PauseStreams ();
     m_input->input->EnableVideoInput (mode->GetDisplayMode (),
-        bmdFormat8BitYUV, bmdVideoInputEnableFormatDetection);
+        pixelFormat, bmdVideoInputEnableFormatDetection);
     m_input->input->FlushStreams ();
     m_input->input->StartStreams ();
     m_input->mode =
         gst_decklink_get_mode (gst_decklink_get_mode_enum_from_bmd
         (mode->GetDisplayMode ()));
+    m_input->format = pixelFormat;
     g_mutex_unlock (&m_input->lock);
 
     return S_OK;
diff --git a/sys/decklink/gstdecklink.h b/sys/decklink/gstdecklink.h
index 493b48e..6c32fee 100644
--- a/sys/decklink/gstdecklink.h
+++ b/sys/decklink/gstdecklink.h
@@ -126,7 +126,7 @@
 const GstDecklinkMode * gst_decklink_get_mode (GstDecklinkModeEnum e);
 const GstDecklinkModeEnum gst_decklink_get_mode_enum_from_bmd (BMDDisplayMode mode);
 const BMDVideoConnection gst_decklink_get_connection (GstDecklinkConnectionEnum e);
-GstCaps * gst_decklink_mode_get_caps (GstDecklinkModeEnum e);
+GstCaps * gst_decklink_mode_get_caps (GstDecklinkModeEnum e, BMDPixelFormat f);
 GstCaps * gst_decklink_mode_get_template_caps (void);
 
 typedef struct _GstDecklinkOutput GstDecklinkOutput;
@@ -172,6 +172,7 @@
   void (*got_video_frame) (GstElement *videosrc, IDeckLinkVideoInputFrame * frame, GstDecklinkModeEnum mode, GstClockTime capture_time, GstClockTime capture_duration);
   /* Configured mode or NULL */
   const GstDecklinkMode *mode;
+  BMDPixelFormat format;
 
   /* Set by the audio source */
   void (*got_audio_packet) (GstElement *videosrc, IDeckLinkAudioInputPacket * packet, GstClockTime capture_time);
diff --git a/sys/decklink/gstdecklinkaudiosrc.cpp b/sys/decklink/gstdecklinkaudiosrc.cpp
index e5ac8ae..9a701ee 100644
--- a/sys/decklink/gstdecklinkaudiosrc.cpp
+++ b/sys/decklink/gstdecklinkaudiosrc.cpp
@@ -556,9 +556,10 @@
           self->next_offset, start_offset);
     GST_BUFFER_FLAG_SET (*buffer, GST_BUFFER_FLAG_DISCONT);
     self->next_offset = end_offset;
+    // Got a discont and adjusted, reset the discont_time marker.
+    self->discont_time = GST_CLOCK_TIME_NONE;
   } else {
     // No discont, just keep counting
-    self->discont_time = GST_CLOCK_TIME_NONE;
     timestamp =
         gst_util_uint64_scale (self->next_offset, GST_SECOND, self->info.rate);
     self->next_offset += sample_count;
diff --git a/sys/decklink/gstdecklinkvideosink.cpp b/sys/decklink/gstdecklinkvideosink.cpp
index 7111cb1..eebeff3 100644
--- a/sys/decklink/gstdecklinkvideosink.cpp
+++ b/sys/decklink/gstdecklinkvideosink.cpp
@@ -330,7 +330,7 @@
   if (self->mode == GST_DECKLINK_MODE_AUTO)
     mode_caps = gst_decklink_mode_get_template_caps ();
   else
-    mode_caps = gst_decklink_mode_get_caps (self->mode);
+    mode_caps = gst_decklink_mode_get_caps (self->mode, bmdFormat8BitYUV);
   mode_caps = gst_caps_make_writable (mode_caps);
   /* For output we support any framerate and only really care about timestamps */
   gst_caps_map_in_place (mode_caps, reset_framerate, NULL);
diff --git a/sys/decklink/gstdecklinkvideosrc.cpp b/sys/decklink/gstdecklinkvideosrc.cpp
index 915393e..2b304f9 100644
--- a/sys/decklink/gstdecklinkvideosrc.cpp
+++ b/sys/decklink/gstdecklinkvideosrc.cpp
@@ -47,6 +47,7 @@
   IDeckLinkVideoInputFrame *frame;
   GstClockTime capture_time, capture_duration;
   GstDecklinkModeEnum mode;
+  BMDPixelFormat format;
 } CaptureFrame;
 
 static void
@@ -178,6 +179,7 @@
 {
   self->mode = DEFAULT_MODE;
   self->caps_mode = GST_DECKLINK_MODE_AUTO;
+  self->caps_format = bmdFormat8BitYUV;
   self->connection = DEFAULT_CONNECTION;
   self->device_number = 0;
   self->buffer_size = DEFAULT_BUFFER_SIZE;
@@ -352,9 +354,9 @@
 
   g_mutex_lock (&self->lock);
   if (self->caps_mode != GST_DECKLINK_MODE_AUTO)
-    mode_caps = gst_decklink_mode_get_caps (self->caps_mode);
+    mode_caps = gst_decklink_mode_get_caps (self->caps_mode, self->caps_format);
   else
-    mode_caps = gst_decklink_mode_get_caps (self->mode);
+    mode_caps = gst_decklink_mode_get_caps (self->mode, self->caps_format);
   g_mutex_unlock (&self->lock);
 
   if (filter) {
@@ -481,6 +483,7 @@
     f->capture_time = capture_time;
     f->capture_duration = capture_duration;
     f->mode = mode;
+    f->format = frame->GetPixelFormat ();
     frame->AddRef ();
     g_queue_push_tail (&self->current_frames, f);
     g_cond_signal (&self->cond);
@@ -515,12 +518,14 @@
   }
 
   g_mutex_lock (&self->lock);
-  if (self->mode == GST_DECKLINK_MODE_AUTO && self->caps_mode != f->mode) {
-    GST_DEBUG_OBJECT (self, "Mode changed from %d to %d", self->caps_mode,
-        f->mode);
+  if (self->mode == GST_DECKLINK_MODE_AUTO &&
+      (self->caps_mode != f->mode || self->caps_format != f->format)) {
+    GST_DEBUG_OBJECT (self, "Mode/Format changed from %d/%d to %d/%d",
+        self->caps_mode, self->caps_format, f->mode, f->format);
     self->caps_mode = f->mode;
+    self->caps_format = f->format;
     g_mutex_unlock (&self->lock);
-    caps = gst_decklink_mode_get_caps (f->mode);
+    caps = gst_decklink_mode_get_caps (f->mode, f->format);
     gst_video_info_from_caps (&self->info, caps);
     gst_base_src_set_caps (GST_BASE_SRC_CAST (bsrc), caps);
     gst_element_post_message (GST_ELEMENT_CAST (self),
diff --git a/sys/decklink/gstdecklinkvideosrc.h b/sys/decklink/gstdecklinkvideosrc.h
index 6cb5bb9..b83495f 100644
--- a/sys/decklink/gstdecklinkvideosrc.h
+++ b/sys/decklink/gstdecklinkvideosrc.h
@@ -52,6 +52,7 @@
 
   GstDecklinkModeEnum mode;
   GstDecklinkModeEnum caps_mode;
+  BMDPixelFormat caps_format;
   GstDecklinkConnectionEnum connection;
   gint device_number;
 
diff --git a/sys/directsound/Makefile.in b/sys/directsound/Makefile.in
index ebb8578..7bfc30d 100644
--- a/sys/directsound/Makefile.in
+++ b/sys/directsound/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -327,7 +326,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -349,7 +347,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -371,9 +368,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -535,6 +529,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -548,8 +543,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -636,8 +629,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -689,6 +680,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -709,6 +701,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -746,7 +740,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/dshowdecwrapper/Makefile.in b/sys/dshowdecwrapper/Makefile.in
index 2c5e598..8c930eb 100644
--- a/sys/dshowdecwrapper/Makefile.in
+++ b/sys/dshowdecwrapper/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -329,7 +328,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -351,7 +349,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -373,9 +370,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -537,6 +531,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -550,8 +545,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -638,8 +631,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -691,6 +682,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -711,6 +703,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -748,7 +742,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/dshowsrcwrapper/Makefile.in b/sys/dshowsrcwrapper/Makefile.in
index 57bd497..ba4df56 100644
--- a/sys/dshowsrcwrapper/Makefile.in
+++ b/sys/dshowsrcwrapper/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -240,7 +239,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -262,7 +260,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -284,9 +281,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -448,6 +442,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -461,8 +456,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -549,8 +542,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -602,6 +593,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -622,6 +614,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -659,7 +653,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/dshowvideosink/Makefile.in b/sys/dshowvideosink/Makefile.in
index d73795f..ede002d 100644
--- a/sys/dshowvideosink/Makefile.in
+++ b/sys/dshowvideosink/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -240,7 +239,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -262,7 +260,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -284,9 +281,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -448,6 +442,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -461,8 +456,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -549,8 +542,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -602,6 +593,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -622,6 +614,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -659,7 +653,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/dvb/Makefile.in b/sys/dvb/Makefile.in
index 3461695..0dc5698 100644
--- a/sys/dvb/Makefile.in
+++ b/sys/dvb/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -333,7 +332,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -355,7 +353,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -377,9 +374,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -541,6 +535,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -554,8 +549,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -642,8 +635,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -695,6 +686,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -715,6 +707,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -752,7 +746,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/dvb/gstdvbsrc.c b/sys/dvb/gstdvbsrc.c
index 18544e7..b93255f 100644
--- a/sys/dvb/gstdvbsrc.c
+++ b/sys/dvb/gstdvbsrc.c
@@ -99,7 +99,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include "_stdint.h"
 
 #include <unistd.h>
 
@@ -2056,8 +2055,8 @@
 gst_dvbsrc_output_frontend_stats (GstDvbSrc * src)
 {
   fe_status_t status;
-  uint16_t snr, _signal;
-  uint32_t ber, bad_blks;
+  guint16 snr, _signal;
+  guint32 ber, bad_blks;
   GstMessage *message;
   GstStructure *structure;
   int fe_fd = src->fd_frontend;
@@ -2099,7 +2098,7 @@
 struct diseqc_cmd
 {
   struct dvb_diseqc_master_cmd cmd;
-  uint32_t wait;
+  guint32 wait;
 };
 
 static void
diff --git a/sys/fbdev/Makefile.in b/sys/fbdev/Makefile.in
index 0df6acc..ed2aafd 100644
--- a/sys/fbdev/Makefile.in
+++ b/sys/fbdev/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/linsys/Makefile.in b/sys/linsys/Makefile.in
index d9dfa4d..8b615df 100644
--- a/sys/linsys/Makefile.in
+++ b/sys/linsys/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/nvenc/Makefile.in b/sys/nvenc/Makefile.in
index ff60ba5..186447c 100644
--- a/sys/nvenc/Makefile.in
+++ b/sys/nvenc/Makefile.in
@@ -119,16 +119,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -329,7 +328,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -351,7 +349,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -373,9 +370,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -537,6 +531,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -550,8 +545,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -638,8 +631,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -691,6 +682,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -711,6 +703,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -748,7 +742,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/nvenc/gstnvbaseenc.c b/sys/nvenc/gstnvbaseenc.c
index 8e5b088..6babb31 100644
--- a/sys/nvenc/gstnvbaseenc.c
+++ b/sys/nvenc/gstnvbaseenc.c
@@ -1140,31 +1140,33 @@
   data_pointer = data->in_gl_resource->cuda_pointer;
   for (i = 0; i < GST_VIDEO_INFO_N_PLANES (data->info); i++) {
     guint plane_n_components;
-    GstGLBaseBuffer *gl_buf_obj;
-    GstGLMemory *gl_mem;
+    GstGLBuffer *gl_buf_obj;
+    GstGLMemoryPBO *gl_mem;
     guint src_stride, dest_stride;
 
     gl_mem =
-        (GstGLMemory *) gst_buffer_peek_memory (data->frame->input_buffer, i);
-    g_assert (gst_is_gl_memory ((GstMemory *) gl_mem));
-    data->in_gl_resource->gl_mem[i] = gl_mem;
+        (GstGLMemoryPBO *) gst_buffer_peek_memory (data->frame->input_buffer,
+        i);
+    g_return_if_fail (gst_is_gl_memory_pbo ((GstMemory *) gl_mem));
+    data->in_gl_resource->gl_mem[i] = GST_GL_MEMORY_CAST (gl_mem);
     plane_n_components = _plane_get_n_components (data->info, i);
 
-    gl_buf_obj = (GstGLBaseBuffer *) gl_mem;
+    gl_buf_obj = (GstGLBuffer *) gl_mem->pbo;
+    g_return_if_fail (gl_buf_obj != NULL);
 
     /* get the texture into the PBO */
-    gst_gl_memory_upload_transfer (gl_mem);
-    gst_gl_memory_download_transfer (gl_mem);
+    gst_gl_memory_pbo_upload_transfer (gl_mem);
+    gst_gl_memory_pbo_download_transfer (gl_mem);
 
     GST_LOG_OBJECT (data->nvenc, "attempting to copy texture %u into cuda",
-        gl_mem->tex_id);
+        gl_mem->mem.tex_id);
 
     cuda_ret =
         cudaGraphicsGLRegisterBuffer (&data->in_gl_resource->cuda_texture,
         gl_buf_obj->id, cudaGraphicsRegisterFlagsReadOnly);
     if (cuda_ret != cudaSuccess) {
       GST_ERROR_OBJECT (data->nvenc, "failed to register GL texture %u to cuda "
-          "ret :%d", gl_mem->tex_id, cuda_ret);
+          "ret :%d", gl_mem->mem.tex_id, cuda_ret);
       g_assert_not_reached ();
     }
 
@@ -1172,17 +1174,18 @@
         cudaGraphicsMapResources (1, &data->in_gl_resource->cuda_texture, 0);
     if (cuda_ret != cudaSuccess) {
       GST_ERROR_OBJECT (data->nvenc, "failed to map GL texture %u into cuda "
-          "ret :%d", gl_mem->tex_id, cuda_ret);
+          "ret :%d", gl_mem->mem.tex_id, cuda_ret);
       g_assert_not_reached ();
     }
 
     cuda_ret =
-        cudaGraphicsResourceGetMappedPointer (&data->in_gl_resource->
-        cuda_plane_pointers[i], &data->in_gl_resource->cuda_num_bytes,
+        cudaGraphicsResourceGetMappedPointer (&data->
+        in_gl_resource->cuda_plane_pointers[i],
+        &data->in_gl_resource->cuda_num_bytes,
         data->in_gl_resource->cuda_texture);
     if (cuda_ret != cudaSuccess) {
       GST_ERROR_OBJECT (data->nvenc, "failed to get mapped pointer of map GL "
-          "texture %u in cuda ret :%d", gl_mem->tex_id, cuda_ret);
+          "texture %u in cuda ret :%d", gl_mem->mem.tex_id, cuda_ret);
       g_assert_not_reached ();
     }
 
@@ -1197,7 +1200,7 @@
         _get_plane_height (data->info, i), cudaMemcpyDeviceToDevice);
     if (cuda_ret != cudaSuccess) {
       GST_ERROR_OBJECT (data->nvenc, "failed to copy GL texture %u into cuda "
-          "ret :%d", gl_mem->tex_id, cuda_ret);
+          "ret :%d", gl_mem->mem.tex_id, cuda_ret);
       g_assert_not_reached ();
     }
 
@@ -1205,7 +1208,7 @@
         cudaGraphicsUnmapResources (1, &data->in_gl_resource->cuda_texture, 0);
     if (cuda_ret != cudaSuccess) {
       GST_ERROR_OBJECT (data->nvenc, "failed to unmap GL texture %u from cuda "
-          "ret :%d", gl_mem->tex_id, cuda_ret);
+          "ret :%d", gl_mem->mem.tex_id, cuda_ret);
       g_assert_not_reached ();
     }
 
@@ -1213,7 +1216,7 @@
         cudaGraphicsUnregisterResource (data->in_gl_resource->cuda_texture);
     if (cuda_ret != cudaSuccess) {
       GST_ERROR_OBJECT (data->nvenc, "failed to unregister GL texture %u from "
-          "cuda ret :%d", gl_mem->tex_id, cuda_ret);
+          "cuda ret :%d", gl_mem->mem.tex_id, cuda_ret);
       g_assert_not_reached ();
     }
 
diff --git a/sys/opensles/Makefile.in b/sys/opensles/Makefile.in
index 908b78e..4d86c59 100644
--- a/sys/opensles/Makefile.in
+++ b/sys/opensles/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -326,7 +325,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -348,7 +346,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -370,9 +367,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -534,6 +528,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -547,8 +542,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -635,8 +628,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -688,6 +679,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -708,6 +700,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -745,7 +739,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/pvr2d/Makefile.in b/sys/pvr2d/Makefile.in
index 110c966..1fe31ae 100644
--- a/sys/pvr2d/Makefile.in
+++ b/sys/pvr2d/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -327,7 +326,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -349,7 +347,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -371,9 +368,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -535,6 +529,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -548,8 +543,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -636,8 +629,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -689,6 +680,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -709,6 +701,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -746,7 +740,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/shm/Makefile.in b/sys/shm/Makefile.in
index 7824879..50f3705 100644
--- a/sys/shm/Makefile.in
+++ b/sys/shm/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -325,7 +324,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -347,7 +345,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -369,9 +366,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -533,6 +527,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -546,8 +541,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -634,8 +627,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -687,6 +678,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -707,6 +699,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -744,7 +738,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/shm/gstshmsink.c b/sys/shm/gstshmsink.c
index 784acca..13d67bd 100644
--- a/sys/shm/gstshmsink.c
+++ b/sys/shm/gstshmsink.c
@@ -715,8 +715,8 @@
     while (self->wait_for_connection && !self->clients) {
       g_cond_wait (&self->cond, GST_OBJECT_GET_LOCK (self));
       if (self->unlock) {
-        gst_memory_unref (memory);
         GST_OBJECT_UNLOCK (self);
+        gst_memory_unref (memory);
         return GST_FLOW_FLUSHING;
       }
     }
diff --git a/sys/tinyalsa/Makefile.am b/sys/tinyalsa/Makefile.am
new file mode 100644
index 0000000..b492ec8
--- /dev/null
+++ b/sys/tinyalsa/Makefile.am
@@ -0,0 +1,19 @@
+
+plugin_LTLIBRARIES = libgsttinyalsa.la
+
+libgsttinyalsa_la_SOURCES = tinyalsasink.c 	\
+                            tinyalsa.c
+
+libgsttinyalsa_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+    -Wno-deprecated-declarations
+libgsttinyalsa_la_LIBADD =            \
+    -ltinyalsa                        \
+    -lgstaudio-@GST_API_VERSION@      \
+    $(GST_PLUGINS_BASE_LIBS)          \
+    $(GST_BASE_LIBS)                  \
+    $(GST_LIBS)
+libgsttinyalsa_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgsttinyalsa_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
+
+noinst_HEADERS = tinyalsasink.h
+
diff --git a/ext/mpg123/Makefile.in b/sys/tinyalsa/Makefile.in
similarity index 87%
copy from ext/mpg123/Makefile.in
copy to sys/tinyalsa/Makefile.in
index e0f8f27..e13c606 100644
--- a/ext/mpg123/Makefile.in
+++ b/sys/tinyalsa/Makefile.in
@@ -90,7 +90,7 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-subdir = ext/mpg123
+subdir = sys/tinyalsa
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
 	$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -164,19 +163,19 @@
 am__installdirs = "$(DESTDIR)$(plugindir)"
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-libgstmpg123_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1)
-am_libgstmpg123_la_OBJECTS = libgstmpg123_la-gstmpg123audiodec.lo
-libgstmpg123_la_OBJECTS = $(am_libgstmpg123_la_OBJECTS)
+libgsttinyalsa_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgsttinyalsa_la_OBJECTS = libgsttinyalsa_la-tinyalsasink.lo \
+	libgsttinyalsa_la-tinyalsa.lo
+libgsttinyalsa_la_OBJECTS = $(am_libgsttinyalsa_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-libgstmpg123_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(libgstmpg123_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
-	$(CCLD) $(libgstmpg123_la_CFLAGS) $(CFLAGS) \
-	$(libgstmpg123_la_LDFLAGS) $(LDFLAGS) -o $@
+libgsttinyalsa_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(libgsttinyalsa_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+	$(CCLD) $(libgsttinyalsa_la_CFLAGS) $(CFLAGS) \
+	$(libgsttinyalsa_la_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -211,8 +210,8 @@
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libgstmpg123_la_SOURCES)
-DIST_SOURCES = $(libgstmpg123_la_SOURCES)
+SOURCES = $(libgsttinyalsa_la_SOURCES)
+DIST_SOURCES = $(libgsttinyalsa_la_SOURCES)
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -324,7 +323,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -346,7 +344,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -368,9 +365,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -532,6 +526,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -545,8 +540,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -633,8 +626,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -686,6 +677,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -706,6 +698,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -743,7 +737,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -783,18 +776,23 @@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
-plugin_LTLIBRARIES = libgstmpg123.la
-libgstmpg123_la_SOURCES = gstmpg123audiodec.c
-libgstmpg123_la_CFLAGS = -DGST_USE_UNSTABLE_API \
-	$(GST_PLUGINS_BASE_CFLAGS) \
-	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(MPG123_CFLAGS)
+plugin_LTLIBRARIES = libgsttinyalsa.la
+libgsttinyalsa_la_SOURCES = tinyalsasink.c 	\
+                            tinyalsa.c
 
-libgstmpg123_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstaudio-@GST_API_VERSION@ \
-	$(GST_BASE_LIBS) $(GST_LIBS) $(MPG123_LIBS)
+libgsttinyalsa_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+    -Wno-deprecated-declarations
 
-libgstmpg123_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstmpg123_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = gstmpg123audiodec.h
+libgsttinyalsa_la_LIBADD = \
+    -ltinyalsa                        \
+    -lgstaudio-@GST_API_VERSION@      \
+    $(GST_PLUGINS_BASE_LIBS)          \
+    $(GST_BASE_LIBS)                  \
+    $(GST_LIBS)
+
+libgsttinyalsa_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgsttinyalsa_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
+noinst_HEADERS = tinyalsasink.h
 all: all-am
 
 .SUFFIXES:
@@ -808,9 +806,9 @@
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/mpg123/Makefile'; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/tinyalsa/Makefile'; \
 	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu ext/mpg123/Makefile
+	  $(AUTOMAKE) --gnu sys/tinyalsa/Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
 	  *config.status*) \
@@ -864,8 +862,8 @@
 	  rm -f $${locs}; \
 	}
 
-libgstmpg123.la: $(libgstmpg123_la_OBJECTS) $(libgstmpg123_la_DEPENDENCIES) $(EXTRA_libgstmpg123_la_DEPENDENCIES) 
-	$(AM_V_CCLD)$(libgstmpg123_la_LINK) -rpath $(plugindir) $(libgstmpg123_la_OBJECTS) $(libgstmpg123_la_LIBADD) $(LIBS)
+libgsttinyalsa.la: $(libgsttinyalsa_la_OBJECTS) $(libgsttinyalsa_la_DEPENDENCIES) $(EXTRA_libgsttinyalsa_la_DEPENDENCIES) 
+	$(AM_V_CCLD)$(libgsttinyalsa_la_LINK) -rpath $(plugindir) $(libgsttinyalsa_la_OBJECTS) $(libgsttinyalsa_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -873,7 +871,8 @@
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsttinyalsa_la-tinyalsa.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgsttinyalsa_la-tinyalsasink.Plo@am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -899,12 +898,19 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
-libgstmpg123_la-gstmpg123audiodec.lo: gstmpg123audiodec.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstmpg123_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpg123_la_CFLAGS) $(CFLAGS) -MT libgstmpg123_la-gstmpg123audiodec.lo -MD -MP -MF $(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Tpo -c -o libgstmpg123_la-gstmpg123audiodec.lo `test -f 'gstmpg123audiodec.c' || echo '$(srcdir)/'`gstmpg123audiodec.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Tpo $(DEPDIR)/libgstmpg123_la-gstmpg123audiodec.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstmpg123audiodec.c' object='libgstmpg123_la-gstmpg123audiodec.lo' libtool=yes @AMDEPBACKSLASH@
+libgsttinyalsa_la-tinyalsasink.lo: tinyalsasink.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsttinyalsa_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsttinyalsa_la_CFLAGS) $(CFLAGS) -MT libgsttinyalsa_la-tinyalsasink.lo -MD -MP -MF $(DEPDIR)/libgsttinyalsa_la-tinyalsasink.Tpo -c -o libgsttinyalsa_la-tinyalsasink.lo `test -f 'tinyalsasink.c' || echo '$(srcdir)/'`tinyalsasink.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgsttinyalsa_la-tinyalsasink.Tpo $(DEPDIR)/libgsttinyalsa_la-tinyalsasink.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='tinyalsasink.c' object='libgsttinyalsa_la-tinyalsasink.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 $(libgstmpg123_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstmpg123_la_CFLAGS) $(CFLAGS) -c -o libgstmpg123_la-gstmpg123audiodec.lo `test -f 'gstmpg123audiodec.c' || echo '$(srcdir)/'`gstmpg123audiodec.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsttinyalsa_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsttinyalsa_la_CFLAGS) $(CFLAGS) -c -o libgsttinyalsa_la-tinyalsasink.lo `test -f 'tinyalsasink.c' || echo '$(srcdir)/'`tinyalsasink.c
+
+libgsttinyalsa_la-tinyalsa.lo: tinyalsa.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgsttinyalsa_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsttinyalsa_la_CFLAGS) $(CFLAGS) -MT libgsttinyalsa_la-tinyalsa.lo -MD -MP -MF $(DEPDIR)/libgsttinyalsa_la-tinyalsa.Tpo -c -o libgsttinyalsa_la-tinyalsa.lo `test -f 'tinyalsa.c' || echo '$(srcdir)/'`tinyalsa.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgsttinyalsa_la-tinyalsa.Tpo $(DEPDIR)/libgsttinyalsa_la-tinyalsa.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='tinyalsa.c' object='libgsttinyalsa_la-tinyalsa.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 $(libgsttinyalsa_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgsttinyalsa_la_CFLAGS) $(CFLAGS) -c -o libgsttinyalsa_la-tinyalsa.lo `test -f 'tinyalsa.c' || echo '$(srcdir)/'`tinyalsa.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
diff --git a/gst/rtp/gstrtp.c b/sys/tinyalsa/tinyalsa.c
similarity index 69%
rename from gst/rtp/gstrtp.c
rename to sys/tinyalsa/tinyalsa.c
index fd07748..5b676ab 100644
--- a/gst/rtp/gstrtp.c
+++ b/sys/tinyalsa/tinyalsa.c
@@ -1,5 +1,6 @@
 /* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) 2016 Centricular Ltd.
+ * Author: Arun Raghavan
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -21,27 +22,23 @@
 #include "config.h"
 #endif
 
-#include <gst/tag/tag.h>
+#include <gst/gst.h>
 
-#include "gstrtph265depay.h"
-#include "gstrtph265pay.h"
+#include "tinyalsasink.h"
 
 static gboolean
 plugin_init (GstPlugin * plugin)
 {
-  gst_tag_image_type_get_type ();
-
-  if (!gst_rtp_h265_depay_plugin_init (plugin))
+  if (!gst_element_register (plugin, "tinyalsasink", GST_RANK_NONE,
+          GST_TYPE_TINYALSA_SINK)) {
     return FALSE;
-
-  if (!gst_rtp_h265_pay_plugin_init (plugin))
-    return FALSE;
+  }
 
   return TRUE;
 }
 
 GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
     GST_VERSION_MINOR,
-    rtpbad,
-    "Real-time protocol plugins",
-    plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
+    tinyalsa,
+    "tinyalsa plugin library",
+    plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/sys/tinyalsa/tinyalsasink.c b/sys/tinyalsa/tinyalsasink.c
new file mode 100644
index 0000000..c29755e
--- /dev/null
+++ b/sys/tinyalsa/tinyalsasink.c
@@ -0,0 +1,502 @@
+/* GStreamer
+ * Copyright (C) 2016 Centricular Ltd.
+ * Author: Arun Raghavan <arun@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * SECTION:element-tinyalsasink
+ * @see_also: alsasink
+ *
+ * This element renders raw audio samples using the ALSA audio API via the
+ * tinyalsa library.
+ *
+ * <refsect2>
+ * <title>Example pipelines</title>
+ * |[
+ * gst-launch-1.0 -v uridecodebin uri=file:///path/to/audio.ogg ! audioconvert ! audioresample ! tinyalsasink
+ * ]| Play an Ogg/Vorbis file and output audio via ALSA using the tinyalsa
+ * library.
+ * </refsect2>
+ */
+
+#include <gst/audio/gstaudiobasesink.h>
+
+#include <tinyalsa/asoundlib.h>
+
+#include "tinyalsasink.h"
+
+/* Hardcoding these bitmask values rather than including a kernel header */
+#define SNDRV_PCM_FORMAT_S8 0
+#define SNDRV_PCM_FORMAT_S16_LE 2
+#define SNDRV_PCM_FORMAT_S24_LE 6
+#define SNDRV_PCM_FORMAT_S32_LE 10
+#define SNDRV_PCM_FORMAT_ANY            \
+  ((1 << SNDRV_PCM_FORMAT_S8)     |     \
+   (1 << SNDRV_PCM_FORMAT_S16_LE) |     \
+   (1 << SNDRV_PCM_FORMAT_S24_LE) |     \
+   (1 << SNDRV_PCM_FORMAT_S32_LE))
+
+GST_DEBUG_CATEGORY_STATIC (tinyalsa_sink_debug);
+#define GST_CAT_DEFAULT tinyalsa_sink_debug
+
+#define parent_class gst_tinyalsa_sink_parent_class
+G_DEFINE_TYPE (GstTinyalsaSink, gst_tinyalsa_sink, GST_TYPE_AUDIO_SINK);
+
+enum
+{
+  PROP_0,
+  PROP_CARD,
+  PROP_DEVICE,
+  PROP_LAST
+};
+
+#define DEFAULT_CARD 0
+#define DEFAULT_DEVICE 0
+
+static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
+    GST_PAD_SINK,
+    GST_PAD_ALWAYS,
+    GST_STATIC_CAPS ("audio/x-raw, "
+        "format = (string) { S16LE, S32LE, S24_32LE, S8 }, "
+        "channels = (int) [ 1, MAX ], "
+        "rate = (int) [ 1, MAX ], " "layout = (string) interleaved"));
+
+static void
+gst_tinyalsa_sink_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstTinyalsaSink *sink = GST_TINYALSA_SINK (object);
+
+  switch (prop_id) {
+    case PROP_CARD:
+      g_value_set_uint (value, sink->card);
+      break;
+
+    case PROP_DEVICE:
+      g_value_set_uint (value, sink->device);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_tinyalsa_sink_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstTinyalsaSink *sink = GST_TINYALSA_SINK (object);
+
+  switch (prop_id) {
+    case PROP_CARD:
+      sink->card = g_value_get_uint (value);
+      break;
+
+    case PROP_DEVICE:
+      sink->device = g_value_get_uint (value);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static GstCaps *
+gst_tinyalsa_sink_getcaps (GstBaseSink * bsink, GstCaps * filter)
+{
+  GstTinyalsaSink *sink = GST_TINYALSA_SINK (bsink);
+  GstCaps *caps = NULL;
+  GValue formats = { 0, };
+  GValue format = { 0, };
+  struct pcm_params *params = NULL;
+  struct pcm_mask *mask;
+  int rate_min, rate_max, channels_min, channels_max;
+  guint16 m;
+
+  GST_DEBUG_OBJECT (sink, "Querying caps");
+
+  GST_OBJECT_LOCK (sink);
+
+  if (sink->cached_caps) {
+    GST_DEBUG_OBJECT (sink, "Returning cached caps");
+    caps = gst_caps_ref (sink->cached_caps);
+    goto done;
+  }
+
+  if (sink->pcm) {
+    /* We can't query the device while it's open, so return current caps */
+    caps = gst_pad_get_current_caps (GST_BASE_SINK_PAD (bsink));
+    goto done;
+  }
+
+  params = pcm_params_get (sink->card, sink->device, PCM_OUT);
+  if (!params) {
+    GST_ERROR_OBJECT (sink, "Could not get PCM params");
+    goto done;
+  }
+
+  mask = pcm_params_get_mask (params, PCM_PARAM_FORMAT);
+  m = (mask->bits[1] << 8) | mask->bits[0];
+
+  if (!(m & SNDRV_PCM_FORMAT_ANY)) {
+    GST_ERROR_OBJECT (sink, "Could not find any supported format");
+    goto done;
+  }
+
+  caps = gst_caps_new_empty_simple ("audio/x-raw");
+
+  g_value_init (&formats, GST_TYPE_LIST);
+  g_value_init (&format, G_TYPE_STRING);
+
+  if (m & (1 << SNDRV_PCM_FORMAT_S8)) {
+    g_value_set_static_string (&format, "S8");
+    gst_value_list_prepend_value (&formats, &format);
+  }
+  if (m & (1 << SNDRV_PCM_FORMAT_S16_LE)) {
+    g_value_set_static_string (&format, "S16LE");
+    gst_value_list_prepend_value (&formats, &format);
+  }
+  if (m & (1 << SNDRV_PCM_FORMAT_S24_LE)) {
+    g_value_set_static_string (&format, "S24_32LE");
+    gst_value_list_prepend_value (&formats, &format);
+  }
+  if (m & (1 << SNDRV_PCM_FORMAT_S32_LE)) {
+    g_value_set_static_string (&format, "S32LE");
+    gst_value_list_prepend_value (&formats, &format);
+  }
+
+  gst_caps_set_value (caps, "format", &formats);
+
+  g_value_unset (&format);
+  g_value_unset (&formats);
+
+  /* This is a bit of a lie, since the device likely only supports some
+   * standard rates in this range. We should probably filter the range to
+   * those, standard audio rates but even that isn't guaranteed to be accurate.
+   */
+  rate_min = pcm_params_get_min (params, PCM_PARAM_RATE);
+  rate_max = pcm_params_get_max (params, PCM_PARAM_RATE);
+
+  if (rate_min == rate_max)
+    gst_caps_set_simple (caps, "rate", G_TYPE_INT, rate_min, NULL);
+  else
+    gst_caps_set_simple (caps, "rate", GST_TYPE_INT_RANGE, rate_min, rate_max,
+        NULL);
+
+  channels_min = pcm_params_get_min (params, PCM_PARAM_CHANNELS);
+  channels_max = pcm_params_get_max (params, PCM_PARAM_CHANNELS);
+
+  if (channels_min == channels_max)
+    gst_caps_set_simple (caps, "channels", G_TYPE_INT, channels_min, NULL);
+  else
+    gst_caps_set_simple (caps, "channels", GST_TYPE_INT_RANGE, channels_min,
+        channels_max, NULL);
+
+  gst_caps_replace (&sink->cached_caps, caps);
+
+done:
+  GST_OBJECT_UNLOCK (sink);
+
+  GST_DEBUG_OBJECT (sink, "Got caps %" GST_PTR_FORMAT, caps);
+
+  if (caps && filter) {
+    GstCaps *intersection =
+        gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
+
+    gst_caps_unref (caps);
+    caps = intersection;
+  }
+
+  if (params)
+    pcm_params_free (params);
+
+  return caps;
+}
+
+static gboolean
+gst_tinyalsa_sink_open (GstAudioSink * asink)
+{
+  /* Nothing to do here, we can't call pcm_open() till we have stream
+   * parameters available */
+  return TRUE;
+}
+
+static enum pcm_format
+pcm_format_from_gst (GstAudioFormat format)
+{
+  switch (format) {
+    case GST_AUDIO_FORMAT_S8:
+      return PCM_FORMAT_S8;
+
+    case GST_AUDIO_FORMAT_S16LE:
+      return PCM_FORMAT_S16_LE;
+
+    case GST_AUDIO_FORMAT_S24_32LE:
+      return PCM_FORMAT_S24_LE;
+
+    case GST_AUDIO_FORMAT_S32LE:
+      return PCM_FORMAT_S32_LE;
+
+    default:
+      g_assert_not_reached ();
+  }
+}
+
+static void
+pcm_config_from_spec (struct pcm_config *config,
+    const GstAudioRingBufferSpec * spec)
+{
+  gint64 frames;
+
+  config->format = pcm_format_from_gst (GST_AUDIO_INFO_FORMAT (&spec->info));
+  config->channels = GST_AUDIO_INFO_CHANNELS (&spec->info);
+  config->rate = GST_AUDIO_INFO_RATE (&spec->info);
+
+  gst_audio_info_convert (&spec->info,
+      GST_FORMAT_TIME, spec->latency_time * GST_USECOND,
+      GST_FORMAT_DEFAULT /* frames */ , &frames);
+
+  config->period_size = frames;
+  config->period_count = spec->buffer_time / spec->latency_time;
+}
+
+static gboolean
+gst_tinyalsa_sink_prepare (GstAudioSink * asink, GstAudioRingBufferSpec * spec)
+{
+  GstTinyalsaSink *sink = GST_TINYALSA_SINK (asink);
+  struct pcm_config config = { 0, };
+  struct pcm_params *params = NULL;
+  int period_size_min, period_size_max;
+  int periods_min, periods_max;
+
+  pcm_config_from_spec (&config, spec);
+
+  GST_DEBUG_OBJECT (sink, "Requesting %u periods of %u frames",
+      config.period_count, config.period_size);
+
+  params = pcm_params_get (sink->card, sink->device, PCM_OUT);
+  if (!params)
+    GST_ERROR_OBJECT (sink, "Could not get PCM params");
+
+  period_size_min = pcm_params_get_min (params, PCM_PARAM_PERIOD_SIZE);
+  period_size_max = pcm_params_get_max (params, PCM_PARAM_PERIOD_SIZE);
+  periods_min = pcm_params_get_min (params, PCM_PARAM_PERIODS);
+  periods_max = pcm_params_get_max (params, PCM_PARAM_PERIODS);
+
+  pcm_params_free (params);
+
+  /* Snap period size/count to the permitted range */
+  config.period_size =
+      CLAMP (config.period_size, period_size_min, period_size_max);
+  config.period_count = CLAMP (config.period_count, periods_min, periods_max);
+
+  /* mutex with getcaps */
+  GST_OBJECT_LOCK (sink);
+
+  sink->pcm = pcm_open (sink->card, sink->device, PCM_OUT | PCM_NORESTART,
+      &config);
+
+  GST_OBJECT_UNLOCK (sink);
+
+  if (!sink->pcm || !pcm_is_ready (sink->pcm)) {
+    GST_ERROR_OBJECT (sink, "Could not open device: %s",
+        pcm_get_error (sink->pcm));
+    goto fail;
+  }
+
+  if (pcm_prepare (sink->pcm) < 0) {
+    GST_ERROR_OBJECT (sink, "Could not prepare device: %s",
+        pcm_get_error (sink->pcm));
+    goto fail;
+  }
+
+  spec->segsize = pcm_frames_to_bytes (sink->pcm, config.period_size);
+  spec->segtotal = config.period_count;
+
+  GST_DEBUG_OBJECT (sink, "Configured for %u periods of %u frames",
+      config.period_count, config.period_size);
+
+  return TRUE;
+
+fail:
+  if (sink->pcm)
+    pcm_close (sink->pcm);
+
+  return FALSE;
+}
+
+static gboolean
+gst_tinyalsa_sink_unprepare (GstAudioSink * asink)
+{
+  GstTinyalsaSink *sink = GST_TINYALSA_SINK (asink);
+
+  if (pcm_stop (sink->pcm) < 0) {
+    GST_ERROR_OBJECT (sink, "Could not stop device: %s",
+        pcm_get_error (sink->pcm));
+  }
+
+  /* mutex with getcaps */
+  GST_OBJECT_LOCK (sink);
+
+  if (pcm_close (sink->pcm)) {
+    GST_ERROR_OBJECT (sink, "Could not close device: %s",
+        pcm_get_error (sink->pcm));
+    return FALSE;
+  }
+
+  sink->pcm = NULL;
+
+  gst_caps_replace (&sink->cached_caps, NULL);
+
+  GST_OBJECT_UNLOCK (sink);
+
+  GST_DEBUG_OBJECT (sink, "Device unprepared");
+
+  return TRUE;
+}
+
+static gboolean
+gst_tinyalsa_sink_close (GstAudioSink * asink)
+{
+  /* Nothing to do here, see gst_tinyalsa_sink_open() */
+  return TRUE;
+}
+
+static gint
+gst_tinyalsa_sink_write (GstAudioSink * asink, gpointer data, guint length)
+{
+  GstTinyalsaSink *sink = GST_TINYALSA_SINK (asink);
+  int ret;
+
+again:
+  GST_DEBUG_OBJECT (sink, "Starting write");
+
+  ret = pcm_write (sink->pcm, data, length);
+  if (ret == -EPIPE) {
+    GST_WARNING_OBJECT (sink, "Got an underrun");
+
+    if (pcm_prepare (sink->pcm) < 0) {
+      GST_ERROR_OBJECT (sink, "Could not prepare device: %s",
+          pcm_get_error (sink->pcm));
+      return -1;
+    }
+
+    goto again;
+
+  } else if (ret < 0) {
+    GST_ERROR_OBJECT (sink, "Could not write data to device: %s",
+        pcm_get_error (sink->pcm));
+    return -1;
+  }
+
+  GST_DEBUG_OBJECT (sink, "Wrote %u bytes", length);
+
+  return length;
+}
+
+static void
+gst_tinyalsa_sink_reset (GstAudioSink * asink)
+{
+  GstTinyalsaSink *sink = GST_TINYALSA_SINK (asink);
+
+  if (pcm_stop (sink->pcm) < 0) {
+    GST_ERROR_OBJECT (sink, "Could not stop device: %s",
+        pcm_get_error (sink->pcm));
+  }
+
+  if (pcm_prepare (sink->pcm) < 0) {
+    GST_ERROR_OBJECT (sink, "Could not prepare device: %s",
+        pcm_get_error (sink->pcm));
+  }
+}
+
+static guint
+gst_tinyalsa_sink_delay (GstAudioSink * asink)
+{
+  GstTinyalsaSink *sink = GST_TINYALSA_SINK (asink);
+  int delay;
+
+  delay = pcm_get_delay (sink->pcm);
+
+  if (delay < 0) {
+    /* This might happen before the stream has started */
+    GST_DEBUG_OBJECT (sink, "Got negative delay");
+    delay = 0;
+  } else
+    GST_DEBUG_OBJECT (sink, "Got delay of %u", delay);
+
+  return delay;
+}
+
+static void
+gst_tinyalsa_sink_class_init (GstTinyalsaSinkClass * klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+  GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+  GstBaseSinkClass *basesink_class = GST_BASE_SINK_CLASS (klass);
+  GstAudioSinkClass *audiosink_class = GST_AUDIO_SINK_CLASS (klass);
+
+  gobject_class->get_property =
+      GST_DEBUG_FUNCPTR (gst_tinyalsa_sink_get_property);
+  gobject_class->set_property =
+      GST_DEBUG_FUNCPTR (gst_tinyalsa_sink_set_property);
+
+  basesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_tinyalsa_sink_getcaps);
+
+  audiosink_class->open = GST_DEBUG_FUNCPTR (gst_tinyalsa_sink_open);
+  audiosink_class->prepare = GST_DEBUG_FUNCPTR (gst_tinyalsa_sink_prepare);
+  audiosink_class->unprepare = GST_DEBUG_FUNCPTR (gst_tinyalsa_sink_unprepare);
+  audiosink_class->close = GST_DEBUG_FUNCPTR (gst_tinyalsa_sink_close);
+  audiosink_class->write = GST_DEBUG_FUNCPTR (gst_tinyalsa_sink_write);
+  audiosink_class->reset = GST_DEBUG_FUNCPTR (gst_tinyalsa_sink_reset);
+  audiosink_class->delay = GST_DEBUG_FUNCPTR (gst_tinyalsa_sink_delay);
+
+  gst_element_class_set_static_metadata (element_class,
+      "tinyalsa Audio Sink",
+      "Sink/Audio", "Plays audio to an ALSA device",
+      "Arun Raghavan <arun@centricular.com>");
+
+  gst_element_class_add_pad_template (element_class,
+      gst_static_pad_template_get (&sink_template));
+
+  g_object_class_install_property (gobject_class,
+      PROP_CARD,
+      g_param_spec_uint ("card", "Card", "The ALSA card to use",
+          0, G_MAXUINT, DEFAULT_CARD,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_property (gobject_class,
+      PROP_DEVICE,
+      g_param_spec_uint ("device", "Device", "The ALSA device to use",
+          0, G_MAXUINT, DEFAULT_CARD,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+  GST_DEBUG_CATEGORY_INIT (tinyalsa_sink_debug, "tinyalsasink", 0,
+      "tinyalsa Sink");
+}
+
+static void
+gst_tinyalsa_sink_init (GstTinyalsaSink * sink)
+{
+  sink->card = DEFAULT_CARD;
+  sink->device = DEFAULT_DEVICE;
+
+  sink->cached_caps = NULL;
+}
diff --git a/sys/tinyalsa/tinyalsasink.h b/sys/tinyalsa/tinyalsasink.h
new file mode 100644
index 0000000..a6ae3bf
--- /dev/null
+++ b/sys/tinyalsa/tinyalsasink.h
@@ -0,0 +1,57 @@
+/* GStreamer
+ * Copyright (C) 2016 Centricular Ltd.
+ * Author: Arun Raghavan
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __TINYALSASINK_H__
+#define __TINYALSASINK_H__
+
+#include <tinyalsa/asoundlib.h>
+
+#include <gst/audio/gstaudiosink.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_TINYALSA_SINK \
+  (gst_tinyalsa_sink_get_type())
+#define GST_TINYALSA_SINK(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_TINYALSA_SINK,GstTinyalsaSink))
+#define GST_TINYALSA_SINK_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_TINYALSA_SINK,GstTinyalsaSinkClass))
+
+typedef struct _GstTinyalsaSink GstTinyalsaSink;
+typedef struct _GstTinyalsaSinkClass GstTinyalsaSinkClass;
+
+struct _GstTinyalsaSink {
+  GstAudioSink parent;
+
+  int card;
+  int device;
+
+  struct pcm *pcm;
+
+  GstCaps *cached_caps; /* for queries made while the device is open */
+};
+
+struct _GstTinyalsaSinkClass {
+  GstAudioSinkClass parent_class;
+};
+
+GType gst_tinyalsa_sink_get_type (void);
+
+#endif /* __TINYALSASINK_H__ */
diff --git a/sys/uvch264/Makefile.in b/sys/uvch264/Makefile.in
index 999ae6e..b2343f9 100644
--- a/sys/uvch264/Makefile.in
+++ b/sys/uvch264/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -328,7 +327,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -350,7 +348,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -372,9 +369,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -536,6 +530,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -549,8 +544,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -637,8 +630,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -690,6 +681,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -710,6 +702,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -747,7 +741,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/uvch264/gstuvch264_src.c b/sys/uvch264/gstuvch264_src.c
index 94c09fa..eae7d82 100644
--- a/sys/uvch264/gstuvch264_src.c
+++ b/sys/uvch264/gstuvch264_src.c
@@ -3042,8 +3042,8 @@
   if (self->v4l2_src) {
     GstCaps *filter;
     GstPad *v4l_pad = gst_element_get_static_pad (self->v4l2_src, "src");
-    GstCaps *v4l_caps = gst_pad_query_caps (v4l_pad, NULL);
-    GstCaps *new_caps = gst_uvc_h264_src_transform_caps (self, v4l_caps);
+    GstCaps *v4l_caps = NULL;
+    GstCaps *new_caps = NULL;
 
     gst_query_parse_caps (query, &filter);
     v4l_caps = gst_pad_query_caps (v4l_pad, filter);
diff --git a/sys/vcd/Makefile.in b/sys/vcd/Makefile.in
index 229a5b3..19d09de 100644
--- a/sys/vcd/Makefile.in
+++ b/sys/vcd/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/vdpau/Makefile.in b/sys/vdpau/Makefile.in
index 2204dc6..1ce42e8 100644
--- a/sys/vdpau/Makefile.in
+++ b/sys/vdpau/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -331,7 +330,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -353,7 +351,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -375,9 +372,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -539,6 +533,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -552,8 +547,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -640,8 +633,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -693,6 +684,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -713,6 +705,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -750,7 +744,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/wasapi/Makefile.in b/sys/wasapi/Makefile.in
index fbb6325..0fb3aeb 100644
--- a/sys/wasapi/Makefile.in
+++ b/sys/wasapi/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -327,7 +326,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -349,7 +347,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -371,9 +368,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -535,6 +529,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -548,8 +543,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -636,8 +629,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -689,6 +680,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -709,6 +701,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -746,7 +740,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/wininet/Makefile.in b/sys/wininet/Makefile.in
index 655c690..b7afd9d 100644
--- a/sys/wininet/Makefile.in
+++ b/sys/wininet/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -323,7 +322,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -345,7 +343,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -367,9 +364,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -531,6 +525,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -544,8 +539,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -632,8 +625,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -685,6 +676,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -705,6 +697,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -742,7 +736,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/winks/Makefile.in b/sys/winks/Makefile.in
index 3ff4a9b..64eecac 100644
--- a/sys/winks/Makefile.in
+++ b/sys/winks/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -328,7 +327,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -350,7 +348,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -372,9 +369,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -536,6 +530,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -549,8 +544,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -637,8 +630,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -690,6 +681,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -710,6 +702,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -747,7 +741,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/sys/winscreencap/Makefile.in b/sys/winscreencap/Makefile.in
index 126a337..cd539ae 100644
--- a/sys/winscreencap/Makefile.in
+++ b/sys/winscreencap/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -327,7 +326,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -349,7 +347,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -371,9 +368,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -535,6 +529,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -548,8 +543,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -636,8 +629,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -689,6 +680,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -709,6 +701,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -746,7 +740,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 1353a65..684625a 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -114,16 +114,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -296,7 +295,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -318,7 +316,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -340,9 +337,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -504,6 +498,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -517,8 +512,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -605,8 +598,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -658,6 +649,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -678,6 +670,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -715,7 +709,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index 1701aa0..1828cb6 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -9,15 +9,15 @@
 	GST_REGISTRY_1_0=$(CHECK_REGISTRY)
 
 # GST_PLUGINS_XYZ_DIR is only set in an uninstalled setup
-AM_TESTS_ENVIRONMENT = \
+AM_TESTS_ENVIRONMENT += \
 	$(REGISTRY_ENVIRONMENT)                                 \
 	GST_PLUGIN_SYSTEM_PATH_1_0=				\
 	GST_PLUGIN_PATH_1_0=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(GST_PLUGINS_LIBAV_DIR):$(GST_PLUGINS_UGLY_DIR):$(GST_PLUGINS_GOOD_DIR):$(GST_PLUGINS_BASE_DIR):$(GST_PLUGINS_DIR) \
 	GST_PLUGIN_LOADING_WHITELIST="gstreamer@$(GST_PLUGINS_DIR):gst-plugins-base@$(GSTPB_PLUGINS_DIR):gst-plugins-good:gst-plugins-ugly:gst-libav:gst-plugins-bad@$(top_builddir)" \
 	GST_STATE_IGNORE_ELEMENTS="apexsink avdtpsrc camerabin dc1394src \
 	    dccpclientsrc dccpclientsink dccpserversrc dccpserversink decklinksrc \
-	    decklinksink dtlssrtpdec dtlssrtpenc dvbsrc dvbbasebin dfbvideosink festival fluidsynth gsettingsvideosrc \
-	    gsettingsvideosink gsettingsaudiosrc gsettingsaudiosink linsyssdisrc linsyssdisink nassink \
+	    decklinksink dtlssrtpdec dtlssrtpenc dvbsrc dvbbasebin dfbvideosink festival fluidsynth \
+	    linsyssdisrc linsyssdisink nassink \
 	    rsndvdbin sdlaudiosink sdlvideosink vcdsrc rfbsrc vdpauyuvvideo vdpauvideoyuv \
 	    vdpaumpegdec vdpaumpeg4dec vdpauh264dec vdpauvideopostprocess vdpausink neonhttpsrc"
 
@@ -84,18 +84,18 @@
 check_mpeg2enc =
 endif
 
-if USE_MPG123
-check_mpg123 = elements/mpg123audiodec
-else
-check_mpg123 =
-endif
-
 if USE_MPLEX
 check_mplex = elements/mplex
 else
 check_mplex =
 endif
 
+if USE_SMOOTHSTREAMING
+check_mssdemux = elements/mssdemux
+else
+check_mssdemux =
+endif
+
 if USE_NEON
 check_neon = elements/neonhttpsrc
 else
@@ -170,7 +170,7 @@
 
 if USE_HLS
 check_hlsdemux_m3u8 = elements/hlsdemux_m3u8
-check_hls_demux = elements/hls_demux
+check_hlsdemux = elements/hls_demux
 else
 check_hlsdemux_m3u8 =
 check_hlsdemux =
@@ -215,6 +215,7 @@
     libs/gstglmemory \
     libs/gstglupload \
     libs/gstglcolorconvert \
+    libs/gstglquery \
     libs/gstglsl \
     elements/glimagesink
 else
@@ -247,6 +248,7 @@
 	$(check_voamrwbenc) \
 	$(check_mpeg2enc)  \
 	$(check_mplex)     \
+	$(check_mssdemux) \
 	$(check_ofa)        \
 	$(check_timidity)  \
 	$(check_kate)  \
@@ -273,9 +275,9 @@
 	elements/mpegtsmux \
 	elements/mpegvideoparse \
 	elements/mpeg4videoparse \
-	$(check_mpg123) \
 	elements/mxfdemux \
 	elements/mxfmux \
+	elements/netsim \
 	elements/pcapparse \
 	elements/rtponvifparse \
 	elements/rtponviftimestamp \
@@ -446,11 +448,6 @@
 elements_mpegtsmux_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
 elements_mpegtsmux_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD)
 
-elements_mpg123audiodec_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
-elements_mpg123audiodec_LDADD = \
-	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
-	-lgstaudio-@GST_API_VERSION@ -lgstfft-@GST_API_VERSION@ -lgstapp-@GST_API_VERSION@
-
 elements_uvch264demux_CFLAGS = -DUVCH264DEMUX_DATADIR="$(srcdir)/elements/uvch264demux_data" \
 				$(AM_CFLAGS)
 
@@ -468,6 +465,15 @@
 
 elements_dash_demux_SOURCES = elements/test_http_src.c elements/test_http_src.h elements/adaptive_demux_engine.c elements/adaptive_demux_engine.h elements/adaptive_demux_common.c elements/adaptive_demux_common.h elements/dash_demux.c
 
+elements_mssdemux_CFLAGS = $(AM_CFLAGS) $(LIBXML2_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
+elements_mssdemux_LDADD = \
+	$(LDADD) $(LIBXML2_LIBS) $(GST_BASE_LIBS) \
+	-lgsttag-$(GST_API_VERSION) \
+	-lgstapp-$(GST_API_VERSION) \
+	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
+
+elements_mssdemux_SOURCES = elements/test_http_src.c elements/test_http_src.h elements/adaptive_demux_engine.c elements/adaptive_demux_engine.h elements/adaptive_demux_common.c elements/adaptive_demux_common.h elements/mssdemux.c
+
 pipelines_streamheader_CFLAGS = $(GIO_CFLAGS) $(AM_CFLAGS)
 pipelines_streamheader_LDADD = $(GIO_LIBS) $(LDADD)
 
@@ -570,6 +576,15 @@
 	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
 	$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
 
+libs_gstglquery_LDADD = \
+	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
+	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+
+libs_gstglquery_CFLAGS = \
+	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
+	-DGST_USE_UNSTABLE_API \
+	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
+
 libs_gstglsl_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
 	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index 365db84..2f0441a 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -97,8 +97,8 @@
 	$(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \
 	$(am__EXEEXT_8) $(am__EXEEXT_9) $(am__EXEEXT_10) \
 	$(am__EXEEXT_11) $(am__EXEEXT_12) $(am__EXEEXT_13) \
-	$(am__EXEEXT_14) $(am__EXEEXT_16) $(am__EXEEXT_17) \
-	elements/aiffparse$(EXEEXT) \
+	$(am__EXEEXT_14) $(am__EXEEXT_15) $(am__EXEEXT_17) \
+	$(am__EXEEXT_18) elements/aiffparse$(EXEEXT) \
 	elements/videoframe-audiolevel$(EXEEXT) \
 	elements/autoconvert$(EXEEXT) \
 	elements/autovideoconvert$(EXEEXT) \
@@ -106,11 +106,11 @@
 	elements/asfmux$(EXEEXT) elements/camerabin$(EXEEXT) \
 	elements/dataurisrc$(EXEEXT) elements/gdppay$(EXEEXT) \
 	elements/gdpdepay$(EXEEXT) elements/compositor$(EXEEXT) \
-	$(am__EXEEXT_18) elements/jpegparse$(EXEEXT) \
+	$(am__EXEEXT_19) elements/jpegparse$(EXEEXT) \
 	elements/h263parse$(EXEEXT) elements/h264parse$(EXEEXT) \
 	elements/mpegtsmux$(EXEEXT) elements/mpegvideoparse$(EXEEXT) \
-	elements/mpeg4videoparse$(EXEEXT) $(am__EXEEXT_19) \
-	elements/mxfdemux$(EXEEXT) elements/mxfmux$(EXEEXT) \
+	elements/mpeg4videoparse$(EXEEXT) elements/mxfdemux$(EXEEXT) \
+	elements/mxfmux$(EXEEXT) elements/netsim$(EXEEXT) \
 	elements/pcapparse$(EXEEXT) elements/rtponvifparse$(EXEEXT) \
 	elements/rtponviftimestamp$(EXEEXT) elements/id3mux$(EXEEXT) \
 	pipelines/mxf$(EXEEXT) $(am__EXEEXT_20) \
@@ -148,16 +148,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -187,19 +186,19 @@
 @USE_VOAMRWBENC_TRUE@am__EXEEXT_7 = elements/voamrwbenc$(EXEEXT)
 @USE_MPEG2ENC_TRUE@am__EXEEXT_8 = elements/mpeg2enc$(EXEEXT)
 @USE_MPLEX_TRUE@am__EXEEXT_9 = elements/mplex$(EXEEXT)
-@USE_OFA_TRUE@am__EXEEXT_10 = elements/ofa$(EXEEXT)
-@USE_TIMIDITY_TRUE@am__EXEEXT_11 = elements/timidity$(EXEEXT)
-@USE_KATE_TRUE@am__EXEEXT_12 = elements/kate$(EXEEXT)
-@USE_OPENCV_TRUE@am__EXEEXT_13 = elements/templatematch$(EXEEXT)
-@USE_OPUS_TRUE@am__EXEEXT_14 = elements/opus$(EXEEXT)
-@USE_SSH2_TRUE@am__EXEEXT_15 = elements/curlsftpsink$(EXEEXT)
-@USE_CURL_TRUE@am__EXEEXT_16 = elements/curlhttpsink$(EXEEXT) \
+@USE_SMOOTHSTREAMING_TRUE@am__EXEEXT_10 = elements/mssdemux$(EXEEXT)
+@USE_OFA_TRUE@am__EXEEXT_11 = elements/ofa$(EXEEXT)
+@USE_TIMIDITY_TRUE@am__EXEEXT_12 = elements/timidity$(EXEEXT)
+@USE_KATE_TRUE@am__EXEEXT_13 = elements/kate$(EXEEXT)
+@USE_OPENCV_TRUE@am__EXEEXT_14 = elements/templatematch$(EXEEXT)
+@USE_OPUS_TRUE@am__EXEEXT_15 = elements/opus$(EXEEXT)
+@USE_SSH2_TRUE@am__EXEEXT_16 = elements/curlsftpsink$(EXEEXT)
+@USE_CURL_TRUE@am__EXEEXT_17 = elements/curlhttpsink$(EXEEXT) \
 @USE_CURL_TRUE@	elements/curlfilesink$(EXEEXT) \
-@USE_CURL_TRUE@	elements/curlftpsink$(EXEEXT) $(am__EXEEXT_15) \
+@USE_CURL_TRUE@	elements/curlftpsink$(EXEEXT) $(am__EXEEXT_16) \
 @USE_CURL_TRUE@	elements/curlsmtpsink$(EXEEXT)
-@USE_SHM_TRUE@am__EXEEXT_17 = elements/shm$(EXEEXT)
-@USE_EXIF_TRUE@am__EXEEXT_18 = elements/jifmux$(EXEEXT)
-@USE_MPG123_TRUE@am__EXEEXT_19 = elements/mpg123audiodec$(EXEEXT)
+@USE_SHM_TRUE@am__EXEEXT_18 = elements/shm$(EXEEXT)
+@USE_EXIF_TRUE@am__EXEEXT_19 = elements/jifmux$(EXEEXT)
 @USE_MIMIC_TRUE@am__EXEEXT_20 = pipelines/mimic$(EXEEXT)
 @USE_UVCH264_TRUE@am__EXEEXT_21 = elements/uvch264demux$(EXEEXT)
 @USE_SCHRO_TRUE@am__EXEEXT_22 = elements/schroenc$(EXEEXT)
@@ -211,10 +210,10 @@
 @USE_GL_TRUE@	libs/gstglmemory$(EXEEXT) \
 @USE_GL_TRUE@	libs/gstglupload$(EXEEXT) \
 @USE_GL_TRUE@	libs/gstglcolorconvert$(EXEEXT) \
-@USE_GL_TRUE@	libs/gstglsl$(EXEEXT) \
+@USE_GL_TRUE@	libs/gstglquery$(EXEEXT) libs/gstglsl$(EXEEXT) \
 @USE_GL_TRUE@	elements/glimagesink$(EXEEXT)
 @USE_HLS_TRUE@am__EXEEXT_27 = elements/hlsdemux_m3u8$(EXEEXT)
-am__EXEEXT_28 =
+@USE_HLS_TRUE@am__EXEEXT_28 = elements/hls_demux$(EXEEXT)
 @WITH_GST_PLAYER_TESTS_TRUE@am__EXEEXT_29 = libs/player$(EXEEXT)
 @USE_NEON_TRUE@am__EXEEXT_30 = elements/neonhttpsrc$(EXEEXT)
 PROGRAMS = $(noinst_PROGRAMS)
@@ -381,6 +380,19 @@
 elements_h264parse_SOURCES = elements/h264parse.c
 elements_h264parse_OBJECTS = elements/h264parse.$(OBJEXT)
 elements_h264parse_DEPENDENCIES = libparser.la $(am__DEPENDENCIES_2)
+am_elements_hls_demux_OBJECTS =  \
+	elements/elements_hls_demux-test_http_src.$(OBJEXT) \
+	elements/elements_hls_demux-adaptive_demux_engine.$(OBJEXT) \
+	elements/elements_hls_demux-adaptive_demux_common.$(OBJEXT) \
+	elements/elements_hls_demux-hls_demux.$(OBJEXT)
+elements_hls_demux_OBJECTS = $(am_elements_hls_demux_OBJECTS)
+elements_hls_demux_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_2) \
+	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
+elements_hls_demux_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(elements_hls_demux_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+	$(LDFLAGS) -o $@
 am_elements_hlsdemux_m3u8_OBJECTS =  \
 	elements/elements_hlsdemux_m3u8-hlsdemux_m3u8.$(OBJEXT)
 elements_hlsdemux_m3u8_OBJECTS = $(am_elements_hlsdemux_m3u8_OBJECTS)
@@ -436,20 +448,23 @@
 elements_mpegvideoparse_OBJECTS = elements/mpegvideoparse.$(OBJEXT)
 elements_mpegvideoparse_DEPENDENCIES = libparser.la \
 	$(am__DEPENDENCIES_2)
-elements_mpg123audiodec_SOURCES = elements/mpg123audiodec.c
-elements_mpg123audiodec_OBJECTS =  \
-	elements/elements_mpg123audiodec-mpg123audiodec.$(OBJEXT)
-elements_mpg123audiodec_DEPENDENCIES = $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-	$(am__DEPENDENCIES_2)
-elements_mpg123audiodec_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
-	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
-	$(elements_mpg123audiodec_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
-	$(LDFLAGS) -o $@
 elements_mplex_SOURCES = elements/mplex.c
 elements_mplex_OBJECTS = elements/mplex.$(OBJEXT)
 elements_mplex_LDADD = $(LDADD)
 elements_mplex_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_elements_mssdemux_OBJECTS =  \
+	elements/elements_mssdemux-test_http_src.$(OBJEXT) \
+	elements/elements_mssdemux-adaptive_demux_engine.$(OBJEXT) \
+	elements/elements_mssdemux-adaptive_demux_common.$(OBJEXT) \
+	elements/elements_mssdemux-mssdemux.$(OBJEXT)
+elements_mssdemux_OBJECTS = $(am_elements_mssdemux_OBJECTS)
+elements_mssdemux_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
+elements_mssdemux_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(elements_mssdemux_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
 elements_mxfdemux_SOURCES = elements/mxfdemux.c
 elements_mxfdemux_OBJECTS = elements/mxfdemux.$(OBJEXT)
 elements_mxfdemux_LDADD = $(LDADD)
@@ -462,6 +477,10 @@
 elements_neonhttpsrc_OBJECTS = elements/neonhttpsrc.$(OBJEXT)
 elements_neonhttpsrc_LDADD = $(LDADD)
 elements_neonhttpsrc_DEPENDENCIES = $(am__DEPENDENCIES_1)
+elements_netsim_SOURCES = elements/netsim.c
+elements_netsim_OBJECTS = elements/netsim.$(OBJEXT)
+elements_netsim_LDADD = $(LDADD)
+elements_netsim_DEPENDENCIES = $(am__DEPENDENCIES_1)
 elements_ofa_SOURCES = elements/ofa.c
 elements_ofa_OBJECTS = elements/ofa.$(OBJEXT)
 elements_ofa_LDADD = $(LDADD)
@@ -608,6 +627,16 @@
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 	$(libs_gstglmemory_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
 	-o $@
+libs_gstglquery_SOURCES = libs/gstglquery.c
+libs_gstglquery_OBJECTS = libs/libs_gstglquery-gstglquery.$(OBJEXT)
+libs_gstglquery_DEPENDENCIES =  \
+	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+libs_gstglquery_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(libs_gstglquery_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
 libs_gstglsl_SOURCES = libs/gstglsl.c
 libs_gstglsl_OBJECTS = libs/libs_gstglsl-gstglsl.$(OBJEXT)
 libs_gstglsl_DEPENDENCIES =  \
@@ -776,13 +805,14 @@
 	$(elements_dash_mpd_SOURCES) elements/dataurisrc.c \
 	elements/faac.c elements/faad.c elements/gdpdepay.c \
 	elements/gdppay.c elements/glimagesink.c elements/h263parse.c \
-	elements/h264parse.c $(elements_hlsdemux_m3u8_SOURCES) \
-	elements/id3mux.c $(elements_jifmux_SOURCES) \
-	elements/jpegparse.c elements/kate.c elements/mpeg2enc.c \
-	elements/mpeg4videoparse.c elements/mpegtsmux.c \
-	elements/mpegvideoparse.c elements/mpg123audiodec.c \
-	elements/mplex.c elements/mxfdemux.c elements/mxfmux.c \
-	elements/neonhttpsrc.c elements/ofa.c elements/opus.c \
+	elements/h264parse.c $(elements_hls_demux_SOURCES) \
+	$(elements_hlsdemux_m3u8_SOURCES) elements/id3mux.c \
+	$(elements_jifmux_SOURCES) elements/jpegparse.c \
+	elements/kate.c elements/mpeg2enc.c elements/mpeg4videoparse.c \
+	elements/mpegtsmux.c elements/mpegvideoparse.c \
+	elements/mplex.c $(elements_mssdemux_SOURCES) \
+	elements/mxfdemux.c elements/mxfmux.c elements/neonhttpsrc.c \
+	elements/netsim.c elements/ofa.c elements/opus.c \
 	elements/pcapparse.c elements/rtponvifparse.c \
 	elements/rtponviftimestamp.c elements/schroenc.c \
 	elements/shm.c elements/templatematch.c elements/timidity.c \
@@ -790,13 +820,14 @@
 	elements/viewfinderbin.c elements/voaacenc.c \
 	elements/voamrwbenc.c elements/x265enc.c elements/zbar.c \
 	generic/states.c libs/aggregator.c libs/gstglcolorconvert.c \
-	libs/gstglcontext.c libs/gstglmemory.c libs/gstglsl.c \
-	libs/gstglupload.c libs/h264parser.c libs/insertbin.c \
-	libs/mpegts.c libs/mpegvideoparser.c $(libs_player_SOURCES) \
-	$(nodist_libs_player_SOURCES) libs/vc1parser.c \
-	libs/vp8parser.c $(nodist_orc_audiomixer_SOURCES) \
-	$(nodist_orc_bayer_SOURCES) $(nodist_orc_compositor_SOURCES) \
-	pipelines/mimic.c pipelines/mxf.c pipelines/streamheader.c
+	libs/gstglcontext.c libs/gstglmemory.c libs/gstglquery.c \
+	libs/gstglsl.c libs/gstglupload.c libs/h264parser.c \
+	libs/insertbin.c libs/mpegts.c libs/mpegvideoparser.c \
+	$(libs_player_SOURCES) $(nodist_libs_player_SOURCES) \
+	libs/vc1parser.c libs/vp8parser.c \
+	$(nodist_orc_audiomixer_SOURCES) $(nodist_orc_bayer_SOURCES) \
+	$(nodist_orc_compositor_SOURCES) pipelines/mimic.c \
+	pipelines/mxf.c pipelines/streamheader.c
 DIST_SOURCES = $(libparser_la_SOURCES) elements/aiffparse.c \
 	elements/asfmux.c elements/assrender.c \
 	elements/audiointerleave.c elements/audiomixer.c \
@@ -808,13 +839,14 @@
 	$(elements_dash_mpd_SOURCES) elements/dataurisrc.c \
 	elements/faac.c elements/faad.c elements/gdpdepay.c \
 	elements/gdppay.c elements/glimagesink.c elements/h263parse.c \
-	elements/h264parse.c $(elements_hlsdemux_m3u8_SOURCES) \
-	elements/id3mux.c $(elements_jifmux_SOURCES) \
-	elements/jpegparse.c elements/kate.c elements/mpeg2enc.c \
-	elements/mpeg4videoparse.c elements/mpegtsmux.c \
-	elements/mpegvideoparse.c elements/mpg123audiodec.c \
-	elements/mplex.c elements/mxfdemux.c elements/mxfmux.c \
-	elements/neonhttpsrc.c elements/ofa.c elements/opus.c \
+	elements/h264parse.c $(elements_hls_demux_SOURCES) \
+	$(elements_hlsdemux_m3u8_SOURCES) elements/id3mux.c \
+	$(elements_jifmux_SOURCES) elements/jpegparse.c \
+	elements/kate.c elements/mpeg2enc.c elements/mpeg4videoparse.c \
+	elements/mpegtsmux.c elements/mpegvideoparse.c \
+	elements/mplex.c $(elements_mssdemux_SOURCES) \
+	elements/mxfdemux.c elements/mxfmux.c elements/neonhttpsrc.c \
+	elements/netsim.c elements/ofa.c elements/opus.c \
 	elements/pcapparse.c elements/rtponvifparse.c \
 	elements/rtponviftimestamp.c elements/schroenc.c \
 	elements/shm.c elements/templatematch.c elements/timidity.c \
@@ -822,11 +854,11 @@
 	elements/viewfinderbin.c elements/voaacenc.c \
 	elements/voamrwbenc.c elements/x265enc.c elements/zbar.c \
 	generic/states.c libs/aggregator.c libs/gstglcolorconvert.c \
-	libs/gstglcontext.c libs/gstglmemory.c libs/gstglsl.c \
-	libs/gstglupload.c libs/h264parser.c libs/insertbin.c \
-	libs/mpegts.c libs/mpegvideoparser.c $(libs_player_SOURCES) \
-	libs/vc1parser.c libs/vp8parser.c pipelines/mimic.c \
-	pipelines/mxf.c pipelines/streamheader.c
+	libs/gstglcontext.c libs/gstglmemory.c libs/gstglquery.c \
+	libs/gstglsl.c libs/gstglupload.c libs/h264parser.c \
+	libs/insertbin.c libs/mpegts.c libs/mpegvideoparser.c \
+	$(libs_player_SOURCES) libs/vc1parser.c libs/vp8parser.c \
+	pipelines/mimic.c pipelines/mxf.c pipelines/streamheader.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -1143,7 +1175,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -1165,7 +1196,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -1187,9 +1217,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -1351,6 +1378,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -1364,8 +1392,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -1452,8 +1478,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -1505,6 +1529,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -1525,6 +1550,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -1562,7 +1589,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -1603,6 +1629,20 @@
 top_srcdir = @top_srcdir@
 wayland_scanner = @wayland_scanner@
 
+# GST_PLUGINS_XYZ_DIR is only set in an uninstalled setup
+AM_TESTS_ENVIRONMENT = CK_DEFAULT_TIMEOUT=20 $(REGISTRY_ENVIRONMENT) \
+	GST_PLUGIN_SYSTEM_PATH_1_0= \
+	GST_PLUGIN_PATH_1_0=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(GST_PLUGINS_LIBAV_DIR):$(GST_PLUGINS_UGLY_DIR):$(GST_PLUGINS_GOOD_DIR):$(GST_PLUGINS_BASE_DIR):$(GST_PLUGINS_DIR) \
+	GST_PLUGIN_LOADING_WHITELIST="gstreamer@$(GST_PLUGINS_DIR):gst-plugins-base@$(GSTPB_PLUGINS_DIR):gst-plugins-good:gst-plugins-ugly:gst-libav:gst-plugins-bad@$(top_builddir)" \
+	GST_STATE_IGNORE_ELEMENTS="apexsink avdtpsrc camerabin \
+	dc1394src dccpclientsrc dccpclientsink dccpserversrc \
+	dccpserversink decklinksrc decklinksink dtlssrtpdec \
+	dtlssrtpenc dvbsrc dvbbasebin dfbvideosink festival fluidsynth \
+	linsyssdisrc linsyssdisink nassink rsndvdbin sdlaudiosink \
+	sdlvideosink vcdsrc rfbsrc vdpauyuvvideo vdpauvideoyuv \
+	vdpaumpegdec vdpaumpeg4dec vdpauh264dec vdpauvideopostprocess \
+	vdpausink neonhttpsrc"
+
 # inspect every plugin feature
 GST_INSPECT = $(GST_TOOLS_DIR)/gst-inspect-$(GST_API_VERSION)
 CHECK_REGISTRY = $(top_builddir)/tests/check/test-registry.reg
@@ -1611,20 +1651,6 @@
 	GST_REGISTRY_1_0=$(CHECK_REGISTRY)
 
 
-# GST_PLUGINS_XYZ_DIR is only set in an uninstalled setup
-AM_TESTS_ENVIRONMENT = \
-	$(REGISTRY_ENVIRONMENT)                                 \
-	GST_PLUGIN_SYSTEM_PATH_1_0=				\
-	GST_PLUGIN_PATH_1_0=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(GST_PLUGINS_LIBAV_DIR):$(GST_PLUGINS_UGLY_DIR):$(GST_PLUGINS_GOOD_DIR):$(GST_PLUGINS_BASE_DIR):$(GST_PLUGINS_DIR) \
-	GST_PLUGIN_LOADING_WHITELIST="gstreamer@$(GST_PLUGINS_DIR):gst-plugins-base@$(GSTPB_PLUGINS_DIR):gst-plugins-good:gst-plugins-ugly:gst-libav:gst-plugins-bad@$(top_builddir)" \
-	GST_STATE_IGNORE_ELEMENTS="apexsink avdtpsrc camerabin dc1394src \
-	    dccpclientsrc dccpclientsink dccpserversrc dccpserversink decklinksrc \
-	    decklinksink dtlssrtpdec dtlssrtpenc dvbsrc dvbbasebin dfbvideosink festival fluidsynth gsettingsvideosrc \
-	    gsettingsvideosink gsettingsaudiosrc gsettingsaudiosink linsyssdisrc linsyssdisink nassink \
-	    rsndvdbin sdlaudiosink sdlvideosink vcdsrc rfbsrc vdpauyuvvideo vdpauvideoyuv \
-	    vdpaumpegdec vdpaumpeg4dec vdpauh264dec vdpauvideopostprocess vdpausink neonhttpsrc"
-
-
 # the core dumps of some machines have PIDs appended
 CLEANFILES = core.* test-registry.* $(am__append_1)
 SUPPRESSIONS = $(top_srcdir)/common/gst.supp $(srcdir)/gst-plugins-bad.supp
@@ -1646,10 +1672,10 @@
 @USE_EXIF_TRUE@check_jifmux = elements/jifmux
 @USE_MPEG2ENC_FALSE@check_mpeg2enc = 
 @USE_MPEG2ENC_TRUE@check_mpeg2enc = elements/mpeg2enc
-@USE_MPG123_FALSE@check_mpg123 = 
-@USE_MPG123_TRUE@check_mpg123 = elements/mpg123audiodec
 @USE_MPLEX_FALSE@check_mplex = 
 @USE_MPLEX_TRUE@check_mplex = elements/mplex
+@USE_SMOOTHSTREAMING_FALSE@check_mssdemux = 
+@USE_SMOOTHSTREAMING_TRUE@check_mssdemux = elements/mssdemux
 @USE_NEON_FALSE@check_neon = 
 @USE_NEON_TRUE@check_neon = elements/neonhttpsrc
 @USE_OFA_FALSE@check_ofa = 
@@ -1676,8 +1702,8 @@
 @USE_SSH2_TRUE@check_curl_sftp = elements/curlsftpsink
 @USE_HLS_FALSE@check_hlsdemux_m3u8 = 
 @USE_HLS_TRUE@check_hlsdemux_m3u8 = elements/hlsdemux_m3u8
-@USE_HLS_TRUE@check_hls_demux = elements/hls_demux
 @USE_HLS_FALSE@check_hlsdemux = 
+@USE_HLS_TRUE@check_hlsdemux = elements/hls_demux
 @WITH_GST_PLAYER_TESTS_FALSE@check_player = 
 @WITH_GST_PLAYER_TESTS_TRUE@check_player = libs/player
 @USE_CURL_FALSE@check_curl = 
@@ -1703,6 +1729,7 @@
 @USE_GL_TRUE@    libs/gstglmemory \
 @USE_GL_TRUE@    libs/gstglupload \
 @USE_GL_TRUE@    libs/gstglcolorconvert \
+@USE_GL_TRUE@    libs/gstglquery \
 @USE_GL_TRUE@    libs/gstglsl \
 @USE_GL_TRUE@    elements/glimagesink
 
@@ -1852,11 +1879,6 @@
 elements_assrender_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) -lgstapp-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD)
 elements_mpegtsmux_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
 elements_mpegtsmux_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD)
-elements_mpg123audiodec_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
-elements_mpg123audiodec_LDADD = \
-	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD) \
-	-lgstaudio-@GST_API_VERSION@ -lgstfft-@GST_API_VERSION@ -lgstapp-@GST_API_VERSION@
-
 elements_uvch264demux_CFLAGS = -DUVCH264DEMUX_DATADIR="$(srcdir)/elements/uvch264demux_data" \
 				$(AM_CFLAGS)
 
@@ -1873,6 +1895,14 @@
 	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
 
 elements_dash_demux_SOURCES = elements/test_http_src.c elements/test_http_src.h elements/adaptive_demux_engine.c elements/adaptive_demux_engine.h elements/adaptive_demux_common.c elements/adaptive_demux_common.h elements/dash_demux.c
+elements_mssdemux_CFLAGS = $(AM_CFLAGS) $(LIBXML2_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_PLUGINS_BAD_CFLAGS)
+elements_mssdemux_LDADD = \
+	$(LDADD) $(LIBXML2_LIBS) $(GST_BASE_LIBS) \
+	-lgsttag-$(GST_API_VERSION) \
+	-lgstapp-$(GST_API_VERSION) \
+	$(top_builddir)/gst-libs/gst/adaptivedemux/libgstadaptivedemux-@GST_API_VERSION@.la
+
+elements_mssdemux_SOURCES = elements/test_http_src.c elements/test_http_src.h elements/adaptive_demux_engine.c elements/adaptive_demux_engine.h elements/adaptive_demux_common.c elements/adaptive_demux_common.h elements/mssdemux.c
 pipelines_streamheader_CFLAGS = $(GIO_CFLAGS) $(AM_CFLAGS)
 pipelines_streamheader_LDADD = $(GIO_LIBS) $(LDADD)
 libs_insertbin_LDADD = \
@@ -1950,6 +1980,15 @@
 	$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
 	$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
 
+libs_gstglquery_LDADD = \
+	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
+	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+
+libs_gstglquery_CFLAGS = \
+	$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
+	-DGST_USE_UNSTABLE_API \
+	$(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
+
 libs_gstglsl_LDADD = \
 	$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
 	$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
@@ -2225,6 +2264,18 @@
 elements/h264parse$(EXEEXT): $(elements_h264parse_OBJECTS) $(elements_h264parse_DEPENDENCIES) $(EXTRA_elements_h264parse_DEPENDENCIES) elements/$(am__dirstamp)
 	@rm -f elements/h264parse$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(elements_h264parse_OBJECTS) $(elements_h264parse_LDADD) $(LIBS)
+elements/elements_hls_demux-test_http_src.$(OBJEXT):  \
+	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
+elements/elements_hls_demux-adaptive_demux_engine.$(OBJEXT):  \
+	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
+elements/elements_hls_demux-adaptive_demux_common.$(OBJEXT):  \
+	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
+elements/elements_hls_demux-hls_demux.$(OBJEXT):  \
+	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
+
+elements/hls_demux$(EXEEXT): $(elements_hls_demux_OBJECTS) $(elements_hls_demux_DEPENDENCIES) $(EXTRA_elements_hls_demux_DEPENDENCIES) elements/$(am__dirstamp)
+	@rm -f elements/hls_demux$(EXEEXT)
+	$(AM_V_CCLD)$(elements_hls_demux_LINK) $(elements_hls_demux_OBJECTS) $(elements_hls_demux_LDADD) $(LIBS)
 elements/elements_hlsdemux_m3u8-hlsdemux_m3u8.$(OBJEXT):  \
 	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
 
@@ -2279,18 +2330,24 @@
 elements/mpegvideoparse$(EXEEXT): $(elements_mpegvideoparse_OBJECTS) $(elements_mpegvideoparse_DEPENDENCIES) $(EXTRA_elements_mpegvideoparse_DEPENDENCIES) elements/$(am__dirstamp)
 	@rm -f elements/mpegvideoparse$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(elements_mpegvideoparse_OBJECTS) $(elements_mpegvideoparse_LDADD) $(LIBS)
-elements/elements_mpg123audiodec-mpg123audiodec.$(OBJEXT):  \
-	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
-
-elements/mpg123audiodec$(EXEEXT): $(elements_mpg123audiodec_OBJECTS) $(elements_mpg123audiodec_DEPENDENCIES) $(EXTRA_elements_mpg123audiodec_DEPENDENCIES) elements/$(am__dirstamp)
-	@rm -f elements/mpg123audiodec$(EXEEXT)
-	$(AM_V_CCLD)$(elements_mpg123audiodec_LINK) $(elements_mpg123audiodec_OBJECTS) $(elements_mpg123audiodec_LDADD) $(LIBS)
 elements/mplex.$(OBJEXT): elements/$(am__dirstamp) \
 	elements/$(DEPDIR)/$(am__dirstamp)
 
 elements/mplex$(EXEEXT): $(elements_mplex_OBJECTS) $(elements_mplex_DEPENDENCIES) $(EXTRA_elements_mplex_DEPENDENCIES) elements/$(am__dirstamp)
 	@rm -f elements/mplex$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(elements_mplex_OBJECTS) $(elements_mplex_LDADD) $(LIBS)
+elements/elements_mssdemux-test_http_src.$(OBJEXT):  \
+	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
+elements/elements_mssdemux-adaptive_demux_engine.$(OBJEXT):  \
+	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
+elements/elements_mssdemux-adaptive_demux_common.$(OBJEXT):  \
+	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
+elements/elements_mssdemux-mssdemux.$(OBJEXT):  \
+	elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
+
+elements/mssdemux$(EXEEXT): $(elements_mssdemux_OBJECTS) $(elements_mssdemux_DEPENDENCIES) $(EXTRA_elements_mssdemux_DEPENDENCIES) elements/$(am__dirstamp)
+	@rm -f elements/mssdemux$(EXEEXT)
+	$(AM_V_CCLD)$(elements_mssdemux_LINK) $(elements_mssdemux_OBJECTS) $(elements_mssdemux_LDADD) $(LIBS)
 elements/mxfdemux.$(OBJEXT): elements/$(am__dirstamp) \
 	elements/$(DEPDIR)/$(am__dirstamp)
 
@@ -2309,6 +2366,12 @@
 elements/neonhttpsrc$(EXEEXT): $(elements_neonhttpsrc_OBJECTS) $(elements_neonhttpsrc_DEPENDENCIES) $(EXTRA_elements_neonhttpsrc_DEPENDENCIES) elements/$(am__dirstamp)
 	@rm -f elements/neonhttpsrc$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(elements_neonhttpsrc_OBJECTS) $(elements_neonhttpsrc_LDADD) $(LIBS)
+elements/netsim.$(OBJEXT): elements/$(am__dirstamp) \
+	elements/$(DEPDIR)/$(am__dirstamp)
+
+elements/netsim$(EXEEXT): $(elements_netsim_OBJECTS) $(elements_netsim_DEPENDENCIES) $(EXTRA_elements_netsim_DEPENDENCIES) elements/$(am__dirstamp)
+	@rm -f elements/netsim$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(elements_netsim_OBJECTS) $(elements_netsim_LDADD) $(LIBS)
 elements/ofa.$(OBJEXT): elements/$(am__dirstamp) \
 	elements/$(DEPDIR)/$(am__dirstamp)
 
@@ -2447,6 +2510,12 @@
 libs/gstglmemory$(EXEEXT): $(libs_gstglmemory_OBJECTS) $(libs_gstglmemory_DEPENDENCIES) $(EXTRA_libs_gstglmemory_DEPENDENCIES) libs/$(am__dirstamp)
 	@rm -f libs/gstglmemory$(EXEEXT)
 	$(AM_V_CCLD)$(libs_gstglmemory_LINK) $(libs_gstglmemory_OBJECTS) $(libs_gstglmemory_LDADD) $(LIBS)
+libs/libs_gstglquery-gstglquery.$(OBJEXT): libs/$(am__dirstamp) \
+	libs/$(DEPDIR)/$(am__dirstamp)
+
+libs/gstglquery$(EXEEXT): $(libs_gstglquery_OBJECTS) $(libs_gstglquery_DEPENDENCIES) $(EXTRA_libs_gstglquery_DEPENDENCIES) libs/$(am__dirstamp)
+	@rm -f libs/gstglquery$(EXEEXT)
+	$(AM_V_CCLD)$(libs_gstglquery_LINK) $(libs_gstglquery_OBJECTS) $(libs_gstglquery_LDADD) $(LIBS)
 libs/libs_gstglsl-gstglsl.$(OBJEXT): libs/$(am__dirstamp) \
 	libs/$(DEPDIR)/$(am__dirstamp)
 
@@ -2589,11 +2658,18 @@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_gdpdepay-gdpdepay.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_gdppay-gdppay.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_glimagesink-glimagesink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_common.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_engine.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_hls_demux-hls_demux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_hls_demux-test_http_src.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_hlsdemux_m3u8-hlsdemux_m3u8.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_jifmux-jifmux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_kate-kate.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_mpegtsmux-mpegtsmux.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_mpg123audiodec-mpg123audiodec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_common.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_engine.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_mssdemux-mssdemux.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_mssdemux-test_http_src.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rtponvifparse-rtponvifparse.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rtponviftimestamp-rtponviftimestamp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_timidity-timidity.Po@am__quote@
@@ -2612,6 +2688,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/mxfdemux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/mxfmux.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/neonhttpsrc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/netsim.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/ofa.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/opus.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/pcapparse.Po@am__quote@
@@ -2627,6 +2704,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_gstglcolorconvert-gstglcolorconvert.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_gstglcontext-gstglcontext.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_gstglmemory-gstglmemory.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_gstglquery-gstglquery.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_gstglsl-gstglsl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_gstglupload-gstglupload.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_h264parser-h264parser.Po@am__quote@
@@ -2885,6 +2963,62 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_glimagesink_CFLAGS) $(CFLAGS) -c -o elements/elements_glimagesink-glimagesink.obj `if test -f 'elements/glimagesink.c'; then $(CYGPATH_W) 'elements/glimagesink.c'; else $(CYGPATH_W) '$(srcdir)/elements/glimagesink.c'; fi`
 
+elements/elements_hls_demux-test_http_src.o: elements/test_http_src.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -MT elements/elements_hls_demux-test_http_src.o -MD -MP -MF elements/$(DEPDIR)/elements_hls_demux-test_http_src.Tpo -c -o elements/elements_hls_demux-test_http_src.o `test -f 'elements/test_http_src.c' || echo '$(srcdir)/'`elements/test_http_src.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_hls_demux-test_http_src.Tpo elements/$(DEPDIR)/elements_hls_demux-test_http_src.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/test_http_src.c' object='elements/elements_hls_demux-test_http_src.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -c -o elements/elements_hls_demux-test_http_src.o `test -f 'elements/test_http_src.c' || echo '$(srcdir)/'`elements/test_http_src.c
+
+elements/elements_hls_demux-test_http_src.obj: elements/test_http_src.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -MT elements/elements_hls_demux-test_http_src.obj -MD -MP -MF elements/$(DEPDIR)/elements_hls_demux-test_http_src.Tpo -c -o elements/elements_hls_demux-test_http_src.obj `if test -f 'elements/test_http_src.c'; then $(CYGPATH_W) 'elements/test_http_src.c'; else $(CYGPATH_W) '$(srcdir)/elements/test_http_src.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_hls_demux-test_http_src.Tpo elements/$(DEPDIR)/elements_hls_demux-test_http_src.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/test_http_src.c' object='elements/elements_hls_demux-test_http_src.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -c -o elements/elements_hls_demux-test_http_src.obj `if test -f 'elements/test_http_src.c'; then $(CYGPATH_W) 'elements/test_http_src.c'; else $(CYGPATH_W) '$(srcdir)/elements/test_http_src.c'; fi`
+
+elements/elements_hls_demux-adaptive_demux_engine.o: elements/adaptive_demux_engine.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -MT elements/elements_hls_demux-adaptive_demux_engine.o -MD -MP -MF elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_engine.Tpo -c -o elements/elements_hls_demux-adaptive_demux_engine.o `test -f 'elements/adaptive_demux_engine.c' || echo '$(srcdir)/'`elements/adaptive_demux_engine.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_engine.Tpo elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_engine.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/adaptive_demux_engine.c' object='elements/elements_hls_demux-adaptive_demux_engine.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -c -o elements/elements_hls_demux-adaptive_demux_engine.o `test -f 'elements/adaptive_demux_engine.c' || echo '$(srcdir)/'`elements/adaptive_demux_engine.c
+
+elements/elements_hls_demux-adaptive_demux_engine.obj: elements/adaptive_demux_engine.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -MT elements/elements_hls_demux-adaptive_demux_engine.obj -MD -MP -MF elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_engine.Tpo -c -o elements/elements_hls_demux-adaptive_demux_engine.obj `if test -f 'elements/adaptive_demux_engine.c'; then $(CYGPATH_W) 'elements/adaptive_demux_engine.c'; else $(CYGPATH_W) '$(srcdir)/elements/adaptive_demux_engine.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_engine.Tpo elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_engine.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/adaptive_demux_engine.c' object='elements/elements_hls_demux-adaptive_demux_engine.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -c -o elements/elements_hls_demux-adaptive_demux_engine.obj `if test -f 'elements/adaptive_demux_engine.c'; then $(CYGPATH_W) 'elements/adaptive_demux_engine.c'; else $(CYGPATH_W) '$(srcdir)/elements/adaptive_demux_engine.c'; fi`
+
+elements/elements_hls_demux-adaptive_demux_common.o: elements/adaptive_demux_common.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -MT elements/elements_hls_demux-adaptive_demux_common.o -MD -MP -MF elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_common.Tpo -c -o elements/elements_hls_demux-adaptive_demux_common.o `test -f 'elements/adaptive_demux_common.c' || echo '$(srcdir)/'`elements/adaptive_demux_common.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_common.Tpo elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_common.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/adaptive_demux_common.c' object='elements/elements_hls_demux-adaptive_demux_common.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -c -o elements/elements_hls_demux-adaptive_demux_common.o `test -f 'elements/adaptive_demux_common.c' || echo '$(srcdir)/'`elements/adaptive_demux_common.c
+
+elements/elements_hls_demux-adaptive_demux_common.obj: elements/adaptive_demux_common.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -MT elements/elements_hls_demux-adaptive_demux_common.obj -MD -MP -MF elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_common.Tpo -c -o elements/elements_hls_demux-adaptive_demux_common.obj `if test -f 'elements/adaptive_demux_common.c'; then $(CYGPATH_W) 'elements/adaptive_demux_common.c'; else $(CYGPATH_W) '$(srcdir)/elements/adaptive_demux_common.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_common.Tpo elements/$(DEPDIR)/elements_hls_demux-adaptive_demux_common.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/adaptive_demux_common.c' object='elements/elements_hls_demux-adaptive_demux_common.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -c -o elements/elements_hls_demux-adaptive_demux_common.obj `if test -f 'elements/adaptive_demux_common.c'; then $(CYGPATH_W) 'elements/adaptive_demux_common.c'; else $(CYGPATH_W) '$(srcdir)/elements/adaptive_demux_common.c'; fi`
+
+elements/elements_hls_demux-hls_demux.o: elements/hls_demux.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -MT elements/elements_hls_demux-hls_demux.o -MD -MP -MF elements/$(DEPDIR)/elements_hls_demux-hls_demux.Tpo -c -o elements/elements_hls_demux-hls_demux.o `test -f 'elements/hls_demux.c' || echo '$(srcdir)/'`elements/hls_demux.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_hls_demux-hls_demux.Tpo elements/$(DEPDIR)/elements_hls_demux-hls_demux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/hls_demux.c' object='elements/elements_hls_demux-hls_demux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -c -o elements/elements_hls_demux-hls_demux.o `test -f 'elements/hls_demux.c' || echo '$(srcdir)/'`elements/hls_demux.c
+
+elements/elements_hls_demux-hls_demux.obj: elements/hls_demux.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -MT elements/elements_hls_demux-hls_demux.obj -MD -MP -MF elements/$(DEPDIR)/elements_hls_demux-hls_demux.Tpo -c -o elements/elements_hls_demux-hls_demux.obj `if test -f 'elements/hls_demux.c'; then $(CYGPATH_W) 'elements/hls_demux.c'; else $(CYGPATH_W) '$(srcdir)/elements/hls_demux.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_hls_demux-hls_demux.Tpo elements/$(DEPDIR)/elements_hls_demux-hls_demux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/hls_demux.c' object='elements/elements_hls_demux-hls_demux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hls_demux_CFLAGS) $(CFLAGS) -c -o elements/elements_hls_demux-hls_demux.obj `if test -f 'elements/hls_demux.c'; then $(CYGPATH_W) 'elements/hls_demux.c'; else $(CYGPATH_W) '$(srcdir)/elements/hls_demux.c'; fi`
+
 elements/elements_hlsdemux_m3u8-hlsdemux_m3u8.o: elements/hlsdemux_m3u8.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_hlsdemux_m3u8_CFLAGS) $(CFLAGS) -MT elements/elements_hlsdemux_m3u8-hlsdemux_m3u8.o -MD -MP -MF elements/$(DEPDIR)/elements_hlsdemux_m3u8-hlsdemux_m3u8.Tpo -c -o elements/elements_hlsdemux_m3u8-hlsdemux_m3u8.o `test -f 'elements/hlsdemux_m3u8.c' || echo '$(srcdir)/'`elements/hlsdemux_m3u8.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_hlsdemux_m3u8-hlsdemux_m3u8.Tpo elements/$(DEPDIR)/elements_hlsdemux_m3u8-hlsdemux_m3u8.Po
@@ -2941,19 +3075,61 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mpegtsmux_CFLAGS) $(CFLAGS) -c -o elements/elements_mpegtsmux-mpegtsmux.obj `if test -f 'elements/mpegtsmux.c'; then $(CYGPATH_W) 'elements/mpegtsmux.c'; else $(CYGPATH_W) '$(srcdir)/elements/mpegtsmux.c'; fi`
 
-elements/elements_mpg123audiodec-mpg123audiodec.o: elements/mpg123audiodec.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mpg123audiodec_CFLAGS) $(CFLAGS) -MT elements/elements_mpg123audiodec-mpg123audiodec.o -MD -MP -MF elements/$(DEPDIR)/elements_mpg123audiodec-mpg123audiodec.Tpo -c -o elements/elements_mpg123audiodec-mpg123audiodec.o `test -f 'elements/mpg123audiodec.c' || echo '$(srcdir)/'`elements/mpg123audiodec.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_mpg123audiodec-mpg123audiodec.Tpo elements/$(DEPDIR)/elements_mpg123audiodec-mpg123audiodec.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/mpg123audiodec.c' object='elements/elements_mpg123audiodec-mpg123audiodec.o' libtool=no @AMDEPBACKSLASH@
+elements/elements_mssdemux-test_http_src.o: elements/test_http_src.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -MT elements/elements_mssdemux-test_http_src.o -MD -MP -MF elements/$(DEPDIR)/elements_mssdemux-test_http_src.Tpo -c -o elements/elements_mssdemux-test_http_src.o `test -f 'elements/test_http_src.c' || echo '$(srcdir)/'`elements/test_http_src.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_mssdemux-test_http_src.Tpo elements/$(DEPDIR)/elements_mssdemux-test_http_src.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/test_http_src.c' object='elements/elements_mssdemux-test_http_src.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mpg123audiodec_CFLAGS) $(CFLAGS) -c -o elements/elements_mpg123audiodec-mpg123audiodec.o `test -f 'elements/mpg123audiodec.c' || echo '$(srcdir)/'`elements/mpg123audiodec.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -c -o elements/elements_mssdemux-test_http_src.o `test -f 'elements/test_http_src.c' || echo '$(srcdir)/'`elements/test_http_src.c
 
-elements/elements_mpg123audiodec-mpg123audiodec.obj: elements/mpg123audiodec.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mpg123audiodec_CFLAGS) $(CFLAGS) -MT elements/elements_mpg123audiodec-mpg123audiodec.obj -MD -MP -MF elements/$(DEPDIR)/elements_mpg123audiodec-mpg123audiodec.Tpo -c -o elements/elements_mpg123audiodec-mpg123audiodec.obj `if test -f 'elements/mpg123audiodec.c'; then $(CYGPATH_W) 'elements/mpg123audiodec.c'; else $(CYGPATH_W) '$(srcdir)/elements/mpg123audiodec.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_mpg123audiodec-mpg123audiodec.Tpo elements/$(DEPDIR)/elements_mpg123audiodec-mpg123audiodec.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/mpg123audiodec.c' object='elements/elements_mpg123audiodec-mpg123audiodec.obj' libtool=no @AMDEPBACKSLASH@
+elements/elements_mssdemux-test_http_src.obj: elements/test_http_src.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -MT elements/elements_mssdemux-test_http_src.obj -MD -MP -MF elements/$(DEPDIR)/elements_mssdemux-test_http_src.Tpo -c -o elements/elements_mssdemux-test_http_src.obj `if test -f 'elements/test_http_src.c'; then $(CYGPATH_W) 'elements/test_http_src.c'; else $(CYGPATH_W) '$(srcdir)/elements/test_http_src.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_mssdemux-test_http_src.Tpo elements/$(DEPDIR)/elements_mssdemux-test_http_src.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/test_http_src.c' object='elements/elements_mssdemux-test_http_src.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mpg123audiodec_CFLAGS) $(CFLAGS) -c -o elements/elements_mpg123audiodec-mpg123audiodec.obj `if test -f 'elements/mpg123audiodec.c'; then $(CYGPATH_W) 'elements/mpg123audiodec.c'; else $(CYGPATH_W) '$(srcdir)/elements/mpg123audiodec.c'; fi`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -c -o elements/elements_mssdemux-test_http_src.obj `if test -f 'elements/test_http_src.c'; then $(CYGPATH_W) 'elements/test_http_src.c'; else $(CYGPATH_W) '$(srcdir)/elements/test_http_src.c'; fi`
+
+elements/elements_mssdemux-adaptive_demux_engine.o: elements/adaptive_demux_engine.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -MT elements/elements_mssdemux-adaptive_demux_engine.o -MD -MP -MF elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_engine.Tpo -c -o elements/elements_mssdemux-adaptive_demux_engine.o `test -f 'elements/adaptive_demux_engine.c' || echo '$(srcdir)/'`elements/adaptive_demux_engine.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_engine.Tpo elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_engine.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/adaptive_demux_engine.c' object='elements/elements_mssdemux-adaptive_demux_engine.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -c -o elements/elements_mssdemux-adaptive_demux_engine.o `test -f 'elements/adaptive_demux_engine.c' || echo '$(srcdir)/'`elements/adaptive_demux_engine.c
+
+elements/elements_mssdemux-adaptive_demux_engine.obj: elements/adaptive_demux_engine.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -MT elements/elements_mssdemux-adaptive_demux_engine.obj -MD -MP -MF elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_engine.Tpo -c -o elements/elements_mssdemux-adaptive_demux_engine.obj `if test -f 'elements/adaptive_demux_engine.c'; then $(CYGPATH_W) 'elements/adaptive_demux_engine.c'; else $(CYGPATH_W) '$(srcdir)/elements/adaptive_demux_engine.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_engine.Tpo elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_engine.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/adaptive_demux_engine.c' object='elements/elements_mssdemux-adaptive_demux_engine.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -c -o elements/elements_mssdemux-adaptive_demux_engine.obj `if test -f 'elements/adaptive_demux_engine.c'; then $(CYGPATH_W) 'elements/adaptive_demux_engine.c'; else $(CYGPATH_W) '$(srcdir)/elements/adaptive_demux_engine.c'; fi`
+
+elements/elements_mssdemux-adaptive_demux_common.o: elements/adaptive_demux_common.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -MT elements/elements_mssdemux-adaptive_demux_common.o -MD -MP -MF elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_common.Tpo -c -o elements/elements_mssdemux-adaptive_demux_common.o `test -f 'elements/adaptive_demux_common.c' || echo '$(srcdir)/'`elements/adaptive_demux_common.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_common.Tpo elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_common.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/adaptive_demux_common.c' object='elements/elements_mssdemux-adaptive_demux_common.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -c -o elements/elements_mssdemux-adaptive_demux_common.o `test -f 'elements/adaptive_demux_common.c' || echo '$(srcdir)/'`elements/adaptive_demux_common.c
+
+elements/elements_mssdemux-adaptive_demux_common.obj: elements/adaptive_demux_common.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -MT elements/elements_mssdemux-adaptive_demux_common.obj -MD -MP -MF elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_common.Tpo -c -o elements/elements_mssdemux-adaptive_demux_common.obj `if test -f 'elements/adaptive_demux_common.c'; then $(CYGPATH_W) 'elements/adaptive_demux_common.c'; else $(CYGPATH_W) '$(srcdir)/elements/adaptive_demux_common.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_common.Tpo elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_common.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/adaptive_demux_common.c' object='elements/elements_mssdemux-adaptive_demux_common.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -c -o elements/elements_mssdemux-adaptive_demux_common.obj `if test -f 'elements/adaptive_demux_common.c'; then $(CYGPATH_W) 'elements/adaptive_demux_common.c'; else $(CYGPATH_W) '$(srcdir)/elements/adaptive_demux_common.c'; fi`
+
+elements/elements_mssdemux-mssdemux.o: elements/mssdemux.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -MT elements/elements_mssdemux-mssdemux.o -MD -MP -MF elements/$(DEPDIR)/elements_mssdemux-mssdemux.Tpo -c -o elements/elements_mssdemux-mssdemux.o `test -f 'elements/mssdemux.c' || echo '$(srcdir)/'`elements/mssdemux.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_mssdemux-mssdemux.Tpo elements/$(DEPDIR)/elements_mssdemux-mssdemux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/mssdemux.c' object='elements/elements_mssdemux-mssdemux.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -c -o elements/elements_mssdemux-mssdemux.o `test -f 'elements/mssdemux.c' || echo '$(srcdir)/'`elements/mssdemux.c
+
+elements/elements_mssdemux-mssdemux.obj: elements/mssdemux.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -MT elements/elements_mssdemux-mssdemux.obj -MD -MP -MF elements/$(DEPDIR)/elements_mssdemux-mssdemux.Tpo -c -o elements/elements_mssdemux-mssdemux.obj `if test -f 'elements/mssdemux.c'; then $(CYGPATH_W) 'elements/mssdemux.c'; else $(CYGPATH_W) '$(srcdir)/elements/mssdemux.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_mssdemux-mssdemux.Tpo elements/$(DEPDIR)/elements_mssdemux-mssdemux.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='elements/mssdemux.c' object='elements/elements_mssdemux-mssdemux.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -c -o elements/elements_mssdemux-mssdemux.obj `if test -f 'elements/mssdemux.c'; then $(CYGPATH_W) 'elements/mssdemux.c'; else $(CYGPATH_W) '$(srcdir)/elements/mssdemux.c'; fi`
 
 elements/elements_rtponvifparse-rtponvifparse.o: elements/rtponvifparse.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtponvifparse_CFLAGS) $(CFLAGS) -MT elements/elements_rtponvifparse-rtponvifparse.o -MD -MP -MF elements/$(DEPDIR)/elements_rtponvifparse-rtponvifparse.Tpo -c -o elements/elements_rtponvifparse-rtponvifparse.o `test -f 'elements/rtponvifparse.c' || echo '$(srcdir)/'`elements/rtponvifparse.c
@@ -3109,6 +3285,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_gstglmemory_CFLAGS) $(CFLAGS) -c -o libs/libs_gstglmemory-gstglmemory.obj `if test -f 'libs/gstglmemory.c'; then $(CYGPATH_W) 'libs/gstglmemory.c'; else $(CYGPATH_W) '$(srcdir)/libs/gstglmemory.c'; fi`
 
+libs/libs_gstglquery-gstglquery.o: libs/gstglquery.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_gstglquery_CFLAGS) $(CFLAGS) -MT libs/libs_gstglquery-gstglquery.o -MD -MP -MF libs/$(DEPDIR)/libs_gstglquery-gstglquery.Tpo -c -o libs/libs_gstglquery-gstglquery.o `test -f 'libs/gstglquery.c' || echo '$(srcdir)/'`libs/gstglquery.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_gstglquery-gstglquery.Tpo libs/$(DEPDIR)/libs_gstglquery-gstglquery.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/gstglquery.c' object='libs/libs_gstglquery-gstglquery.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_gstglquery_CFLAGS) $(CFLAGS) -c -o libs/libs_gstglquery-gstglquery.o `test -f 'libs/gstglquery.c' || echo '$(srcdir)/'`libs/gstglquery.c
+
+libs/libs_gstglquery-gstglquery.obj: libs/gstglquery.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_gstglquery_CFLAGS) $(CFLAGS) -MT libs/libs_gstglquery-gstglquery.obj -MD -MP -MF libs/$(DEPDIR)/libs_gstglquery-gstglquery.Tpo -c -o libs/libs_gstglquery-gstglquery.obj `if test -f 'libs/gstglquery.c'; then $(CYGPATH_W) 'libs/gstglquery.c'; else $(CYGPATH_W) '$(srcdir)/libs/gstglquery.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_gstglquery-gstglquery.Tpo libs/$(DEPDIR)/libs_gstglquery-gstglquery.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='libs/gstglquery.c' object='libs/libs_gstglquery-gstglquery.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_gstglquery_CFLAGS) $(CFLAGS) -c -o libs/libs_gstglquery-gstglquery.obj `if test -f 'libs/gstglquery.c'; then $(CYGPATH_W) 'libs/gstglquery.c'; else $(CYGPATH_W) '$(srcdir)/libs/gstglquery.c'; fi`
+
 libs/libs_gstglsl-gstglsl.o: libs/gstglsl.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_gstglsl_CFLAGS) $(CFLAGS) -MT libs/libs_gstglsl-gstglsl.o -MD -MP -MF libs/$(DEPDIR)/libs_gstglsl-gstglsl.Tpo -c -o libs/libs_gstglsl-gstglsl.o `test -f 'libs/gstglsl.c' || echo '$(srcdir)/'`libs/gstglsl.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_gstglsl-gstglsl.Tpo libs/$(DEPDIR)/libs_gstglsl-gstglsl.Po
@@ -3579,6 +3769,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/mssdemux.log: elements/mssdemux$(EXEEXT)
+	@p='elements/mssdemux$(EXEEXT)'; \
+	b='elements/mssdemux'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 elements/ofa.log: elements/ofa$(EXEEXT)
 	@p='elements/ofa$(EXEEXT)'; \
 	b='elements/ofa'; \
@@ -3789,13 +3986,6 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
-elements/mpg123audiodec.log: elements/mpg123audiodec$(EXEEXT)
-	@p='elements/mpg123audiodec$(EXEEXT)'; \
-	b='elements/mpg123audiodec'; \
-	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
-	--log-file $$b.log --trs-file $$b.trs \
-	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-	"$$tst" $(AM_TESTS_FD_REDIRECT)
 elements/mxfdemux.log: elements/mxfdemux$(EXEEXT)
 	@p='elements/mxfdemux$(EXEEXT)'; \
 	b='elements/mxfdemux'; \
@@ -3810,6 +4000,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/netsim.log: elements/netsim$(EXEEXT)
+	@p='elements/netsim$(EXEEXT)'; \
+	b='elements/netsim'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 elements/pcapparse.log: elements/pcapparse$(EXEEXT)
 	@p='elements/pcapparse$(EXEEXT)'; \
 	b='elements/pcapparse'; \
@@ -3985,6 +4182,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+libs/gstglquery.log: libs/gstglquery$(EXEEXT)
+	@p='libs/gstglquery$(EXEEXT)'; \
+	b='libs/gstglquery'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 libs/gstglsl.log: libs/gstglsl$(EXEEXT)
 	@p='libs/gstglsl$(EXEEXT)'; \
 	b='libs/gstglsl'; \
@@ -4006,6 +4210,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/hls_demux.log: elements/hls_demux$(EXEEXT)
+	@p='elements/hls_demux$(EXEEXT)'; \
+	b='elements/hls_demux'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 libs/player.log: libs/player$(EXEEXT)
 	@p='libs/player$(EXEEXT)'; \
 	b='libs/player'; \
@@ -4215,31 +4426,26 @@
 # if the test fails, run it again at at least debug level 2
 %.check: %
 	@$(AM_TESTS_ENVIRONMENT)					\
-	CK_DEFAULT_TIMEOUT=20					\
 	$* ||							\
 	$(AM_TESTS_ENVIRONMENT)					\
 	GST_DEBUG=$$GST_DEBUG,*:2				\
-	CK_DEFAULT_TIMEOUT=20					\
 	$*
 
 # just like 'check', but don't run it again if it fails (useful for debugging)
 %.check-norepeat: %
 	@$(AM_TESTS_ENVIRONMENT)					\
-	CK_DEFAULT_TIMEOUT=20					\
 	$*
 
 # run any given test in a loop
 %.torture: %
 	@for i in `seq 1 $(LOOPS)`; do				\
 	$(AM_TESTS_ENVIRONMENT)					\
-	CK_DEFAULT_TIMEOUT=20					\
 	$*; done
 
 # run any given test in an infinite loop
 %.forever: %
 	@while true; do						\
 	$(AM_TESTS_ENVIRONMENT)					\
-	CK_DEFAULT_TIMEOUT=20					\
 	$* || break; done
 
 # valgrind any given test by running make test.valgrind
diff --git a/tests/check/elements/adaptive_demux_common.c b/tests/check/elements/adaptive_demux_common.c
index 67d724d..44fd050 100644
--- a/tests/check/elements/adaptive_demux_common.c
+++ b/tests/check/elements/adaptive_demux_common.c
@@ -77,6 +77,7 @@
   testData->signal_context = NULL;
   testData->test_task_state = TEST_TASK_STATE_NOT_STARTED;
   testData->threshold_for_seek = 0;
+  gst_event_replace (&testData->seek_event, NULL);
   testData->signal_context = NULL;
 }
 
@@ -251,6 +252,7 @@
 {
   GstElement *pipeline;
   GstTask *task;
+  GstEvent *seek_event;
 } SeekTaskContext;
 
 /* function to generate a seek event. Will be run in a separate thread */
@@ -262,15 +264,12 @@
 
   GST_DEBUG ("testSeekTaskDoSeek calling seek");
 
-  /* seek to 5ms.
-   * Because there is only one fragment, we expect the whole file to be
-   * downloaded again
-   */
-  if (!gst_element_seek_simple (GST_ELEMENT (context->pipeline),
-          GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT,
-          5 * GST_MSECOND)) {
+  fail_unless (GST_IS_EVENT (context->seek_event));
+  fail_unless (GST_EVENT_TYPE (context->seek_event) == GST_EVENT_SEEK);
+
+  if (!gst_element_send_event (GST_ELEMENT (context->pipeline),
+          context->seek_event))
     fail ("Seek failed!\n");
-  }
   GST_DEBUG ("seek ok");
   task = context->task;
   g_slice_free (SeekTaskContext, context);
@@ -300,13 +299,15 @@
       testData->test_task == NULL &&
       (stream->total_received_size + stream->segment_received_size) >=
       testData->threshold_for_seek) {
+    GstSeekFlags seek_flags;
+
     testData->threshold_for_seek =
         stream->total_received_size + stream->segment_received_size;
 
-    /* the seek will be to the beginning of the file, so expect to receive
-     * threshold_for_seek + a whole file
-     */
-    testOutputStreamData->expected_size += testData->threshold_for_seek;
+    gst_event_parse_seek (testData->seek_event, NULL, NULL, &seek_flags, NULL,
+        NULL, NULL, NULL);
+    if (seek_flags & GST_SEEK_FLAG_FLUSH)
+      testOutputStreamData->expected_size += testData->threshold_for_seek;
 
     GST_DEBUG ("starting seek task");
 
@@ -317,6 +318,7 @@
 
     seekContext = g_slice_new (SeekTaskContext);
     seekContext->pipeline = engine->pipeline;
+    seekContext->seek_event = gst_event_ref (testData->seek_event);
     testData->test_task = seekContext->task =
         gst_task_new ((GstTaskFunction) testSeekTaskDoSeek, seekContext, NULL);
     gst_task_set_lock (testData->test_task, &testData->test_task_lock);
@@ -324,28 +326,69 @@
 
     GST_DEBUG ("seek task started");
 
-    g_mutex_lock (&testData->test_task_state_lock);
+    if (seek_flags & GST_SEEK_FLAG_FLUSH) {
+      g_mutex_lock (&testData->test_task_state_lock);
 
-    GST_DEBUG ("waiting for seek task to change state on testsrc");
+      GST_DEBUG ("waiting for seek task to change state on testsrc");
 
-    /* wait for test_task to run, send a flush start event to AppSink
-     * and change the testhttpsrc element state from PLAYING to PAUSED
-     */
-    while (testData->test_task_state ==
-        TEST_TASK_STATE_WAITING_FOR_TESTSRC_STATE_CHANGE) {
-      g_cond_wait (&testData->test_task_state_cond,
-          &testData->test_task_state_lock);
+      /* wait for test_task to run, send a flush start event to AppSink
+       * and change the testhttpsrc element state from PLAYING to PAUSED
+       */
+      while (testData->test_task_state ==
+          TEST_TASK_STATE_WAITING_FOR_TESTSRC_STATE_CHANGE) {
+        g_cond_wait (&testData->test_task_state_cond,
+            &testData->test_task_state_lock);
+      }
+      g_mutex_unlock (&testData->test_task_state_lock);
+      /* we can continue now, but this buffer will be rejected by AppSink
+       * because it is in flushing mode
+       */
+      GST_DEBUG ("seek task changed state on testsrc, resuming");
     }
-    g_mutex_unlock (&testData->test_task_state_lock);
-    /* we can continue now, but this buffer will be rejected by AppSink
-     * because it is in flushing mode
-     */
-    GST_DEBUG ("seek task changed state on testsrc, resuming");
   }
 
   return TRUE;
 }
 
+static void
+testSeekAdaptiveAppSinkEvent (GstAdaptiveDemuxTestEngine * engine,
+    GstAdaptiveDemuxTestOutputStream * stream,
+    GstEvent * event, gpointer user_data)
+{
+  GstAdaptiveDemuxTestCase *testData = GST_ADAPTIVE_DEMUX_TEST_CASE (user_data);
+  GstAdaptiveDemuxTestExpectedOutput *testOutputStreamData;
+  guint index = 0;
+
+  testOutputStreamData =
+      gst_adaptive_demux_test_find_test_data_by_stream (testData, stream,
+      &index);
+  fail_unless (testOutputStreamData != NULL);
+
+  if (testData->seek_event && GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT
+      && testOutputStreamData->post_seek_segment.format != GST_FORMAT_UNDEFINED
+      && gst_event_get_seqnum (event) ==
+      gst_event_get_seqnum (testData->seek_event)) {
+    const GstSegment *seek_segment;
+
+
+    gst_event_parse_segment (event, &seek_segment);
+    fail_unless (seek_segment->format ==
+        testOutputStreamData->post_seek_segment.format);
+    fail_unless (seek_segment->rate ==
+        testOutputStreamData->post_seek_segment.rate);
+    fail_unless (seek_segment->start ==
+        testOutputStreamData->post_seek_segment.start);
+    fail_unless (seek_segment->stop ==
+        testOutputStreamData->post_seek_segment.stop);
+    fail_unless (seek_segment->base ==
+        testOutputStreamData->post_seek_segment.base);
+    fail_unless (seek_segment->time ==
+        testOutputStreamData->post_seek_segment.time);
+
+    testOutputStreamData->segment_verification_needed = FALSE;
+  }
+}
+
 /* callback called when main_loop detects a state changed event */
 static void
 testSeekOnStateChanged (GstBus * bus, GstMessage * msg, gpointer user_data)
@@ -360,7 +403,7 @@
       gst_element_state_get_name (old_state),
       gst_element_state_get_name (new_state));
 
-  if (strstr (srcName, "bin") == srcName &&
+  if (strstr (srcName, "srcbin") == srcName &&
       old_state == GST_STATE_PLAYING && new_state == GST_STATE_PAUSED) {
     g_mutex_lock (&testData->test_task_state_lock);
     if (testData->test_task_state ==
@@ -392,6 +435,18 @@
       G_CALLBACK (testSeekOnStateChanged), testData);
 }
 
+static void
+testSeekPostTestCallback (GstAdaptiveDemuxTestEngine * engine,
+    gpointer user_data)
+{
+  GstAdaptiveDemuxTestCase *testData = GST_ADAPTIVE_DEMUX_TEST_CASE (user_data);
+  for (GList * walk = testData->output_streams; walk; walk = g_list_next (walk)) {
+    GstAdaptiveDemuxTestExpectedOutput *td = walk->data;
+
+    fail_if (td->segment_verification_needed);
+  }
+}
+
 /* function to check total size of data received by AppSink
  * will be called when AppSink receives eos.
  */
@@ -429,7 +484,9 @@
   GstAdaptiveDemuxTestCallbacks cb = { 0 };
   cb.appsink_received_data = gst_adaptive_demux_test_check_received_data;
   cb.appsink_eos = gst_adaptive_demux_test_check_size_of_received_data;
+  cb.appsink_event = testSeekAdaptiveAppSinkEvent;
   cb.pre_test = testSeekPreTestCallback;
+  cb.post_test = testSeekPostTestCallback;
   cb.demux_sent_data = testSeekAdaptiveDemuxSendsData;
   gst_adaptive_demux_test_run (element_name, manifest_uri, &cb, testData);
   /* the call to g_object_unref of testData will clean up the seek task */
diff --git a/tests/check/elements/adaptive_demux_common.h b/tests/check/elements/adaptive_demux_common.h
index 3969582..fa8bde0 100644
--- a/tests/check/elements/adaptive_demux_common.h
+++ b/tests/check/elements/adaptive_demux_common.h
@@ -72,6 +72,9 @@
   guint64 expected_size;
   /* the expected data on this stream (optional) */
   const guint8* expected_data;
+
+  GstSegment post_seek_segment;
+  gboolean segment_verification_needed;
 } GstAdaptiveDemuxTestExpectedOutput;
 
 typedef struct _GstAdaptiveDemuxTestCaseClass GstAdaptiveDemuxTestCaseClass;
@@ -102,9 +105,10 @@
   GCond test_task_state_cond;
 
   /* seek test will wait for this amount of bytes to be sent by 
-   * demux  to AppSink before triggering a seek request
+   * demux to AppSink before triggering a seek request
    */
   guint64 threshold_for_seek;
+  GstEvent *seek_event;
 
   gpointer signal_context;
 } GstAdaptiveDemuxTestCase;
diff --git a/tests/check/elements/adaptive_demux_engine.c b/tests/check/elements/adaptive_demux_engine.c
index 9c77708..b571fe3 100644
--- a/tests/check/elements/adaptive_demux_engine.c
+++ b/tests/check/elements/adaptive_demux_engine.c
@@ -1,4 +1,4 @@
-/* A generic test engine for elements based upon GstAdaptiveDemux 
+/* A generic test engine for elements based upon GstAdaptiveDemux
  *
  * Copyright (c) <2015> YouView TV Ltd
  *
@@ -142,6 +142,34 @@
   GST_TEST_UNLOCK (priv);
 }
 
+static GstPadProbeReturn
+on_appsink_event (GstPad * pad, GstPadProbeInfo * info, gpointer data)
+{
+  GstAdaptiveDemuxTestEnginePrivate *priv =
+      (GstAdaptiveDemuxTestEnginePrivate *) data;
+  GstAdaptiveDemuxTestOutputStream *stream = NULL;
+  GstEvent *event;
+
+  event = GST_PAD_PROBE_INFO_EVENT (info);
+  GST_DEBUG ("Received event %" GST_PTR_FORMAT " on pad %" GST_PTR_FORMAT,
+      event, pad);
+
+  if (priv->callbacks->appsink_event) {
+    GstPad *stream_pad = gst_pad_get_peer (pad);
+    fail_unless (stream_pad != NULL);
+
+    GST_TEST_LOCK (priv);
+    stream = getTestOutputDataByPad (priv, stream_pad, TRUE);
+    GST_TEST_UNLOCK (priv);
+    gst_object_unref (stream_pad);
+    priv->callbacks->appsink_event (&priv->engine, stream, event,
+        priv->user_data);
+  }
+
+  return GST_PAD_PROBE_OK;
+}
+
+
 /* callback called when demux sends data to AppSink */
 static GstPadProbeReturn
 on_demux_sent_data (GstPad * pad, GstPadProbeInfo * info, gpointer data)
@@ -155,13 +183,13 @@
 
   GST_TEST_LOCK (priv);
   stream = getTestOutputDataByPad (priv, pad, TRUE);
+  GST_TEST_UNLOCK (priv);
 
   if (priv->callbacks->demux_sent_data) {
     (*priv->callbacks->demux_sent_data) (&priv->engine,
         stream, buffer, priv->user_data);
   }
 
-  GST_TEST_UNLOCK (priv);
   return GST_PAD_PROBE_OK;
 }
 
@@ -191,18 +219,48 @@
     stream->segment_received_size = 0;
     stream->segment_start = segment->start;
     GST_TEST_UNLOCK (priv);
-  } else if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
-    GST_TEST_LOCK (priv);
-    stream = getTestOutputDataByPad (priv, pad, TRUE);
-    if (priv->callbacks->demux_sent_eos) {
-      priv->callbacks->demux_sent_eos (&priv->engine, stream, priv->user_data);
-    }
-    GST_TEST_UNLOCK (priv);
   }
 
   return GST_PAD_PROBE_OK;
 }
 
+
+static void
+on_demuxElementAdded (GstBin * demux, GstElement * element, gpointer user_data)
+{
+  GstAdaptiveDemuxTestEnginePrivate *priv =
+      (GstAdaptiveDemuxTestEnginePrivate *) user_data;
+  GstAdaptiveDemuxTestOutputStream *stream = NULL;
+  GstPad *internal_pad;
+  gchar *srcbin_name;
+  gint i;
+
+  srcbin_name = GST_ELEMENT_NAME (element);
+  GST_TEST_LOCK (priv);
+  for (i = 0; i < priv->engine.output_streams->len; i++) {
+    stream = g_ptr_array_index (priv->engine.output_streams, i);
+    if (strstr (srcbin_name, GST_PAD_NAME (stream->pad)) != NULL)
+      break;
+  }
+  fail_unless (stream != NULL);
+
+  /* keep the reference to the internal_pad.
+   * We will need it to identify the stream in the on_demuxReceivesEvent callback
+   */
+  if (stream->internal_pad) {
+    gst_pad_remove_probe (stream->internal_pad, stream->internal_pad_probe);
+    gst_object_unref (stream->internal_pad);
+  }
+  internal_pad = gst_element_get_static_pad (element, "src");
+  stream->internal_pad_probe =
+      gst_pad_add_probe (internal_pad, GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM,
+      (GstPadProbeCallback) on_demuxReceivesEvent, priv, NULL);
+  stream->internal_pad = internal_pad;
+  GST_TEST_UNLOCK (priv);
+
+}
+
+
 /* callback called when demux creates a src pad.
  * We will create an AppSink to get the data
  */
@@ -215,7 +273,7 @@
   GstElement *sink;
   gboolean ret;
   gchar *name;
-  GstPad *internal_pad;
+  GstPad *appsink_pad;
   GstAppSinkCallbacks appSinkCallbacks;
   GstAdaptiveDemuxTestOutputStream *stream;
   GObjectClass *gobject_class;
@@ -242,6 +300,11 @@
 
   gst_app_sink_set_callbacks (GST_APP_SINK (sink), &appSinkCallbacks, priv,
       NULL);
+  appsink_pad = gst_element_get_static_pad (sink, "sink");
+  gst_pad_add_probe (appsink_pad,
+      GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM | GST_PAD_PROBE_TYPE_EVENT_FLUSH,
+      (GstPadProbeCallback) on_appsink_event, priv, NULL);
+  gst_object_unref (appsink_pad);
 
   gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER,
       (GstPadProbeCallback) on_demux_sent_data, priv, NULL);
@@ -251,16 +314,7 @@
     g_object_set (G_OBJECT (sink), "sync", FALSE, NULL);
   }
   stream->pad = gst_object_ref (pad);
-  internal_pad =
-      GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD (pad)));
 
-  gst_pad_add_probe (internal_pad, GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM,
-      (GstPadProbeCallback) on_demuxReceivesEvent, priv, NULL);
-
-  /* keep the reference to the internal_pad.
-   * We will need it to identify the stream in the on_demuxReceivesEvent callback
-   */
-  stream->internal_pad = internal_pad;
 
   g_ptr_array_add (priv->engine.output_streams, stream);
   GST_TEST_UNLOCK (priv);
@@ -290,33 +344,29 @@
   GstAdaptiveDemuxTestEnginePrivate *priv =
       (GstAdaptiveDemuxTestEnginePrivate *) user_data;
   GstAdaptiveDemuxTestOutputStream *stream = NULL;
+  GstStateChangeReturn ret;
+  GstState currentState, pending;
+  GstElement *appSink;
 
   fail_unless (priv != NULL);
 
   GST_DEBUG ("Pad removed: %" GST_PTR_FORMAT, pad);
 
   GST_TEST_LOCK (priv);
-  stream = getTestOutputDataByPad (priv, pad, FALSE);
-  if (stream) {
-    GstStateChangeReturn ret;
-    GstState currentState, pending;
-    GstElement *appSink;
-
-    if (priv->callbacks->demux_pad_removed) {
-      priv->callbacks->demux_pad_removed (&priv->engine, stream,
-          priv->user_data);
-    }
-    fail_unless (stream->appsink != NULL);
-    fail_unless (stream->internal_pad != NULL);
-    gst_object_unref (stream->internal_pad);
-    stream->internal_pad = NULL;
-    appSink = GST_ELEMENT (stream->appsink);
-    ret = gst_element_get_state (appSink, &currentState, &pending, 0);
-    if ((ret == GST_STATE_CHANGE_SUCCESS && currentState == GST_STATE_PLAYING)
-        || (ret == GST_STATE_CHANGE_ASYNC && pending == GST_STATE_PLAYING)) {
-      GST_DEBUG ("Changing AppSink element to PAUSED");
-      gst_element_set_state (appSink, GST_STATE_PAUSED);
-    }
+  stream = getTestOutputDataByPad (priv, pad, TRUE);
+  if (priv->callbacks->demux_pad_removed) {
+    priv->callbacks->demux_pad_removed (&priv->engine, stream, priv->user_data);
+  }
+  fail_unless (stream->appsink != NULL);
+  fail_unless (stream->internal_pad != NULL);
+  gst_object_unref (stream->internal_pad);
+  stream->internal_pad = NULL;
+  appSink = GST_ELEMENT (stream->appsink);
+  ret = gst_element_get_state (appSink, &currentState, &pending, 0);
+  if ((ret == GST_STATE_CHANGE_SUCCESS && currentState == GST_STATE_PLAYING)
+      || (ret == GST_STATE_CHANGE_ASYNC && pending == GST_STATE_PLAYING)) {
+    GST_DEBUG ("Changing AppSink element to PAUSED");
+    gst_element_set_state (appSink, GST_STATE_PAUSED);
   }
   GST_TEST_UNLOCK (priv);
 }
@@ -409,6 +459,8 @@
   priv->engine.demux = demux;
   GST_DEBUG ("created demux %" GST_PTR_FORMAT, demux);
 
+  g_signal_connect (demux, "element-added", G_CALLBACK (on_demuxElementAdded),
+      priv);
   g_signal_connect (demux, "pad-added", G_CALLBACK (on_demuxNewPad), priv);
   g_signal_connect (demux, "pad-removed",
       G_CALLBACK (on_demuxPadRemoved), priv);
diff --git a/tests/check/elements/adaptive_demux_engine.h b/tests/check/elements/adaptive_demux_engine.h
index 267d7e8..f715ecb 100644
--- a/tests/check/elements/adaptive_demux_engine.h
+++ b/tests/check/elements/adaptive_demux_engine.h
@@ -35,6 +35,7 @@
   GstPad *pad;
   /* the internal pad of adaptivedemux element used to send data to the GstAppSink element */
   GstPad *internal_pad;
+  gulong internal_pad_probe;
   /* current segment start offset */
   guint64 segment_start;
   /* the size received so far on this segment */
@@ -92,6 +93,19 @@
       GstAdaptiveDemuxTestOutputStream * stream, gpointer user_data);
 
   /**
+   * appsink_event: called when an event is received by appsink
+   * @engine: #GstAdaptiveDemuxTestEngine
+   * @stream: #GstAdaptiveDemuxTestOutputStream
+   * @event: the #GstEvent that was pushed in the demuxer pad
+   * @user_data: the user_data passed to gst_adaptive_demux_test_run()
+   *
+   * Can be used by a test to do some checks on the events
+   */
+  void (*appsink_event) (GstAdaptiveDemuxTestEngine *engine,
+      GstAdaptiveDemuxTestOutputStream * stream,
+      GstEvent * event, gpointer user_data);
+
+  /**
    * demux_pad_added: called each time the demux creates a new pad
    * @engine: #GstAdaptiveDemuxTestEngine
    * @stream: the #GstAdaptiveDemuxTestOutputStream that has been created
@@ -122,17 +136,6 @@
       GstBuffer * buffer, gpointer user_data);
 
   /**
-   * demux_sent_eos: called each time demux send an EOS event
-   * @engine: #GstAdaptiveDemuxTestEngine
-   * @stream: #GstAdaptiveDemuxTestOutputStream
-   * @user_data: the user_data passed to gst_adaptive_demux_test_run()
-   * Can be used by a test to perform additional operations (eg validate
-   * output data)
-   */
-  void (*demux_sent_eos) (GstAdaptiveDemuxTestEngine *engine,
-      GstAdaptiveDemuxTestOutputStream * stream, gpointer user_data);
-  
-  /**
    * bus_error_message: called if an error is posted to the bus
    * @engine: #GstAdaptiveDemuxTestEngine
    * @msg: the #GstMessage that contains the error
diff --git a/tests/check/elements/dash_demux.c b/tests/check/elements/dash_demux.c
index ce7556f..de240a5 100644
--- a/tests/check/elements/dash_demux.c
+++ b/tests/check/elements/dash_demux.c
@@ -104,7 +104,6 @@
       "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
       "     xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
       "     xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
-      "     xmlns:yt=\"http://youtube.com/yt/2012/10/10\""
       "     profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
       "     type=\"static\""
       "     minBufferTime=\"PT1.500S\""
@@ -184,7 +183,6 @@
       "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
       "     xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
       "     xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
-      "     xmlns:yt=\"http://youtube.com/yt/2012/10/10\""
       "     profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
       "     type=\"static\""
       "     minBufferTime=\"PT1.500S\""
@@ -376,7 +374,6 @@
       "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
       "     xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
       "     xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
-      "     xmlns:yt=\"http://youtube.com/yt/2012/10/10\""
       "     profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
       "     type=\"static\""
       "     minBufferTime=\"PT1.500S\""
@@ -440,7 +437,6 @@
       "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
       "     xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
       "     xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
-      "     xmlns:yt=\"http://youtube.com/yt/2012/10/10\""
       "     profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
       "     type=\"static\""
       "     minBufferTime=\"PT1.500S\""
@@ -486,6 +482,15 @@
    */
   testData->threshold_for_seek = 4687 + 1;
 
+  /* seek to 5ms.
+   * Because there is only one fragment, we expect the whole file to be
+   * downloaded again
+   */
+  testData->seek_event =
+      gst_event_new_seek (1.0, GST_FORMAT_TIME,
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT, GST_SEEK_TYPE_SET,
+      5 * GST_MSECOND, GST_SEEK_TYPE_NONE, 0);
+
   gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
   gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
       "http://unit.test/test.mpd", testData);
@@ -494,6 +499,164 @@
 
 GST_END_TEST;
 
+
+static void
+run_seek_position_test (gdouble rate, GstSeekType start_type,
+    guint64 seek_start, GstSeekType stop_type, guint64 seek_stop,
+    GstSeekFlags flags, guint64 segment_start, guint64 segment_stop,
+    gint segments)
+{
+  const gchar *mpd =
+      "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+      "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+      "     xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
+      "     xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
+      "     profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
+      "     type=\"static\""
+      "     minBufferTime=\"PT1.500S\""
+      "     mediaPresentationDuration=\"PT135.743S\">"
+      "  <Period>"
+      "    <AdaptationSet "
+      "        mimeType=\"audio/mp4\" minBandwidth=\"128000\" "
+      "        maxBandwidth=\"128000\" segmentAlignment=\"true\">"
+      "      <SegmentTemplate timescale=\"48000\" "
+      "          initialization=\"init-$RepresentationID$.mp4\" "
+      "          media=\"$RepresentationID$-$Number$.mp4\" "
+      "          startNumber=\"1\">"
+      "        <SegmentTimeline>"
+      "          <S t=\"0\" d=\"48000\" /> "
+      "          <S d=\"48000\" /> "
+      "          <S d=\"48000\" /> "
+      "          <S d=\"48000\" /> "
+      "        </SegmentTimeline>"
+      "      </SegmentTemplate>"
+      "      <Representation id=\"audio\" bandwidth=\"128000\" "
+      "          codecs=\"mp4a.40.2\" audioSamplingRate=\"48000\"> "
+      "        <AudioChannelConfiguration "
+      "            schemeIdUri=\"urn:mpeg:dash:23003:3:audio_channel_configuration:2011\""
+      "            value=\"2\"> "
+      "        </AudioChannelConfiguration> "
+      "    </Representation></AdaptationSet></Period></MPD>";
+  GstDashDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/test.mpd", (guint8 *) mpd, 0},
+    {"http://unit.test/init-audio.mp4", NULL, 10000},
+    {"http://unit.test/audio-1.mp4", NULL, 10000},
+    {"http://unit.test/audio-2.mp4", NULL, 10000},
+    {"http://unit.test/audio-3.mp4", NULL, 10000},
+    {"http://unit.test/audio-4.mp4", NULL, 10000},
+    {NULL, NULL, 0},
+  };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    /* 1 from the init segment */
+    {"audio_00", (1 + segments) * 10000, NULL},
+  };
+  GstAdaptiveDemuxTestCase *testData;
+
+  testData = gst_adaptive_demux_test_case_new ();
+
+  http_src_callbacks.src_start = gst_dashdemux_http_src_start;
+  http_src_callbacks.src_create = gst_dashdemux_http_src_create;
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
+  /* media segment starts at 4687
+   * Issue a seek request after media segment has started to be downloaded
+   * on the first pad listed in GstAdaptiveDemuxTestOutputStreamData and the
+   * first chunk of at least one byte has already arrived in AppSink
+   */
+  testData->threshold_for_seek = 4687 + 1;
+
+  /* FIXME hack to avoid having a 0 seqnum */
+  gst_util_seqnum_next ();
+
+  /* seek to 5ms.
+   * Because there is only one fragment, we expect the whole file to be
+   * downloaded again
+   */
+  testData->seek_event =
+      gst_event_new_seek (rate, GST_FORMAT_TIME, flags, start_type,
+      seek_start, stop_type, seek_stop);
+
+  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+  gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
+      "http://unit.test/test.mpd", testData);
+  gst_object_unref (testData);
+}
+
+GST_START_TEST (testSeekKeyUnitPosition)
+{
+  /* Seek to 1.5s with key unit, it should go back to 1.0s. 3 segments will be
+   * pushed */
+  run_seek_position_test (1.0, GST_SEEK_TYPE_SET, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_NONE, 0, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT,
+      1000 * GST_MSECOND, -1, 3);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (testSeekUpdateStopPosition)
+{
+  run_seek_position_test (1.0, GST_SEEK_TYPE_NONE, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_SET, 3000 * GST_MSECOND, 0, 0, 3000 * GST_MSECOND, 3);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (testSeekPosition)
+{
+  /* Seek to 1.5s without key unit, it should keep the 1.5s, but still push
+   * from the 1st segment, so 3 segments will be
+   * pushed */
+  run_seek_position_test (1.0, GST_SEEK_TYPE_SET, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_NONE, 0, GST_SEEK_FLAG_FLUSH, 1500 * GST_MSECOND, -1, 3);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (testSeekSnapBeforePosition)
+{
+  /* Seek to 1.5s, snap before, it go to 1s */
+  run_seek_position_test (1.0, GST_SEEK_TYPE_SET, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_NONE, 0, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SNAP_BEFORE,
+      1000 * GST_MSECOND, -1, 3);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (testSeekSnapAfterPosition)
+{
+  /* Seek to 1.5s with snap after, it should move to 2s */
+  run_seek_position_test (1.0, GST_SEEK_TYPE_SET, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_NONE, 0, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SNAP_AFTER,
+      2000 * GST_MSECOND, -1, 2);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (testReverseSeekSnapBeforePosition)
+{
+  run_seek_position_test (-1.0, GST_SEEK_TYPE_SET, 1000 * GST_MSECOND,
+      GST_SEEK_TYPE_SET, 2500 * GST_MSECOND,
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SNAP_BEFORE, 1000 * GST_MSECOND,
+      3000 * GST_MSECOND, 2);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (testReverseSeekSnapAfterPosition)
+{
+  run_seek_position_test (-1.0, GST_SEEK_TYPE_SET, 1000 * GST_MSECOND,
+      GST_SEEK_TYPE_SET, 2500 * GST_MSECOND,
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SNAP_AFTER, 1000 * GST_MSECOND,
+      2000 * GST_MSECOND, 1);
+}
+
+GST_END_TEST;
+
 static void
 testDownloadErrorMessageCallback (GstAdaptiveDemuxTestEngine * engine,
     GstMessage * msg, gpointer user_data)
@@ -522,7 +685,6 @@
       "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
       "     xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
       "     xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
-      "     xmlns:yt=\"http://youtube.com/yt/2012/10/10\""
       "     profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
       "     type=\"static\""
       "     minBufferTime=\"PT1.500S\""
@@ -645,7 +807,6 @@
       "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
       "     xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
       "     xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
-      "     xmlns:yt=\"http://youtube.com/yt/2012/10/10\""
       "     profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
       "     type=\"static\""
       "     minBufferTime=\"PT1.500S\""
@@ -753,7 +914,6 @@
       "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
       "     xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
       "     xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
-      "     xmlns:yt=\"http://youtube.com/yt/2012/10/10\""
       "     profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
       "     type=\"static\""
       "     minBufferTime=\"PT1.500S\""
@@ -817,6 +977,13 @@
   tcase_add_test (tc_basicTest, testTwoPeriods);
   tcase_add_test (tc_basicTest, testParameters);
   tcase_add_test (tc_basicTest, testSeek);
+  tcase_add_test (tc_basicTest, testSeekKeyUnitPosition);
+  tcase_add_test (tc_basicTest, testSeekPosition);
+  tcase_add_test (tc_basicTest, testSeekUpdateStopPosition);
+  tcase_add_test (tc_basicTest, testSeekSnapBeforePosition);
+  tcase_add_test (tc_basicTest, testSeekSnapAfterPosition);
+  tcase_add_test (tc_basicTest, testReverseSeekSnapBeforePosition);
+  tcase_add_test (tc_basicTest, testReverseSeekSnapAfterPosition);
   tcase_add_test (tc_basicTest, testDownloadError);
   tcase_add_test (tc_basicTest, testFragmentDownloadError);
   tcase_add_test (tc_basicTest, testQuery);
diff --git a/tests/check/elements/dash_mpd.c b/tests/check/elements/dash_mpd.c
index b460d14..348b65c 100644
--- a/tests/check/elements/dash_mpd.c
+++ b/tests/check/elements/dash_mpd.c
@@ -3888,7 +3888,7 @@
   gboolean hasNextSegment;
   GstActiveStream *activeStream;
   GstFlowReturn flow;
-  GstDateTime *segmentEndTime;
+  GstDateTime *segmentAvailability;
   GstDateTime *gst_time;
   GDateTime *g_time;
 
@@ -3985,19 +3985,22 @@
 
   /* each segment has a duration of 0 hours, 0 min 45 seconds
    * segment index is 1.
-   * End time is at the end of segment 1, so 2 * segment_duration = 2 * 45s
+   * Start time is at the beginning of segment 1, so 1 * segment_duration = 1 * 45s
+   * Availability start time is at the end of the segment, so we add duration (45s)
    * We also add period start time (10s)
+   * So, availability start time for segment 1 is: 10 (period start) +
+   * 45 (segment start) + 45 (duration) = 1'40s
    */
-  segmentEndTime =
-      gst_mpd_client_get_next_segment_availability_end_time (mpdclient,
+  segmentAvailability =
+      gst_mpd_client_get_next_segment_availability_start_time (mpdclient,
       activeStream);
-  assert_equals_int (gst_date_time_get_year (segmentEndTime), 2015);
-  assert_equals_int (gst_date_time_get_month (segmentEndTime), 3);
-  assert_equals_int (gst_date_time_get_day (segmentEndTime), 24);
-  assert_equals_int (gst_date_time_get_hour (segmentEndTime), 0);
-  assert_equals_int (gst_date_time_get_minute (segmentEndTime), 1);
-  assert_equals_int (gst_date_time_get_second (segmentEndTime), 40);
-  gst_date_time_unref (segmentEndTime);
+  assert_equals_int (gst_date_time_get_year (segmentAvailability), 2015);
+  assert_equals_int (gst_date_time_get_month (segmentAvailability), 3);
+  assert_equals_int (gst_date_time_get_day (segmentAvailability), 24);
+  assert_equals_int (gst_date_time_get_hour (segmentAvailability), 0);
+  assert_equals_int (gst_date_time_get_minute (segmentAvailability), 1);
+  assert_equals_int (gst_date_time_get_second (segmentAvailability), 40);
+  gst_date_time_unref (segmentAvailability);
 
   /* seek to time */
   gst_time = gst_date_time_new_from_iso8601_string ("2015-03-24T0:0:20Z");
@@ -4043,6 +4046,8 @@
       "          <Initialization sourceURL=\"TestSourceUrl\""
       "                          range=\"100-200\">"
       "          </Initialization>"
+      "          <RepresentationIndex sourceURL=\"TestSourceIndex\">"
+      "          </RepresentationIndex>"
       "        </SegmentBase>"
       "      </Representation></AdaptationSet></Period></MPD>";
 
@@ -4083,7 +4088,7 @@
       gst_mpd_client_get_next_header_index (mpdclient, &uri, 0, &range_start,
       &range_end);
   assert_equals_int (ret, TRUE);
-  assert_equals_string (uri, "TestSourceUrl");
+  assert_equals_string (uri, "TestSourceIndex");
   assert_equals_int64 (range_start, 10);
   assert_equals_int64 (range_end, 20);
   g_free (uri);
@@ -4526,6 +4531,7 @@
   GstClockTime expectedDuration;
   GstClockTime expectedTimestamp;
   GstFlowReturn flow;
+  GstDateTime *segmentAvailability;
 
   const gchar *xml =
       "<?xml version=\"1.0\"?>"
@@ -4592,6 +4598,22 @@
   assert_equals_uint64 (fragment.timestamp, expectedTimestamp * GST_MSECOND);
   gst_media_fragment_info_clear (&fragment);
 
+  /* first segment starts at 3s and has a duration of 2s.
+   * We also add period start time (10s) so we expect a segment availability
+   * start time of 15s
+   */
+  segmentAvailability =
+      gst_mpd_client_get_next_segment_availability_start_time (mpdclient,
+      activeStream);
+  fail_unless (segmentAvailability != NULL);
+  assert_equals_int (gst_date_time_get_year (segmentAvailability), 2015);
+  assert_equals_int (gst_date_time_get_month (segmentAvailability), 3);
+  assert_equals_int (gst_date_time_get_day (segmentAvailability), 24);
+  assert_equals_int (gst_date_time_get_hour (segmentAvailability), 0);
+  assert_equals_int (gst_date_time_get_minute (segmentAvailability), 0);
+  assert_equals_int (gst_date_time_get_second (segmentAvailability), 15);
+  gst_date_time_unref (segmentAvailability);
+
   /* advance to next segment */
   flow = gst_mpd_client_advance_segment (mpdclient, activeStream, TRUE);
   assert_equals_int (flow, GST_FLOW_OK);
@@ -4610,6 +4632,24 @@
   assert_equals_uint64 (fragment.timestamp, expectedTimestamp * GST_MSECOND);
   gst_media_fragment_info_clear (&fragment);
 
+  /* first segment starts at 3s and has a duration of 2s.
+   * Second segment starts when the first ends (5s) and has a duration of 2s,
+   * so it ends at 7s.
+   * We also add period start time (10s) so we expect a segment availability
+   * start time of 17s
+   */
+  segmentAvailability =
+      gst_mpd_client_get_next_segment_availability_start_time (mpdclient,
+      activeStream);
+  fail_unless (segmentAvailability != NULL);
+  assert_equals_int (gst_date_time_get_year (segmentAvailability), 2015);
+  assert_equals_int (gst_date_time_get_month (segmentAvailability), 3);
+  assert_equals_int (gst_date_time_get_day (segmentAvailability), 24);
+  assert_equals_int (gst_date_time_get_hour (segmentAvailability), 0);
+  assert_equals_int (gst_date_time_get_minute (segmentAvailability), 0);
+  assert_equals_int (gst_date_time_get_second (segmentAvailability), 17);
+  gst_date_time_unref (segmentAvailability);
+
   /* advance to next segment */
   flow = gst_mpd_client_advance_segment (mpdclient, activeStream, TRUE);
   assert_equals_int (flow, GST_FLOW_OK);
@@ -4627,6 +4667,22 @@
   assert_equals_uint64 (fragment.timestamp, expectedTimestamp * GST_MSECOND);
   gst_media_fragment_info_clear (&fragment);
 
+  /* Third segment starts at 10s and has a duration of 3s so it ends at 13s.
+   * We also add period start time (10s) so we expect a segment availability
+   * start time of 23s
+   */
+  segmentAvailability =
+      gst_mpd_client_get_next_segment_availability_start_time (mpdclient,
+      activeStream);
+  fail_unless (segmentAvailability != NULL);
+  assert_equals_int (gst_date_time_get_year (segmentAvailability), 2015);
+  assert_equals_int (gst_date_time_get_month (segmentAvailability), 3);
+  assert_equals_int (gst_date_time_get_day (segmentAvailability), 24);
+  assert_equals_int (gst_date_time_get_hour (segmentAvailability), 0);
+  assert_equals_int (gst_date_time_get_minute (segmentAvailability), 0);
+  assert_equals_int (gst_date_time_get_second (segmentAvailability), 23);
+  gst_date_time_unref (segmentAvailability);
+
   gst_mpd_client_free (mpdclient);
 }
 
diff --git a/tests/check/elements/hls_demux.c b/tests/check/elements/hls_demux.c
new file mode 100644
index 0000000..61cb140
--- /dev/null
+++ b/tests/check/elements/hls_demux.c
@@ -0,0 +1,743 @@
+/* GStreamer unit test for HLS demux
+ *
+ * Copyright (c) <2015> YouView TV Ltd
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <gst/check/gstcheck.h>
+#include "adaptive_demux_common.h"
+
+#define DEMUX_ELEMENT_NAME "hlsdemux"
+
+#define TS_PACKET_LEN 188
+
+typedef struct _GstHlsDemuxTestInputData
+{
+  const gchar *uri;
+  const guint8 *payload;
+  guint64 size;
+} GstHlsDemuxTestInputData;
+
+typedef struct _GstHlsDemuxTestCase
+{
+  const GstHlsDemuxTestInputData *input;
+  GstStructure *state;
+} GstHlsDemuxTestCase;
+
+typedef struct _GstHlsDemuxTestAppendUriContext
+{
+  GQuark field_id;
+  const gchar *uri;
+} GstHlsDemuxTestAppendUriContext;
+
+typedef struct _GstHlsDemuxTestSelectBitrateContext
+{
+  GstAdaptiveDemuxTestEngine *engine;
+  GstAdaptiveDemuxTestCase *testData;
+  guint select_count;
+  gulong signal_handle;
+} GstHlsDemuxTestSelectBitrateContext;
+
+static GByteArray *
+generate_transport_stream (guint length)
+{
+  guint pos;
+  guint cc = 0;
+  GByteArray *mpeg_ts;
+
+  fail_unless ((length % TS_PACKET_LEN) == 0);
+  mpeg_ts = g_byte_array_sized_new (length);
+  if (!mpeg_ts) {
+    return NULL;
+  }
+  memset (mpeg_ts->data, 0xFF, length);
+  for (pos = 0; pos < length; pos += TS_PACKET_LEN) {
+    mpeg_ts->data[pos] = 0x47;
+    mpeg_ts->data[pos + 1] = 0x1F;
+    mpeg_ts->data[pos + 2] = 0xFF;
+    mpeg_ts->data[pos + 3] = cc;
+    cc = (cc + 1) & 0x0F;
+  }
+  return mpeg_ts;
+}
+
+static GByteArray *
+setup_test_variables (GstHlsDemuxTestInputData * inputTestData,
+    GstAdaptiveDemuxTestExpectedOutput * outputTestData,
+    GstHlsDemuxTestCase * hlsTestCase,
+    GstAdaptiveDemuxTestCase * engineTestData, guint segment_size)
+{
+  GByteArray *mpeg_ts = NULL;
+
+  if (segment_size) {
+    mpeg_ts = generate_transport_stream ((segment_size));
+    fail_unless (mpeg_ts != NULL);
+    for (guint itd = 0; inputTestData[itd].uri; ++itd) {
+      if (g_str_has_suffix (inputTestData[itd].uri, ".ts")) {
+        inputTestData[itd].payload = mpeg_ts->data;
+      }
+    }
+    for (guint otd = 0; outputTestData[otd].name; ++otd) {
+      outputTestData[otd].expected_data = mpeg_ts->data;
+      engineTestData->output_streams =
+          g_list_append (engineTestData->output_streams, &outputTestData[otd]);
+    }
+  }
+  hlsTestCase->input = inputTestData;
+  hlsTestCase->state = gst_structure_new_empty (__FUNCTION__);
+  return mpeg_ts;
+}
+
+#define TESTCASE_INIT_BOILERPLATE(segment_size) \
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 }; \
+  GstAdaptiveDemuxTestCallbacks engine_callbacks = { 0 }; \
+  GstAdaptiveDemuxTestCase *engineTestData; \
+  GstHlsDemuxTestCase hlsTestCase = { 0 }; \
+  GByteArray *mpeg_ts=NULL; \
+  engineTestData = gst_adaptive_demux_test_case_new(); \
+  fail_unless (engineTestData!=NULL); \
+  mpeg_ts = setup_test_variables(inputTestData, outputTestData, \
+                                 &hlsTestCase, engineTestData, segment_size); \
+
+#define TESTCASE_UNREF_BOILERPLATE do{ \
+  if(engineTestData->signal_context){ \
+    g_slice_free (GstHlsDemuxTestSelectBitrateContext, engineTestData->signal_context);        \
+  } \
+  if(mpeg_ts) { g_byte_array_free (mpeg_ts, TRUE); }         \
+  gst_structure_free (hlsTestCase.state); \
+  g_object_unref (engineTestData); \
+} while(0)
+
+static gboolean
+append_request_uri (GQuark field_id, GValue * value, gpointer user_data)
+{
+  GstHlsDemuxTestAppendUriContext *context =
+      (GstHlsDemuxTestAppendUriContext *) user_data;
+  GValue uri_val = G_VALUE_INIT;
+
+  if (context->field_id == field_id) {
+    g_value_init (&uri_val, G_TYPE_STRING);
+    g_value_set_string (&uri_val, context->uri);
+    gst_value_array_append_value (value, &uri_val);
+    g_value_unset (&uri_val);
+  }
+  return TRUE;
+}
+
+static void
+gst_hlsdemux_test_set_input_data (const GstHlsDemuxTestCase * test_case,
+    const GstHlsDemuxTestInputData * input, GstTestHTTPSrcInput * output)
+{
+  output->size = input->size;
+  output->context = (gpointer) input;
+  if (output->size == 0) {
+    output->size = strlen ((gchar *) input->payload);
+  }
+  fail_unless (input->uri != NULL);
+  if (g_str_has_suffix (input->uri, ".m3u8")) {
+    output->response_headers = gst_structure_new ("response-headers",
+        "Content-Type", G_TYPE_STRING, "application/vnd.apple.mpegurl", NULL);
+  } else if (g_str_has_suffix (input->uri, ".ts")) {
+    output->response_headers = gst_structure_new ("response-headers",
+        "Content-Type", G_TYPE_STRING, "video/mp2t", NULL);
+  }
+  if (gst_structure_has_field (test_case->state, "requests")) {
+    GstHlsDemuxTestAppendUriContext context =
+        { g_quark_from_string ("requests"), input->uri };
+    gst_structure_map_in_place (test_case->state, append_request_uri, &context);
+  } else {
+    GValue requests = G_VALUE_INIT;
+    GValue uri_val = G_VALUE_INIT;
+
+    g_value_init (&requests, GST_TYPE_ARRAY);
+    g_value_init (&uri_val, G_TYPE_STRING);
+    g_value_set_string (&uri_val, input->uri);
+    gst_value_array_append_value (&requests, &uri_val);
+    gst_structure_set_value (test_case->state, "requests", &requests);
+    g_value_unset (&uri_val);
+    g_value_unset (&requests);
+  }
+}
+
+static gboolean
+gst_hlsdemux_test_src_start (GstTestHTTPSrc * src,
+    const gchar * uri, GstTestHTTPSrcInput * input_data, gpointer user_data)
+{
+  const GstHlsDemuxTestCase *test_case =
+      (const GstHlsDemuxTestCase *) user_data;
+  guint fail_count = 0;
+
+  GST_DEBUG ("src_start %s", uri);
+  for (guint i = 0; test_case->input[i].uri; ++i) {
+    if (strcmp (test_case->input[i].uri, uri) == 0) {
+      gst_hlsdemux_test_set_input_data (test_case, &test_case->input[i],
+          input_data);
+      GST_DEBUG ("open URI %s", uri);
+      return TRUE;
+    }
+  }
+  gst_structure_get_uint (test_case->state, "failure-count", &fail_count);
+  fail_count++;
+  gst_structure_set (test_case->state, "failure-count", G_TYPE_UINT,
+      fail_count, NULL);
+  return FALSE;
+}
+
+static GstFlowReturn
+gst_hlsdemux_test_src_create (GstTestHTTPSrc * src,
+    guint64 offset,
+    guint length, GstBuffer ** retbuf, gpointer context, gpointer user_data)
+{
+  GstBuffer *buf;
+  /*  const GstHlsDemuxTestCase *test_case = (const GstHlsDemuxTestCase *) user_data; */
+  GstHlsDemuxTestInputData *input = (GstHlsDemuxTestInputData *) context;
+
+  buf = gst_buffer_new_allocate (NULL, length, NULL);
+  fail_if (buf == NULL, "Not enough memory to allocate buffer");
+  fail_if (input->payload == NULL);
+  gst_buffer_fill (buf, 0, input->payload + offset, length);
+  *retbuf = buf;
+  return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+gst_hlsdemux_test_network_error_src_create (GstTestHTTPSrc * src,
+    guint64 offset,
+    guint length, GstBuffer ** retbuf, gpointer context, gpointer user_data)
+{
+  const GstHlsDemuxTestCase *test_case =
+      (const GstHlsDemuxTestCase *) user_data;
+  GstHlsDemuxTestInputData *input = (GstHlsDemuxTestInputData *) context;
+  const gchar *failure_suffix;
+  guint64 failure_position = 0;
+
+  fail_unless (test_case != NULL);
+  fail_unless (input != NULL);
+  fail_unless (input->uri != NULL);
+  failure_suffix =
+      gst_structure_get_string (test_case->state, "failure-suffix");
+  if (!failure_suffix) {
+    failure_suffix = ".ts";
+  }
+  if (!gst_structure_get_uint64 (test_case->state, "failure-position",
+          &failure_position)) {
+    failure_position = 10 * TS_PACKET_LEN;
+  }
+  GST_DEBUG ("network_error %s %s %" G_GUINT64_FORMAT " @ %" G_GUINT64_FORMAT,
+      input->uri, failure_suffix, offset, failure_position);
+  if (g_str_has_suffix (input->uri, failure_suffix)
+      && offset >= failure_position) {
+    GST_DEBUG ("return error");
+    GST_ELEMENT_ERROR (src, RESOURCE, READ,
+        (("A network error occurred, or the server closed the connection unexpectedly.")), ("A network error occurred, or the server closed the connection unexpectedly."));
+    *retbuf = NULL;
+    return GST_FLOW_ERROR;
+  }
+  return gst_hlsdemux_test_src_create (src, offset, length, retbuf, context,
+      user_data);
+}
+
+/******************** Test specific code starts here **************************/
+
+/*
+ * Test a media manifest with a single segment
+ *
+ */
+GST_START_TEST (simpleTest)
+{
+  /* segment_size needs to larger than 2K, otherwise gsthlsdemux will
+     not perform a typefind on the buffer */
+  const guint segment_size = 30 * TS_PACKET_LEN;
+  const gchar *manifest =
+      "#EXTM3U \n"
+      "#EXT-X-TARGETDURATION:1\n"
+      "#EXTINF:1,Test\n" "001.ts\n" "#EXT-X-ENDLIST\n";
+  GstHlsDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/media.m3u8", (guint8 *) manifest, 0},
+    {"http://unit.test/001.ts", NULL, segment_size},
+    {NULL, NULL, 0},
+  };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    {"src_0", segment_size, NULL},
+    {NULL, 0, NULL}
+  };
+  TESTCASE_INIT_BOILERPLATE (segment_size);
+
+  http_src_callbacks.src_start = gst_hlsdemux_test_src_start;
+  http_src_callbacks.src_create = gst_hlsdemux_test_src_create;
+  engine_callbacks.appsink_received_data =
+      gst_adaptive_demux_test_check_received_data;
+  engine_callbacks.appsink_eos =
+      gst_adaptive_demux_test_check_size_of_received_data;
+
+  gst_test_http_src_install_callbacks (&http_src_callbacks, &hlsTestCase);
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
+      inputTestData[0].uri, &engine_callbacks, engineTestData);
+  TESTCASE_UNREF_BOILERPLATE;
+}
+
+GST_END_TEST;
+
+GST_START_TEST (testMasterPlaylist)
+{
+  const guint segment_size = 30 * TS_PACKET_LEN;
+  const gchar *master_playlist =
+      "#EXTM3U\n"
+      "#EXT-X-VERSION:4\n"
+      "#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1251135, CODECS=\"avc1.42001f mp4a.40.2\", RESOLUTION=640x352\n"
+      "1200.m3u8\n";
+  const gchar *media_playlist =
+      "#EXTM3U \n"
+      "#EXT-X-TARGETDURATION:1\n"
+      "#EXTINF:1,Test\n" "001.ts\n" "#EXT-X-ENDLIST\n";
+  GstHlsDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/master.m3u8", (guint8 *) master_playlist, 0},
+    {"http://unit.test/1200.m3u8", (guint8 *) media_playlist, 0},
+    {"http://unit.test/001.ts", NULL, segment_size},
+    {NULL, NULL, 0}
+  };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    {"src_0", segment_size, NULL},
+    {NULL, 0, NULL}
+  };
+  const GValue *requests;
+  TESTCASE_INIT_BOILERPLATE (segment_size);
+
+  http_src_callbacks.src_start = gst_hlsdemux_test_src_start;
+  http_src_callbacks.src_create = gst_hlsdemux_test_src_create;
+  engine_callbacks.appsink_received_data =
+      gst_adaptive_demux_test_check_received_data;
+  engine_callbacks.appsink_eos =
+      gst_adaptive_demux_test_check_size_of_received_data;
+
+  gst_test_http_src_install_callbacks (&http_src_callbacks, &hlsTestCase);
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
+      "http://unit.test/master.m3u8", &engine_callbacks, engineTestData);
+
+  requests = gst_structure_get_value (hlsTestCase.state, "requests");
+  fail_unless (requests != NULL);
+  assert_equals_uint64 (gst_value_array_get_size (requests),
+      sizeof (inputTestData) / sizeof (inputTestData[0]) - 1);
+  for (guint i = 0; inputTestData[i].uri; ++i) {
+    const GValue *uri;
+    uri = gst_value_array_get_value (requests, i);
+    fail_unless (uri != NULL);
+    assert_equals_string (inputTestData[i].uri, g_value_get_string (uri));
+  }
+  TESTCASE_UNREF_BOILERPLATE;
+}
+
+GST_END_TEST;
+
+/*
+ * Test seeking
+ *
+ */
+GST_START_TEST (testSeek)
+{
+  const guint segment_size = 60 * TS_PACKET_LEN;
+  const gchar *manifest =
+      "#EXTM3U \n"
+      "#EXT-X-TARGETDURATION:1\n"
+      "#EXTINF:1,Test\n" "001.ts\n" "#EXT-X-ENDLIST\n";
+  GstHlsDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/media.m3u8", (guint8 *) manifest, 0},
+    {"http://unit.test/001.ts", NULL, segment_size},
+    {NULL, NULL, 0},
+  };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    {"src_0", segment_size, NULL},
+    {NULL, 0, NULL}
+  };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstAdaptiveDemuxTestCase *engineTestData;
+  GstHlsDemuxTestCase hlsTestCase = { 0 };
+  GByteArray *mpeg_ts = NULL;
+
+  engineTestData = gst_adaptive_demux_test_case_new ();
+  mpeg_ts = setup_test_variables (inputTestData, outputTestData,
+      &hlsTestCase, engineTestData, segment_size);
+
+  http_src_callbacks.src_start = gst_hlsdemux_test_src_start;
+  http_src_callbacks.src_create = gst_hlsdemux_test_src_create;
+  /* seek to 5ms.
+   * Because there is only one fragment, we expect the whole file to be
+   * downloaded again
+   */
+  engineTestData->threshold_for_seek = 20 * TS_PACKET_LEN;
+  engineTestData->seek_event =
+      gst_event_new_seek (1.0, GST_FORMAT_TIME,
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT, GST_SEEK_TYPE_SET,
+      5 * GST_MSECOND, GST_SEEK_TYPE_NONE, 0);
+
+  gst_test_http_src_install_callbacks (&http_src_callbacks, &hlsTestCase);
+  gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
+      inputTestData[0].uri, engineTestData);
+
+  TESTCASE_UNREF_BOILERPLATE;
+}
+
+GST_END_TEST;
+
+static void
+run_seek_position_test (gdouble rate, GstSeekType start_type,
+    guint64 seek_start, GstSeekType stop_type,
+    guint64 seek_stop, GstSeekFlags flags, guint64 segment_start,
+    guint64 segment_stop, gint segments)
+{
+  const guint segment_size = 60 * TS_PACKET_LEN;
+  const gchar *manifest =
+      "#EXTM3U \n"
+      "#EXT-X-TARGETDURATION:1\n"
+      "#EXTINF:1,Test\n" "001.ts\n"
+      "#EXTINF:1,Test\n" "002.ts\n"
+      "#EXTINF:1,Test\n" "003.ts\n"
+      "#EXTINF:1,Test\n" "004.ts\n" "#EXT-X-ENDLIST\n";
+  GstHlsDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/media.m3u8", (guint8 *) manifest, 0},
+    {"http://unit.test/001.ts", NULL, segment_size},
+    {"http://unit.test/002.ts", NULL, segment_size},
+    {"http://unit.test/003.ts", NULL, segment_size},
+    {"http://unit.test/004.ts", NULL, segment_size},
+    {NULL, NULL, 0},
+  };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    {"src_0", segment_size * segments, NULL},
+    {NULL, 0, NULL}
+  };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstAdaptiveDemuxTestCase *engineTestData;
+  GstHlsDemuxTestCase hlsTestCase = { 0 };
+  GByteArray *mpeg_ts = NULL;
+
+  engineTestData = gst_adaptive_demux_test_case_new ();
+  mpeg_ts = setup_test_variables (inputTestData, outputTestData,
+      &hlsTestCase, engineTestData, segment_size);
+
+  http_src_callbacks.src_start = gst_hlsdemux_test_src_start;
+  http_src_callbacks.src_create = gst_hlsdemux_test_src_create;
+
+  /* FIXME hack to avoid having a 0 seqnum */
+  gst_util_seqnum_next ();
+
+  /* Seek to 1.5s, expect it to start from 1s */
+  engineTestData->threshold_for_seek = 20 * TS_PACKET_LEN;
+  engineTestData->seek_event =
+      gst_event_new_seek (rate, GST_FORMAT_TIME, flags, start_type,
+      seek_start, stop_type, seek_stop);
+  gst_segment_init (&outputTestData[0].post_seek_segment, GST_FORMAT_TIME);
+  outputTestData[0].post_seek_segment.rate = rate;
+  outputTestData[0].post_seek_segment.start = segment_start;
+  outputTestData[0].post_seek_segment.time = segment_start;
+  outputTestData[0].post_seek_segment.stop = segment_stop;
+  outputTestData[0].segment_verification_needed = TRUE;
+
+  gst_test_http_src_install_callbacks (&http_src_callbacks, &hlsTestCase);
+  gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
+      inputTestData[0].uri, engineTestData);
+
+  TESTCASE_UNREF_BOILERPLATE;
+}
+
+
+GST_START_TEST (testSeekKeyUnitPosition)
+{
+  /* Seek to 1.5s with key unit, it should go back to 1.0s. 3 segments will be
+   * pushed */
+  run_seek_position_test (1.0, GST_SEEK_TYPE_SET, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_NONE, 0, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT,
+      1000 * GST_MSECOND, -1, 3);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (testSeekPosition)
+{
+  /* Seek to 1.5s without key unit, it should keep the 1.5s, but still push
+   * from the 1st segment, so 3 segments will be
+   * pushed */
+  run_seek_position_test (1.0, GST_SEEK_TYPE_SET, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_NONE, 0, GST_SEEK_FLAG_FLUSH, 1500 * GST_MSECOND, -1, 3);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (testSeekUpdateStopPosition)
+{
+  run_seek_position_test (1.0, GST_SEEK_TYPE_NONE, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_SET, 3000 * GST_MSECOND, 0, 0, 3000 * GST_MSECOND, 3);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (testSeekSnapBeforePosition)
+{
+  /* Seek to 1.5s, snap before, it go to 1s */
+  run_seek_position_test (1.0, GST_SEEK_TYPE_SET, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_NONE, 0, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SNAP_BEFORE,
+      1000 * GST_MSECOND, -1, 3);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (testSeekSnapAfterPosition)
+{
+  /* Seek to 1.5s with snap after, it should move to 2s */
+  run_seek_position_test (1.0, GST_SEEK_TYPE_SET, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_NONE, 0, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SNAP_AFTER,
+      2000 * GST_MSECOND, -1, 2);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (testReverseSeekSnapBeforePosition)
+{
+  run_seek_position_test (-1.0, GST_SEEK_TYPE_SET, 1000 * GST_MSECOND,
+      GST_SEEK_TYPE_SET, 2500 * GST_MSECOND,
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SNAP_BEFORE, 1000 * GST_MSECOND,
+      3000 * GST_MSECOND, 2);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (testReverseSeekSnapAfterPosition)
+{
+  run_seek_position_test (-1.0, GST_SEEK_TYPE_SET, 1000 * GST_MSECOND,
+      GST_SEEK_TYPE_SET, 2500 * GST_MSECOND,
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SNAP_AFTER, 1000 * GST_MSECOND,
+      2000 * GST_MSECOND, 1);
+}
+
+GST_END_TEST;
+
+static void
+testDownloadErrorMessageCallback (GstAdaptiveDemuxTestEngine * engine,
+    GstMessage * msg, gpointer user_data)
+{
+  GError *err = NULL;
+  gchar *dbg_info = NULL;
+
+  fail_unless (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ERROR);
+  gst_message_parse_error (msg, &err, &dbg_info);
+  GST_DEBUG ("Error from element %s : %s\n",
+      GST_OBJECT_NAME (msg->src), err->message);
+  fail_unless_equals_string (GST_OBJECT_NAME (msg->src), DEMUX_ELEMENT_NAME);
+  g_error_free (err);
+  g_free (dbg_info);
+  g_main_loop_quit (engine->loop);
+}
+
+/* test failing to download the media playlist */
+GST_START_TEST (testMediaPlaylistNotFound)
+{
+  const gchar *master_playlist =
+      "#EXTM3U\n"
+      "#EXT-X-VERSION:4\n"
+      "#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1251135, CODECS=\"avc1.42001f mp4a.40.2\", RESOLUTION=640x352\n"
+      "1200.m3u8\n";
+  GstHlsDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/master.m3u8", (guint8 *) master_playlist, 0},
+    {NULL, NULL, 0}
+  };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    {"src_0", 0, NULL},
+    {NULL, 0, NULL}
+  };
+  TESTCASE_INIT_BOILERPLATE (0);
+
+  gst_structure_set (hlsTestCase.state,
+      "failure-count", G_TYPE_UINT, 0,
+      "failure-suffix", G_TYPE_STRING, "1200.m3u8", NULL);
+  http_src_callbacks.src_start = gst_hlsdemux_test_src_start;
+  http_src_callbacks.src_create = gst_hlsdemux_test_src_create;
+  engine_callbacks.appsink_received_data =
+      gst_adaptive_demux_test_check_received_data;
+  engine_callbacks.bus_error_message = testDownloadErrorMessageCallback;
+
+  gst_test_http_src_install_callbacks (&http_src_callbacks, &hlsTestCase);
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
+      "http://unit.test/master.m3u8", &engine_callbacks, engineTestData);
+
+  TESTCASE_UNREF_BOILERPLATE;
+}
+
+GST_END_TEST;
+
+static void
+hlsdemux_test_check_no_data_received (GstAdaptiveDemuxTestEngine
+    * engine, GstAdaptiveDemuxTestOutputStream * stream, gpointer user_data)
+{
+  assert_equals_uint64 (stream->total_received_size, 0);
+  g_main_loop_quit (engine->loop);
+}
+
+/* test failing to download a media segment (a 404 error) */
+GST_START_TEST (testFragmentNotFound)
+{
+  const gchar *master_playlist =
+      "#EXTM3U\n"
+      "#EXT-X-VERSION:4\n"
+      "#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1251135, CODECS=\"avc1.42001f mp4a.40.2\", RESOLUTION=640x352\n"
+      "1200.m3u8\n";
+  const gchar *media_playlist =
+      "#EXTM3U \n"
+      "#EXT-X-TARGETDURATION:1\n"
+      "#EXTINF:1,Test\n" "001.ts\n" "#EXT-X-ENDLIST\n";
+  GstHlsDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/master.m3u8", (guint8 *) master_playlist, 0},
+    {"http://unit.test/1200.m3u8", (guint8 *) media_playlist, 0},
+    {NULL, NULL, 0}
+  };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    {"src_0", 0, NULL},
+    {NULL, 0, NULL}
+  };
+  TESTCASE_INIT_BOILERPLATE (0);
+
+  gst_structure_set (hlsTestCase.state,
+      "failure-count", G_TYPE_UINT, 0,
+      "failure-suffix", G_TYPE_STRING, "001.ts", NULL);
+  http_src_callbacks.src_start = gst_hlsdemux_test_src_start;
+  http_src_callbacks.src_create = gst_hlsdemux_test_src_create;
+  engine_callbacks.appsink_received_data =
+      gst_adaptive_demux_test_check_received_data;
+  engine_callbacks.appsink_eos = hlsdemux_test_check_no_data_received;
+  engine_callbacks.bus_error_message = testDownloadErrorMessageCallback;
+
+  gst_test_http_src_install_callbacks (&http_src_callbacks, &hlsTestCase);
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
+      "http://unit.test/master.m3u8", &engine_callbacks, engineTestData);
+
+  TESTCASE_UNREF_BOILERPLATE;
+}
+
+GST_END_TEST;
+
+/* work-around that adaptivedemux is not posting an error message
+   about failure to download a fragment */
+static void
+missing_message_eos_callback (GstAdaptiveDemuxTestEngine * engine,
+    GstAdaptiveDemuxTestOutputStream * stream, gpointer user_data)
+{
+  GstAdaptiveDemuxTestCase *testData = GST_ADAPTIVE_DEMUX_TEST_CASE (user_data);
+  GstAdaptiveDemuxTestExpectedOutput *testOutputStreamData;
+
+  fail_unless (stream != NULL);
+  testOutputStreamData =
+      gst_adaptive_demux_test_find_test_data_by_stream (testData, stream, NULL);
+  fail_unless (testOutputStreamData != NULL);
+  /* expect to receive less than file size */
+  fail_unless (stream->total_received_size <
+      testOutputStreamData->expected_size,
+      "size validation failed for %s, expected < %d received %d",
+      testOutputStreamData->name, testOutputStreamData->expected_size,
+      stream->total_received_size);
+  testData->count_of_finished_streams++;
+  GST_DEBUG ("EOS callback %d %d",
+      testData->count_of_finished_streams,
+      g_list_length (testData->output_streams));
+  if (testData->count_of_finished_streams ==
+      g_list_length (testData->output_streams)) {
+    g_main_loop_quit (engine->loop);
+  }
+}
+
+
+/*
+ * Test fragment download error
+ * Let the adaptive demux download a few bytes, then instruct the
+ * test soup http src element to generate an error.
+ */
+GST_START_TEST (testFragmentDownloadError)
+{
+  const guint segment_size = 30 * TS_PACKET_LEN;
+  const gchar *master_playlist =
+      "#EXTM3U\n"
+      "#EXT-X-VERSION:4\n"
+      "#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=1251135, CODECS=\"avc1.42001f mp4a.40.2\", RESOLUTION=640x352\n"
+      "1200.m3u8\n";
+  const gchar *media_playlist =
+      "#EXTM3U \n"
+      "#EXT-X-VERSION:4\n"
+      "#EXT-X-TARGETDURATION:1\n"
+      "#EXTINF:1,Test\n" "001.ts\n"
+      "#EXTINF:1,Test\n" "002.ts\n" "#EXT-X-ENDLIST\n";
+  GstHlsDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/master.m3u8", (guint8 *) master_playlist, 0},
+    {"http://unit.test/1200.m3u8", (guint8 *) media_playlist, 0},
+    {"http://unit.test/001.ts", NULL, segment_size},
+    {"http://unit.test/002.ts", NULL, segment_size},
+    {NULL, NULL, 0}
+  };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    {"src_0", 2 * segment_size, NULL},
+    {NULL, 0, NULL}
+  };
+  const guint64 failure_position = 2048;
+  TESTCASE_INIT_BOILERPLATE (segment_size);
+
+  http_src_callbacks.src_start = gst_hlsdemux_test_src_start;
+  http_src_callbacks.src_create = gst_hlsdemux_test_network_error_src_create;
+  gst_structure_set (hlsTestCase.state,
+      "failure-suffix", G_TYPE_STRING, "001.ts",
+      "failure-position", G_TYPE_UINT64, failure_position, NULL);
+  engine_callbacks.appsink_received_data =
+      gst_adaptive_demux_test_check_received_data;
+  engine_callbacks.appsink_eos = missing_message_eos_callback;
+  engine_callbacks.bus_error_message = testDownloadErrorMessageCallback;
+
+  gst_test_http_src_install_callbacks (&http_src_callbacks, &hlsTestCase);
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
+      inputTestData[0].uri, &engine_callbacks, engineTestData);
+
+  TESTCASE_UNREF_BOILERPLATE;
+}
+
+GST_END_TEST;
+
+static Suite *
+hls_demux_suite (void)
+{
+  Suite *s = suite_create ("hls_demux");
+  TCase *tc_basicTest = tcase_create ("basicTest");
+
+  tcase_add_test (tc_basicTest, simpleTest);
+  tcase_add_test (tc_basicTest, testMasterPlaylist);
+  tcase_add_test (tc_basicTest, testMediaPlaylistNotFound);
+  tcase_add_test (tc_basicTest, testFragmentNotFound);
+  tcase_add_test (tc_basicTest, testFragmentDownloadError);
+  tcase_add_test (tc_basicTest, testSeek);
+  tcase_add_test (tc_basicTest, testSeekKeyUnitPosition);
+  tcase_add_test (tc_basicTest, testSeekPosition);
+  tcase_add_test (tc_basicTest, testSeekUpdateStopPosition);
+  tcase_add_test (tc_basicTest, testSeekSnapBeforePosition);
+  tcase_add_test (tc_basicTest, testSeekSnapAfterPosition);
+  tcase_add_test (tc_basicTest, testReverseSeekSnapBeforePosition);
+  tcase_add_test (tc_basicTest, testReverseSeekSnapAfterPosition);
+
+  tcase_add_unchecked_fixture (tc_basicTest, gst_adaptive_demux_test_setup,
+      gst_adaptive_demux_test_teardown);
+
+  suite_add_tcase (s, tc_basicTest);
+
+  return s;
+}
+
+GST_CHECK_MAIN (hls_demux);
diff --git a/tests/check/elements/mpg123audiodec.c b/tests/check/elements/mpg123audiodec.c
deleted file mode 100644
index 20d6e77..0000000
--- a/tests/check/elements/mpg123audiodec.c
+++ /dev/null
@@ -1,534 +0,0 @@
-/* GStreamer
- *
- * unit test for mpg123audiodec
- *
- * Copyright (c) 2012 Carlos Rafael Giani <dv@pseudoterminal.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <unistd.h>
-
-#include <gst/check/gstcheck.h>
-#include <gst/audio/audio.h>
-
-#include <gst/fft/gstfft.h>
-#include <gst/fft/gstffts16.h>
-#include <gst/fft/gstffts32.h>
-#include <gst/fft/gstfftf32.h>
-#include <gst/fft/gstfftf64.h>
-
-#include <gst/app/gstappsink.h>
-
-/* For ease of programming we use globals to keep refs for our floating
- * src and sink pads we create; otherwise we always have to do get_pad,
- * get_peer, and then remove references in every test function */
-static GstPad *mysrcpad, *mysinkpad;
-
-
-#define MP2_STREAM_FILENAME "stream.mp2"
-#define MP3_CBR_STREAM_FILENAME "cbr_stream.mp3"
-#define MP3_VBR_STREAM_FILENAME "vbr_stream.mp3"
-
-
-/* mpeg 1 layer 2 stream created with:
- * gst-launch-1.0 -v audiotestsrc wave=sine freq=440 volume=1 num-buffers=32 ! \
- *   "audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1" ! \
- *   avenc_mp2 bitrate=32000 ! tee name=t \
- *   t. ! queue ! fakesink silent=false \
- *   t. ! queue ! filesink location=test.mp2
- *
- * mpeg 1 layer 3 CBR stream created with:
- * gst-launch-1.0 -v audiotestsrc wave=sine freq=440 volume=1 num-buffers=32 ! \
- *   "audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1" ! \
- *   lamemp3enc encoding-engine-quality=high cbr=true target=bitrate bitrate=32 ! \
- *   "audio/mpeg, rate=(int)44100, channels=(int)1" ! tee name=t \
- *   t. ! queue ! fakesink silent=false \
- *   t. ! queue ! filesink location=test.mp3
- *
- * mpeg 1 layer 3 VBR stream created with:
- * gst-launch-1.0 -v audiotestsrc wave=sine freq=440 volume=1 num-buffers=32 ! \
- *   "audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int)44100, channels=(int)1" ! \
- *   lamemp3enc encoding-engine-quality=high cbr=false target=quality quality=7 ! \
- *   "audio/mpeg, rate=(int)44100, channels=(int)1" ! tee name=t \
- *   t. ! queue ! fakesink silent=false \
- *   t. ! queue ! filesink location=test.mp3
- */
-
-
-/* FFT test helpers taken from gst-plugins-base tests/check/audioresample.c */
-
-#define FFT_HELPERS(type,ffttag,ffttag2,scale)                                \
-static gdouble magnitude##ffttag (const GstFFT##ffttag##Complex *c)           \
-{                                                                             \
-  gdouble mag = (gdouble) c->r * (gdouble) c->r;                              \
-  mag += (gdouble) c->i * (gdouble) c->i;                                     \
-  mag /= scale * scale;                                                       \
-  mag = 10.0 * log10 (mag);                                                   \
-  return mag;                                                                 \
-}                                                                             \
-static gdouble find_main_frequency_spot_##ffttag (                            \
-    const GstFFT##ffttag##Complex *v, int elements)                           \
-{                                                                             \
-  int i;                                                                      \
-  gdouble maxmag = -9999;                                                     \
-  int maxidx = 0;                                                             \
-  for (i=0; i<elements; ++i) {                                                \
-    gdouble mag = magnitude##ffttag (v+i);                                    \
-    if (mag > maxmag) {                                                       \
-      maxmag = mag;                                                           \
-      maxidx = i;                                                             \
-    }                                                                         \
-  }                                                                           \
-  return maxidx / (gdouble) elements;                                         \
-}                                                                             \
-static gboolean is_zero_except_##ffttag (const GstFFT##ffttag##Complex *v,    \
-    int elements, gdouble spot)                                               \
-{                                                                             \
-  int i;                                                                      \
-  for (i=0; i<elements; ++i) {                                                \
-    gdouble pos = i / (gdouble) elements;                                     \
-    gdouble mag = magnitude##ffttag (v+i);                                    \
-    if (fabs (pos - spot) > 0.01) {                                           \
-      if (mag > -35.0) {                                                      \
-        GST_LOG("Found magnitude at %f : %f (peak at %f)\n", pos, mag, spot); \
-        return FALSE;                                                         \
-      }                                                                       \
-    }                                                                         \
-  }                                                                           \
-  return TRUE;                                                                \
-}                                                                             \
-static void check_main_frequency_spot_##ffttag (GstBuffer *buffer, gdouble    \
-    expected_spot)                                                            \
-{                                                                             \
-  GstMapInfo map;                                                             \
-  int num_samples;                                                            \
-  gdouble actual_spot;                                                        \
-  GstFFT##ffttag *ctx;                                                        \
-  GstFFT##ffttag##Complex *fftdata;                                           \
-                                                                              \
-  gst_buffer_map (buffer, &map, GST_MAP_READ);                                \
-                                                                              \
-  num_samples = map.size / sizeof(type) & ~1;                                 \
-  ctx = gst_fft_##ffttag2##_new (num_samples, FALSE);                         \
-  fftdata = g_new (GstFFT##ffttag##Complex, num_samples / 2 + 1);             \
-                                                                              \
-  gst_fft_##ffttag2##_window (ctx, (type*)map.data,                           \
-    GST_FFT_WINDOW_HAMMING);                                                  \
-  gst_fft_##ffttag2##_fft (ctx, (type*)map.data, fftdata);                    \
-                                                                              \
-  actual_spot = find_main_frequency_spot_##ffttag (fftdata,                   \
-    num_samples / 2 + 1);                                                     \
-  GST_LOG ("Expected spot: %.3f actual: %.3f %f", expected_spot, actual_spot, \
-    fabs (expected_spot - actual_spot));                                      \
-  fail_unless (fabs (expected_spot - actual_spot) < 0.05,                     \
-    "Actual main frequency spot is too far away from expected one");          \
-  fail_unless (is_zero_except_##ffttag (fftdata, num_samples / 2 + 1,         \
-    actual_spot), "One secondary peak in spectrum exceeds threshold");        \
-                                                                              \
-  gst_buffer_unmap (buffer, &map);                                            \
-                                                                              \
-  gst_fft_##ffttag2##_free (ctx);                                             \
-  g_free (fftdata);                                                           \
-}
-FFT_HELPERS (gint32, S32, s32, 2147483647.0);
-
-
-static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
-    GST_PAD_SINK,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS ("audio/x-raw, format = (string) " GST_AUDIO_NE (S32))
-    );
-static GstStaticPadTemplate layer2_srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
-    GST_PAD_SRC,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS_ANY);
-static GstStaticPadTemplate layer3_srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
-    GST_PAD_SRC,
-    GST_PAD_ALWAYS,
-    GST_STATIC_CAPS_ANY);
-
-
-static void
-setup_input_pipeline (gchar const *stream_filename, GstElement ** pipeline,
-    GstElement ** appsink)
-{
-  GstElement *source, *parser;
-
-  *pipeline = gst_pipeline_new (NULL);
-  source = gst_element_factory_make ("filesrc", NULL);
-  parser = gst_element_factory_make ("mpegaudioparse", NULL);
-  *appsink = gst_element_factory_make ("appsink", NULL);
-
-  gst_bin_add_many (GST_BIN (*pipeline), source, parser, *appsink, NULL);
-  gst_element_link_many (source, parser, *appsink, NULL);
-
-  {
-    char *full_filename =
-        g_build_filename (GST_TEST_FILES_PATH, stream_filename, NULL);
-    g_object_set (G_OBJECT (source), "location", full_filename, NULL);
-    g_free (full_filename);
-  }
-
-  gst_element_set_state (*pipeline, GST_STATE_PLAYING);
-}
-
-static void
-cleanup_input_pipeline (GstElement * pipeline)
-{
-  gst_element_set_state (pipeline, GST_STATE_NULL);
-  gst_object_unref (pipeline);
-}
-
-static GstElement *
-setup_mpeg1layer2dec (void)
-{
-  GstElement *mpg123audiodec;
-  GstCaps *caps;
-
-  GST_DEBUG ("setup_mpeg1layer2dec");
-  mpg123audiodec = gst_check_setup_element ("mpg123audiodec");
-  mysrcpad = gst_check_setup_src_pad (mpg123audiodec, &layer2_srctemplate);
-  mysinkpad = gst_check_setup_sink_pad (mpg123audiodec, &sinktemplate);
-  gst_pad_set_active (mysrcpad, TRUE);
-  gst_pad_set_active (mysinkpad, TRUE);
-
-  /* This is necessary to trigger a set_format call in the decoder;
-   * fixed caps don't trigger it */
-  caps = gst_caps_new_simple ("audio/mpeg",
-      "mpegversion", G_TYPE_INT, 1,
-      "layer", G_TYPE_INT, 2,
-      "rate", G_TYPE_INT, 44100,
-      "channels", G_TYPE_INT, 1, "parsed", G_TYPE_BOOLEAN, TRUE, NULL);
-  gst_check_setup_events (mysrcpad, mpg123audiodec, caps, GST_FORMAT_TIME);
-  gst_caps_unref (caps);
-
-  return mpg123audiodec;
-}
-
-static GstElement *
-setup_mpeg1layer3dec (void)
-{
-  GstElement *mpg123audiodec;
-  GstCaps *caps;
-
-  GST_DEBUG ("setup_mpeg1layer3dec");
-  mpg123audiodec = gst_check_setup_element ("mpg123audiodec");
-  mysrcpad = gst_check_setup_src_pad (mpg123audiodec, &layer3_srctemplate);
-  mysinkpad = gst_check_setup_sink_pad (mpg123audiodec, &sinktemplate);
-  gst_pad_set_active (mysrcpad, TRUE);
-  gst_pad_set_active (mysinkpad, TRUE);
-
-  /* This is necessary to trigger a set_format call in the decoder;
-   * fixed caps don't trigger it */
-  caps = gst_caps_new_simple ("audio/mpeg",
-      "mpegversion", G_TYPE_INT, 1,
-      "layer", G_TYPE_INT, 3,
-      "rate", G_TYPE_INT, 44100,
-      "channels", G_TYPE_INT, 1, "parsed", G_TYPE_BOOLEAN, TRUE, NULL);
-  gst_check_setup_events (mysrcpad, mpg123audiodec, caps, GST_FORMAT_TIME);
-  gst_caps_unref (caps);
-
-  return mpg123audiodec;
-}
-
-static void
-cleanup_mpg123audiodec (GstElement * mpg123audiodec)
-{
-  GST_DEBUG ("cleanup_mpeg1layer2dec");
-  gst_element_set_state (mpg123audiodec, GST_STATE_NULL);
-
-  gst_pad_set_active (mysrcpad, FALSE);
-  gst_pad_set_active (mysinkpad, FALSE);
-  gst_check_teardown_src_pad (mpg123audiodec);
-  gst_check_teardown_sink_pad (mpg123audiodec);
-  gst_check_teardown_element (mpg123audiodec);
-}
-
-static void
-run_decoding_test (GstElement * mpg123audiodec, gchar const *filename)
-{
-  GstBus *bus;
-  unsigned int num_input_buffers, num_decoded_buffers;
-  gint expected_size;
-  GstCaps *out_caps, *caps;
-  GstAudioInfo audioinfo;
-  GstElement *input_pipeline, *input_appsink;
-  int i;
-  GstBuffer *outbuffer;
-
-  /* 440 Hz = frequency of sine wave in audio data
-   * 44100 Hz = sample rate
-   * (44100 / 2) Hz = Nyquist frequency */
-  static double const expected_frequency_spot = 440.0 / (44100.0 / 2.0);
-
-  fail_unless (gst_element_set_state (mpg123audiodec,
-          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
-      "could not set to playing");
-  bus = gst_bus_new ();
-
-  gst_element_set_bus (mpg123audiodec, bus);
-
-  setup_input_pipeline (filename, &input_pipeline, &input_appsink);
-
-  num_input_buffers = 0;
-  while (TRUE) {
-    GstSample *sample;
-    GstBuffer *input_buffer;
-
-    sample = gst_app_sink_pull_sample (GST_APP_SINK (input_appsink));
-    if (sample == NULL)
-      break;
-
-    fail_unless (GST_IS_SAMPLE (sample));
-
-    input_buffer = gst_sample_get_buffer (sample);
-    fail_if (input_buffer == NULL);
-
-    /* This is done to be on the safe side - docs say lifetime of the input buffer
-     * depends *solely* on the sample */
-    input_buffer = gst_buffer_copy (input_buffer);
-
-    fail_unless_equals_int (gst_pad_push (mysrcpad, input_buffer), GST_FLOW_OK);
-
-    ++num_input_buffers;
-
-    gst_sample_unref (sample);
-  }
-
-  num_decoded_buffers = g_list_length (buffers);
-
-  /* check number of decoded buffers */
-  fail_unless_equals_int (num_decoded_buffers, num_input_buffers - 2);
-
-  caps = gst_pad_get_current_caps (mysinkpad);
-  GST_LOG ("output caps %" GST_PTR_FORMAT, caps);
-  fail_unless (gst_audio_info_from_caps (&audioinfo, caps),
-      "Getting audio info from caps failed");
-
-  /* check caps */
-  out_caps = gst_caps_new_simple ("audio/x-raw",
-      "format", G_TYPE_STRING, GST_AUDIO_NE (S32),
-      "layout", G_TYPE_STRING, "interleaved",
-      "rate", G_TYPE_INT, 44100, "channels", G_TYPE_INT, 1, NULL);
-
-  fail_unless (gst_caps_is_equal_fixed (caps, out_caps), "Incorrect out caps");
-
-  gst_caps_unref (out_caps);
-  gst_caps_unref (caps);
-
-  /* here, test if decoded data is a sine tone, and if the sine frequency is at the
-   * right spot in the spectrum */
-  for (i = 0; i < num_decoded_buffers; ++i) {
-    outbuffer = GST_BUFFER (buffers->data);
-    fail_if (outbuffer == NULL, "Invalid buffer retrieved");
-
-    /* MPEG 1 layer 2 uses 1152 samples per frame */
-    expected_size = 1152 * GST_AUDIO_INFO_BPF (&audioinfo);
-    fail_unless_equals_int (gst_buffer_get_size (outbuffer), expected_size);
-
-    check_main_frequency_spot_S32 (outbuffer, expected_frequency_spot);
-
-    buffers = g_list_remove (buffers, outbuffer);
-    gst_buffer_unref (outbuffer);
-    outbuffer = NULL;
-  }
-
-  g_list_free (buffers);
-  buffers = NULL;
-
-  cleanup_input_pipeline (input_pipeline);
-  gst_bus_set_flushing (bus, TRUE);
-  gst_element_set_bus (mpg123audiodec, NULL);
-  gst_object_unref (GST_OBJECT (bus));
-}
-
-
-GST_START_TEST (test_decode_mpeg1layer2)
-{
-  GstElement *mpg123audiodec;
-  mpg123audiodec = setup_mpeg1layer2dec ();
-  run_decoding_test (mpg123audiodec, MP2_STREAM_FILENAME);
-  cleanup_mpg123audiodec (mpg123audiodec);
-  mpg123audiodec = NULL;
-}
-
-GST_END_TEST;
-
-
-GST_START_TEST (test_decode_mpeg1layer3_cbr)
-{
-  GstElement *mpg123audiodec;
-  mpg123audiodec = setup_mpeg1layer3dec ();
-  run_decoding_test (mpg123audiodec, MP3_CBR_STREAM_FILENAME);
-  cleanup_mpg123audiodec (mpg123audiodec);
-}
-
-GST_END_TEST;
-
-
-GST_START_TEST (test_decode_mpeg1layer3_vbr)
-{
-  GstElement *mpg123audiodec;
-  mpg123audiodec = setup_mpeg1layer3dec ();
-  run_decoding_test (mpg123audiodec, MP3_VBR_STREAM_FILENAME);
-  cleanup_mpg123audiodec (mpg123audiodec);
-}
-
-GST_END_TEST;
-
-
-GST_START_TEST (test_decode_garbage_mpeg1layer2)
-{
-  GstElement *mpg123audiodec;
-  GstBuffer *inbuffer;
-  GstBus *bus;
-  int i, num_buffers;
-  guint32 *tmpbuf;
-
-  mpg123audiodec = setup_mpeg1layer2dec ();
-
-  fail_unless (gst_element_set_state (mpg123audiodec,
-          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
-      "could not set to playing");
-  bus = gst_bus_new ();
-
-  /* initialize the buffer with something that is no mpeg2 */
-  tmpbuf = g_new (guint32, 4096);
-  for (i = 0; i < 4096; i++) {
-    tmpbuf[i] = i;
-  }
-  inbuffer = gst_buffer_new_wrapped (tmpbuf, 4096 * sizeof (guint32));
-
-  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
-
-  gst_element_set_bus (mpg123audiodec, bus);
-
-  /* should be possible to push without problems but nothing gets decoded */
-  fail_unless_equals_int (gst_pad_push (mysrcpad, inbuffer), GST_FLOW_OK);
-
-  num_buffers = g_list_length (buffers);
-
-  /* should be 0 buffers as decoding should've been impossible */
-  fail_unless_equals_int (num_buffers, 0);
-
-  g_list_free (buffers);
-  buffers = NULL;
-
-  gst_bus_set_flushing (bus, TRUE);
-  gst_element_set_bus (mpg123audiodec, NULL);
-  gst_object_unref (GST_OBJECT (bus));
-  cleanup_mpg123audiodec (mpg123audiodec);
-  mpg123audiodec = NULL;
-}
-
-GST_END_TEST;
-
-
-GST_START_TEST (test_decode_garbage_mpeg1layer3)
-{
-  GstElement *mpg123audiodec;
-  GstBuffer *inbuffer;
-  GstBus *bus;
-  int i, num_buffers;
-  guint32 *tmpbuf;
-
-  mpg123audiodec = setup_mpeg1layer3dec ();
-
-  fail_unless (gst_element_set_state (mpg123audiodec,
-          GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS,
-      "could not set to playing");
-  bus = gst_bus_new ();
-
-  /* initialize the buffer with something that is no mpeg2 */
-  tmpbuf = g_new (guint32, 4096);
-  for (i = 0; i < 4096; i++) {
-    tmpbuf[i] = i;
-  }
-  inbuffer = gst_buffer_new_wrapped (tmpbuf, 4096 * sizeof (guint32));
-
-  ASSERT_BUFFER_REFCOUNT (inbuffer, "inbuffer", 1);
-
-  gst_element_set_bus (mpg123audiodec, bus);
-
-  /* should be possible to push without problems but nothing gets decoded */
-  fail_unless_equals_int (gst_pad_push (mysrcpad, inbuffer), GST_FLOW_OK);
-
-  num_buffers = g_list_length (buffers);
-
-  /* should be 0 buffers as decoding should've been impossible */
-  fail_unless_equals_int (num_buffers, 0);
-
-  g_list_free (buffers);
-  buffers = NULL;
-
-  gst_bus_set_flushing (bus, TRUE);
-  gst_element_set_bus (mpg123audiodec, NULL);
-  gst_object_unref (GST_OBJECT (bus));
-  cleanup_mpg123audiodec (mpg123audiodec);
-  mpg123audiodec = NULL;
-}
-
-GST_END_TEST;
-
-
-static gboolean
-is_test_file_available (gchar const *filename)
-{
-  gboolean ret;
-  gchar *full_filename;
-  gchar *cwd;
-
-  cwd = g_get_current_dir ();
-  full_filename = g_build_filename (cwd, GST_TEST_FILES_PATH, filename, NULL);
-  ret =
-      g_file_test (full_filename, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS);
-  g_free (full_filename);
-  g_free (cwd);
-  return ret;
-}
-
-static Suite *
-mpg123audiodec_suite (void)
-{
-  GstRegistry *registry;
-  Suite *s = suite_create ("mpg123audiodec");
-  TCase *tc_chain = tcase_create ("general");
-
-  registry = gst_registry_get ();
-
-  suite_add_tcase (s, tc_chain);
-  if (gst_registry_check_feature_version (registry, "filesrc",
-          GST_VERSION_MAJOR, GST_VERSION_MINOR, 0) &&
-      gst_registry_check_feature_version (registry, "mpegaudioparse",
-          GST_VERSION_MAJOR, GST_VERSION_MINOR, 0) &&
-      gst_registry_check_feature_version (registry, "appsrc",
-          GST_VERSION_MAJOR, GST_VERSION_MINOR, 0)) {
-    if (is_test_file_available (MP2_STREAM_FILENAME))
-      tcase_add_test (tc_chain, test_decode_mpeg1layer2);
-    if (is_test_file_available (MP3_CBR_STREAM_FILENAME))
-      tcase_add_test (tc_chain, test_decode_mpeg1layer3_cbr);
-    if (is_test_file_available (MP3_VBR_STREAM_FILENAME))
-      tcase_add_test (tc_chain, test_decode_mpeg1layer3_vbr);
-  }
-  tcase_add_test (tc_chain, test_decode_garbage_mpeg1layer2);
-  tcase_add_test (tc_chain, test_decode_garbage_mpeg1layer3);
-
-  return s;
-}
-
-
-GST_CHECK_MAIN (mpg123audiodec)
diff --git a/tests/check/elements/mssdemux.c b/tests/check/elements/mssdemux.c
new file mode 100644
index 0000000..78a1863
--- /dev/null
+++ b/tests/check/elements/mssdemux.c
@@ -0,0 +1,632 @@
+/* GStreamer unit test for MSS
+ *
+ * Copyright (C) 2016 Samsung Electronics. All rights reserved.
+ *   Author: Thiago Santos <thiagoss@osg.samsung.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <gst/check/gstcheck.h>
+#include "adaptive_demux_common.h"
+
+#define DEMUX_ELEMENT_NAME "mssdemux"
+
+#define COPY_OUTPUT_TEST_DATA(outputTestData,testData) do { \
+    guint otdPos, otdLen = sizeof((outputTestData)) / sizeof((outputTestData)[0]); \
+    for(otdPos=0; otdPos<otdLen; ++otdPos){ \
+  (testData)->output_streams = g_list_append ((testData)->output_streams, &(outputTestData)[otdPos]); \
+    } \
+  } while(0)
+
+typedef struct _GstMssDemuxTestInputData
+{
+  const gchar *uri;
+  const guint8 *payload;
+  guint64 size;
+} GstMssDemuxTestInputData;
+
+static gboolean
+gst_mssdemux_http_src_start (GstTestHTTPSrc * src,
+    const gchar * uri, GstTestHTTPSrcInput * input_data, gpointer user_data)
+{
+  const GstMssDemuxTestInputData *input =
+      (const GstMssDemuxTestInputData *) user_data;
+
+
+  for (guint i = 0; input[i].uri; ++i) {
+    if (strcmp (input[i].uri, uri) == 0) {
+      input_data->context = (gpointer) & input[i];
+      input_data->size = input[i].size;
+      if (input[i].size == 0)
+        input_data->size = strlen ((gchar *) input[i].payload);
+      return TRUE;
+    }
+  }
+
+  return FALSE;
+}
+
+static GstFlowReturn
+gst_mssdemux_http_src_create (GstTestHTTPSrc * src,
+    guint64 offset,
+    guint length, GstBuffer ** retbuf, gpointer context, gpointer user_data)
+{
+  /*  const GstMssDemuxTestInputData *input =
+     (const GstMssDemuxTestInputData *) user_data; */
+  const GstMssDemuxTestInputData *input =
+      (const GstMssDemuxTestInputData *) context;
+  GstBuffer *buf;
+
+  buf = gst_buffer_new_allocate (NULL, length, NULL);
+  fail_if (buf == NULL, "Not enough memory to allocate buffer");
+
+  if (input->payload) {
+    gst_buffer_fill (buf, 0, input->payload + offset, length);
+  } else {
+    GstMapInfo info;
+    guint pattern;
+
+    pattern = offset - offset % sizeof (pattern);
+
+    gst_buffer_map (buf, &info, GST_MAP_WRITE);
+    for (guint64 i = 0; i < length; ++i) {
+      gchar pattern_byte_to_write = (offset + i) % sizeof (pattern);
+      if (pattern_byte_to_write == 0) {
+        pattern = offset + i;
+      }
+      info.data[i] = (pattern >> (pattern_byte_to_write * 8)) & 0xFF;
+    }
+    gst_buffer_unmap (buf, &info);
+  }
+  *retbuf = buf;
+  return GST_FLOW_OK;
+}
+
+/******************** Test specific code starts here **************************/
+
+/*
+ * Test an mpd with an audio and a video stream
+ *
+ */
+GST_START_TEST (simpleTest)
+{
+  const gchar *mpd =
+      "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+      "<SmoothStreamingMedia MajorVersion=\"2\" MinorVersion=\"0\" Duration=\"40000000\">"
+      "<StreamIndex Type=\"video\" QualityLevels=\"1\" Chunks=\"1\" Url=\"QualityLevels({bitrate})/Fragments(video={start time})\">"
+      "<QualityLevel Index=\"0\" Bitrate=\"480111\" FourCC=\"H264\" MaxWidth=\"1024\" MaxHeight=\"436\" CodecPrivateData=\"000\" />"
+      "<c n=\"0\" d=\"10000000\" />"
+      "<c n=\"1\" d=\"10000000\" />"
+      "<c n=\"2\" d=\"10000000\" />"
+      "<c n=\"3\" d=\"10000000\" />"
+      "</StreamIndex>"
+      "<StreamIndex Type=\"audio\" Language=\"eng\" QualityLevels=\"1\" Chunks=\"1\" Url=\"QualityLevels({bitrate})/Fragments(audio_eng={start time})\">"
+      "<QualityLevel Index=\"0\" Bitrate=\"200029\" FourCC=\"AACL\" SamplingRate=\"48000\" Channels=\"2\" BitsPerSample=\"16\" PacketSize=\"4\" AudioTag=\"255\" CodecPrivateData=\"1190\" />"
+      "<c n=\"0\" d=\"40000000\" />" "</StreamIndex>" "</SmoothStreamingMedia>";
+
+  GstMssDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/Manifest", (guint8 *) mpd, 0},
+    {"http://unit.test/QualityLevels(480111)/Fragments(video=0)", NULL, 9000},
+    {"http://unit.test/QualityLevels(480111)/Fragments(video=10000000)", NULL,
+        9000},
+    {"http://unit.test/QualityLevels(480111)/Fragments(video=20000000)", NULL,
+        9000},
+    {"http://unit.test/QualityLevels(480111)/Fragments(video=30000000)", NULL,
+        9000},
+    {"http://unit.test/QualityLevels(200029)/Fragments(audio_eng=0)", NULL,
+        5000},
+    {NULL, NULL, 0},
+  };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    {"audio_00", 5000, NULL},
+    {"video_00", 4 * 9000, NULL}
+  };
+  GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
+  GstAdaptiveDemuxTestCase *testData;
+
+  testData = gst_adaptive_demux_test_case_new ();
+  http_src_callbacks.src_start = gst_mssdemux_http_src_start;
+  http_src_callbacks.src_create = gst_mssdemux_http_src_create;
+  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+  test_callbacks.appsink_received_data =
+      gst_adaptive_demux_test_check_received_data;
+  test_callbacks.appsink_eos =
+      gst_adaptive_demux_test_check_size_of_received_data;
+
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/Manifest",
+      &test_callbacks, testData);
+  g_object_unref (testData);
+}
+
+GST_END_TEST;
+
+/*
+ * Test seeking
+ *
+ */
+GST_START_TEST (testSeek)
+{
+  const gchar *mpd =
+      "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+      "<SmoothStreamingMedia MajorVersion=\"2\" MinorVersion=\"0\" Duration=\"40000000\">"
+      "<StreamIndex Type=\"audio\" Language=\"eng\" QualityLevels=\"1\" Chunks=\"1\" Url=\"QualityLevels({bitrate})/Fragments(audio_eng={start time})\">"
+      "<QualityLevel Index=\"0\" Bitrate=\"200029\" FourCC=\"AACL\" SamplingRate=\"48000\" Channels=\"2\" BitsPerSample=\"16\" PacketSize=\"4\" AudioTag=\"255\" CodecPrivateData=\"1190\" />"
+      "<c n=\"0\" d=\"450346666\" />"
+      "</StreamIndex>" "</SmoothStreamingMedia>";
+  GstMssDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/Manifest", (guint8 *) mpd, 0},
+    {"http://unit.test/QualityLevels(200029)/Fragments(audio_eng=0)", NULL,
+        10000},
+    {NULL, NULL, 0},
+  };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    {"audio_00", 10000, NULL},
+  };
+  GstAdaptiveDemuxTestCase *testData;
+
+  testData = gst_adaptive_demux_test_case_new ();
+
+  http_src_callbacks.src_start = gst_mssdemux_http_src_start;
+  http_src_callbacks.src_create = gst_mssdemux_http_src_create;
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
+  /* media segment starts at 4687
+   * Issue a seek request after media segment has started to be downloaded
+   * on the first pad listed in GstAdaptiveDemuxTestOutputStreamData and the
+   * first chunk of at least one byte has already arrived in AppSink
+   */
+  testData->threshold_for_seek = 4687 + 1;
+
+  /* seek to 5ms.
+   * Because there is only one fragment, we expect the whole file to be
+   * downloaded again
+   */
+  testData->seek_event =
+      gst_event_new_seek (1.0, GST_FORMAT_TIME,
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT, GST_SEEK_TYPE_SET,
+      5 * GST_MSECOND, GST_SEEK_TYPE_NONE, 0);
+
+  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+  gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
+      "http://unit.test/Manifest", testData);
+  gst_object_unref (testData);
+}
+
+GST_END_TEST;
+
+
+static void
+run_seek_position_test (gdouble rate, GstSeekType start_type,
+    guint64 seek_start, GstSeekType stop_type, guint64 seek_stop,
+    GstSeekFlags flags, guint64 segment_start, guint64 segment_stop,
+    gint segments)
+{
+  const gchar *mpd =
+      "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+      "<SmoothStreamingMedia MajorVersion=\"2\" MinorVersion=\"0\" Duration=\"40000000\">"
+      "<StreamIndex Type=\"audio\" Language=\"eng\" QualityLevels=\"1\" Chunks=\"1\" Url=\"QualityLevels({bitrate})/Fragments(audio_eng={start time})\">"
+      "<QualityLevel Index=\"0\" Bitrate=\"200029\" FourCC=\"AACL\" SamplingRate=\"48000\" Channels=\"2\" BitsPerSample=\"16\" PacketSize=\"4\" AudioTag=\"255\" CodecPrivateData=\"1190\" />"
+      "<c n=\"0\" d=\"10000000\" />"
+      "<c n=\"1\" d=\"10000000\" />"
+      "<c n=\"2\" d=\"10000000\" />"
+      "<c n=\"3\" d=\"10000000\" />" "</StreamIndex>" "</SmoothStreamingMedia>";
+  GstMssDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/Manifest", (guint8 *) mpd, 0},
+    {"http://unit.test/QualityLevels(200029)/Fragments(audio_eng=0)", NULL,
+        10000},
+    {"http://unit.test/QualityLevels(200029)/Fragments(audio_eng=10000000)",
+        NULL, 10000},
+    {"http://unit.test/QualityLevels(200029)/Fragments(audio_eng=20000000)",
+        NULL, 10000},
+    {"http://unit.test/QualityLevels(200029)/Fragments(audio_eng=30000000)",
+        NULL, 10000},
+    {NULL, NULL, 0},
+  };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    /* 1 from the init segment */
+    {"audio_00", segments * 10000, NULL},
+  };
+  GstAdaptiveDemuxTestCase *testData;
+
+  testData = gst_adaptive_demux_test_case_new ();
+
+  http_src_callbacks.src_start = gst_mssdemux_http_src_start;
+  http_src_callbacks.src_create = gst_mssdemux_http_src_create;
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
+  /* media segment starts at 4687
+   * Issue a seek request after media segment has started to be downloaded
+   * on the first pad listed in GstAdaptiveDemuxTestOutputStreamData and the
+   * first chunk of at least one byte has already arrived in AppSink
+   */
+  testData->threshold_for_seek = 4687 + 1;
+
+  /* FIXME hack to avoid having a 0 seqnum */
+  gst_util_seqnum_next ();
+
+  /* seek to 5ms.
+   * Because there is only one fragment, we expect the whole file to be
+   * downloaded again
+   */
+  testData->seek_event =
+      gst_event_new_seek (rate, GST_FORMAT_TIME, flags, start_type,
+      seek_start, stop_type, seek_stop);
+
+  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+  gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
+      "http://unit.test/Manifest", testData);
+  gst_object_unref (testData);
+}
+
+GST_START_TEST (testSeekKeyUnitPosition)
+{
+  /* Seek to 1.5s with key unit, it should go back to 1.0s. 3 segments will be
+   * pushed */
+  run_seek_position_test (1.0, GST_SEEK_TYPE_SET, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_NONE, 0, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT,
+      1000 * GST_MSECOND, -1, 3);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (testSeekUpdateStopPosition)
+{
+  run_seek_position_test (1.0, GST_SEEK_TYPE_NONE, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_SET, 3000 * GST_MSECOND, 0, 0, 3000 * GST_MSECOND, 3);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (testSeekPosition)
+{
+  /* Seek to 1.5s without key unit, it should keep the 1.5s, but still push
+   * from the 1st segment, so 3 segments will be
+   * pushed */
+  run_seek_position_test (1.0, GST_SEEK_TYPE_SET, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_NONE, 0, GST_SEEK_FLAG_FLUSH, 1500 * GST_MSECOND, -1, 3);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (testSeekSnapBeforePosition)
+{
+  /* Seek to 1.5s, snap before, it go to 1s */
+  run_seek_position_test (1.0, GST_SEEK_TYPE_SET, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_NONE, 0, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SNAP_BEFORE,
+      1000 * GST_MSECOND, -1, 3);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (testSeekSnapAfterPosition)
+{
+  /* Seek to 1.5s with snap after, it should move to 2s */
+  run_seek_position_test (1.0, GST_SEEK_TYPE_SET, 1500 * GST_MSECOND,
+      GST_SEEK_TYPE_NONE, 0, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SNAP_AFTER,
+      2000 * GST_MSECOND, -1, 2);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (testReverseSeekSnapBeforePosition)
+{
+  run_seek_position_test (-1.0, GST_SEEK_TYPE_SET, 1000 * GST_MSECOND,
+      GST_SEEK_TYPE_SET, 2500 * GST_MSECOND,
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SNAP_BEFORE, 1000 * GST_MSECOND,
+      3000 * GST_MSECOND, 2);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (testReverseSeekSnapAfterPosition)
+{
+  run_seek_position_test (-1.0, GST_SEEK_TYPE_SET, 1000 * GST_MSECOND,
+      GST_SEEK_TYPE_SET, 2500 * GST_MSECOND,
+      GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_SNAP_AFTER, 1000 * GST_MSECOND,
+      2000 * GST_MSECOND, 1);
+}
+
+GST_END_TEST;
+
+static void
+testDownloadErrorMessageCallback (GstAdaptiveDemuxTestEngine * engine,
+    GstMessage * msg, gpointer user_data)
+{
+  GError *err = NULL;
+  gchar *dbg_info = NULL;
+
+  fail_unless (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ERROR);
+  gst_message_parse_error (msg, &err, &dbg_info);
+  GST_DEBUG ("Error from element %s : %s\n",
+      GST_OBJECT_NAME (msg->src), err->message);
+  fail_unless_equals_string (GST_OBJECT_NAME (msg->src), DEMUX_ELEMENT_NAME);
+  /*GST_DEBUG ("dbg_info=%s\n", dbg_info); */
+  g_error_free (err);
+  g_free (dbg_info);
+  g_main_loop_quit (engine->loop);
+}
+
+/*
+ * Test error case of failing to download a segment
+ */
+GST_START_TEST (testDownloadError)
+{
+  const gchar *mpd =
+      "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+      "<SmoothStreamingMedia MajorVersion=\"2\" MinorVersion=\"0\" Duration=\"40000000\">"
+      "<StreamIndex Type=\"audio\" Language=\"eng\" QualityLevels=\"1\" Chunks=\"1\" Url=\"QualityLevels({bitrate})/Fragments(audio_eng={start time})\">"
+      "<QualityLevel Index=\"0\" Bitrate=\"200029\" FourCC=\"AACL\" SamplingRate=\"48000\" Channels=\"2\" BitsPerSample=\"16\" PacketSize=\"4\" AudioTag=\"255\" CodecPrivateData=\"1190\" />"
+      "<c n=\"0\" d=\"40000000\" />" "</StreamIndex>" "</SmoothStreamingMedia>";
+
+  GstMssDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/Manifest", (guint8 *) mpd, 0},
+    {NULL, NULL, 0},
+  };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    {"audio_00", 0, NULL},
+  };
+  GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
+  GstAdaptiveDemuxTestCase *testData;
+
+  testData = gst_adaptive_demux_test_case_new ();
+  http_src_callbacks.src_start = gst_mssdemux_http_src_start;
+  http_src_callbacks.src_create = gst_mssdemux_http_src_create;
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+  test_callbacks.appsink_received_data =
+      gst_adaptive_demux_test_check_received_data;
+  test_callbacks.bus_error_message = testDownloadErrorMessageCallback;
+  test_callbacks.appsink_eos =
+      gst_adaptive_demux_test_check_size_of_received_data;
+
+  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/Manifest",
+      &test_callbacks, testData);
+  gst_object_unref (testData);
+}
+
+GST_END_TEST;
+
+/* generate queries to adaptive demux */
+static gboolean
+testQueryCheckDataReceived (GstAdaptiveDemuxTestEngine * engine,
+    GstAdaptiveDemuxTestOutputStream * stream,
+    GstBuffer * buffer, gpointer user_data)
+{
+  GList *pads;
+  GstPad *pad;
+  GstQuery *query;
+  gboolean ret;
+  gint64 duration;
+  gboolean seekable;
+  gint64 segment_start;
+  gint64 segment_end;
+  gchar *uri;
+  gchar *redirect_uri;
+  gboolean redirect_permanent;
+
+  pads = GST_ELEMENT_PADS (stream->appsink);
+
+  /* AppSink should have only 1 pad */
+  fail_unless (pads != NULL);
+  fail_unless (g_list_length (pads) == 1);
+  pad = GST_PAD (pads->data);
+
+  query = gst_query_new_duration (GST_FORMAT_TIME);
+  ret = gst_pad_peer_query (pad, query);
+  fail_unless (ret == TRUE);
+  gst_query_parse_duration (query, NULL, &duration);
+  fail_unless (duration == GST_SECOND);
+  gst_query_unref (query);
+
+  query = gst_query_new_seeking (GST_FORMAT_TIME);
+  ret = gst_pad_peer_query (pad, query);
+  fail_unless (ret == TRUE);
+  gst_query_parse_seeking (query, NULL, &seekable, &segment_start,
+      &segment_end);
+  fail_unless (seekable == TRUE);
+  fail_unless (segment_start == 0);
+  fail_unless (segment_end == duration);
+  gst_query_unref (query);
+
+  query = gst_query_new_uri ();
+  ret = gst_pad_peer_query (pad, query);
+  fail_unless (ret == TRUE);
+  gst_query_parse_uri (query, &uri);
+  gst_query_parse_uri_redirection (query, &redirect_uri);
+  gst_query_parse_uri_redirection_permanent (query, &redirect_permanent);
+  fail_unless (strcmp (uri, "http://unit.test/Manifest") == 0);
+  /* adaptive demux does not reply with redirect information */
+  fail_unless (redirect_uri == NULL);
+  fail_unless (redirect_permanent == FALSE);
+  g_free (uri);
+  g_free (redirect_uri);
+  gst_query_unref (query);
+
+  return gst_adaptive_demux_test_check_received_data (engine,
+      stream, buffer, user_data);
+}
+
+/*
+ * Test queries
+ *
+ */
+GST_START_TEST (testQuery)
+{
+  const gchar *mpd =
+      "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+      "<SmoothStreamingMedia MajorVersion=\"2\" MinorVersion=\"0\" Duration=\"10000000\">"
+      "<StreamIndex Type=\"audio\" Language=\"eng\" QualityLevels=\"1\" Chunks=\"1\" Url=\"QualityLevels({bitrate})/Fragments(audio_eng={start time})\">"
+      "<QualityLevel Index=\"0\" Bitrate=\"200029\" FourCC=\"AACL\" SamplingRate=\"48000\" Channels=\"2\" BitsPerSample=\"16\" PacketSize=\"4\" AudioTag=\"255\" CodecPrivateData=\"1190\" />"
+      "<c n=\"0\" d=\"10000000\" />" "</StreamIndex>" "</SmoothStreamingMedia>";
+  GstMssDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/Manifest", (guint8 *) mpd, 0},
+    {"http://unit.test/QualityLevels(200029)/Fragments(audio_eng=0)", NULL,
+        5000},
+    {NULL, NULL, 0},
+  };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    {"audio_00", 5000, NULL},
+  };
+  GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
+  GstAdaptiveDemuxTestCase *testData;
+
+  testData = gst_adaptive_demux_test_case_new ();
+  http_src_callbacks.src_start = gst_mssdemux_http_src_start;
+  http_src_callbacks.src_create = gst_mssdemux_http_src_create;
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+  test_callbacks.appsink_received_data = testQueryCheckDataReceived;
+  test_callbacks.appsink_eos =
+      gst_adaptive_demux_test_check_size_of_received_data;
+
+  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
+      "http://unit.test/Manifest", &test_callbacks, testData);
+  gst_object_unref (testData);
+}
+
+GST_END_TEST;
+
+static GstFlowReturn
+test_fragment_download_error_src_create (GstTestHTTPSrc * src,
+    guint64 offset,
+    guint length, GstBuffer ** retbuf, gpointer context, gpointer user_data)
+{
+  const GstMssDemuxTestInputData *input =
+      (const GstMssDemuxTestInputData *) context;
+  fail_unless (input != NULL);
+  if (!g_str_has_suffix (input->uri, ".mpd") && offset > 2000) {
+    GST_DEBUG ("network_error %s %" G_GUINT64_FORMAT " @ %d",
+        input->uri, offset, 2000);
+    GST_ELEMENT_ERROR (src, RESOURCE, READ,
+        (("A network error occurred, or the server closed the connection unexpectedly.")), ("A network error occurred, or the server closed the connection unexpectedly."));
+    return GST_FLOW_ERROR;
+  }
+  return gst_mssdemux_http_src_create (src, offset, length, retbuf, context,
+      user_data);
+}
+
+/* function to check total size of data received by AppSink
+ * will be called when AppSink receives eos.
+ */
+static void
+testFragmentDownloadErrorCheckSizeOfDataReceived (GstAdaptiveDemuxTestEngine *
+    engine, GstAdaptiveDemuxTestOutputStream * stream, gpointer user_data)
+{
+  GstAdaptiveDemuxTestCase *testData = GST_ADAPTIVE_DEMUX_TEST_CASE (user_data);
+  GstAdaptiveDemuxTestExpectedOutput *testOutputStreamData;
+
+  testOutputStreamData =
+      gst_adaptive_demux_test_find_test_data_by_stream (testData, stream, NULL);
+  fail_unless (testOutputStreamData != NULL);
+
+  /* expect to receive more than 0 */
+  fail_unless (stream->total_received_size > 0,
+      "size validation failed for %s, expected > 0, received %d",
+      testOutputStreamData->name, stream->total_received_size);
+
+  /* expect to receive less than file size */
+  fail_unless (stream->total_received_size <
+      testOutputStreamData->expected_size,
+      "size validation failed for %s, expected < %d received %d",
+      testOutputStreamData->name, testOutputStreamData->expected_size,
+      stream->total_received_size);
+}
+
+/*
+ * Test fragment download error
+ * Let the adaptive demux download a few bytes, then instruct the
+ * GstTestHTTPSrc element to generate an error.
+ */
+GST_START_TEST (testFragmentDownloadError)
+{
+  const gchar *mpd =
+      "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+      "<SmoothStreamingMedia MajorVersion=\"2\" MinorVersion=\"0\" Duration=\"4000000\">"
+      "<StreamIndex Type=\"audio\" Language=\"eng\" QualityLevels=\"1\" Chunks=\"1\" Url=\"QualityLevels({bitrate})/Fragments(audio_eng={start time})\">"
+      "<QualityLevel Index=\"0\" Bitrate=\"200029\" FourCC=\"AACL\" SamplingRate=\"48000\" Channels=\"2\" BitsPerSample=\"16\" PacketSize=\"4\" AudioTag=\"255\" CodecPrivateData=\"1190\" />"
+      "<c n=\"0\" d=\"10000000\" />" "</StreamIndex>" "</SmoothStreamingMedia>";
+
+  GstMssDemuxTestInputData inputTestData[] = {
+    {"http://unit.test/Manifest", (guint8 *) mpd, 0},
+    {"http://unit.test/QualityLevels(200029)/Fragments(audio_eng=0)", NULL,
+        5000},
+    {NULL, NULL, 0},
+  };
+  GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+  GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+    {"audio_00", 5000, NULL},
+  };
+  GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
+  GstAdaptiveDemuxTestCase *testData;
+
+  testData = gst_adaptive_demux_test_case_new ();
+  http_src_callbacks.src_start = gst_mssdemux_http_src_start;
+  http_src_callbacks.src_create = test_fragment_download_error_src_create;
+  COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+  test_callbacks.appsink_received_data =
+      gst_adaptive_demux_test_check_received_data;
+  test_callbacks.appsink_eos = testFragmentDownloadErrorCheckSizeOfDataReceived;
+  /*  test_callbacks.demux_sent_eos = gst_adaptive_demux_test_check_size_of_received_data; */
+
+  test_callbacks.bus_error_message = testDownloadErrorMessageCallback;
+
+  gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+  gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
+      "http://unit.test/Manifest", &test_callbacks, testData);
+  gst_object_unref (testData);
+}
+
+GST_END_TEST;
+
+static Suite *
+mss_demux_suite (void)
+{
+  Suite *s = suite_create ("mss_demux");
+  TCase *tc_basicTest = tcase_create ("basicTest");
+
+  tcase_add_test (tc_basicTest, simpleTest);
+  tcase_add_test (tc_basicTest, testSeek);
+  tcase_add_test (tc_basicTest, testSeekKeyUnitPosition);
+  tcase_add_test (tc_basicTest, testSeekPosition);
+  tcase_add_test (tc_basicTest, testSeekUpdateStopPosition);
+  tcase_add_test (tc_basicTest, testSeekSnapBeforePosition);
+  tcase_add_test (tc_basicTest, testSeekSnapAfterPosition);
+  tcase_add_test (tc_basicTest, testReverseSeekSnapBeforePosition);
+  tcase_add_test (tc_basicTest, testReverseSeekSnapAfterPosition);
+  tcase_add_test (tc_basicTest, testDownloadError);
+  tcase_add_test (tc_basicTest, testFragmentDownloadError);
+  tcase_add_test (tc_basicTest, testQuery);
+
+  tcase_add_unchecked_fixture (tc_basicTest, gst_adaptive_demux_test_setup,
+      gst_adaptive_demux_test_teardown);
+
+  suite_add_tcase (s, tc_basicTest);
+
+  return s;
+}
+
+GST_CHECK_MAIN (mss_demux);
diff --git a/tests/check/elements/netsim.c b/tests/check/elements/netsim.c
new file mode 100644
index 0000000..1de026c
--- /dev/null
+++ b/tests/check/elements/netsim.c
@@ -0,0 +1,65 @@
+#include <gst/check/gstharness.h>
+#include <gst/check/gstcheck.h>
+
+GST_START_TEST (netsim_stress)
+{
+  GstHarness *h = gst_harness_new ("netsim");
+  GstCaps *caps = gst_caps_from_string ("mycaps");
+  GstBuffer *buf = gst_harness_create_buffer (h, 100);
+  GstHarnessThread *state, *push;
+  GstSegment segment;
+
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  state = gst_harness_stress_statechange_start (h);
+  push = gst_harness_stress_push_buffer_start (h, caps, &segment, buf);
+
+  g_usleep (G_USEC_PER_SEC * 1);
+
+  gst_harness_stress_thread_stop (state);
+  gst_harness_stress_thread_stop (push);
+
+  gst_caps_unref (caps);
+  gst_buffer_unref (buf);
+  gst_harness_teardown (h);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (netsim_stress_delayed)
+{
+  GstHarness *h = gst_harness_new_parse ("netsim delay-probability=0.5");
+  GstCaps *caps = gst_caps_from_string ("mycaps");
+  GstBuffer *buf = gst_harness_create_buffer (h, 100);
+  GstHarnessThread *state, *push;
+  GstSegment segment;
+
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  state = gst_harness_stress_statechange_start (h);
+  push = gst_harness_stress_push_buffer_start (h, caps, &segment, buf);
+
+  g_usleep (G_USEC_PER_SEC * 1);
+
+  gst_harness_stress_thread_stop (state);
+  gst_harness_stress_thread_stop (push);
+
+  gst_caps_unref (caps);
+  gst_buffer_unref (buf);
+  gst_harness_teardown (h);
+}
+
+GST_END_TEST;
+
+static Suite *
+netsim_suite (void)
+{
+  Suite *s = suite_create ("netsim");
+  TCase *tc_chain;
+
+  suite_add_tcase (s, (tc_chain = tcase_create ("general")));
+  tcase_add_test (tc_chain, netsim_stress);
+  tcase_add_test (tc_chain, netsim_stress_delayed);
+
+  return s;
+}
+
+GST_CHECK_MAIN (netsim)
diff --git a/tests/check/elements/test_http_src.c b/tests/check/elements/test_http_src.c
index 88b0c4f..915bb51 100644
--- a/tests/check/elements/test_http_src.c
+++ b/tests/check/elements/test_http_src.c
@@ -247,6 +247,10 @@
     gst_structure_free (src->extra_headers);
     src->extra_headers = NULL;
   }
+  g_free (src->http_method_name);
+  src->http_method_name = NULL;
+  g_free (src->user_agent);
+  src->user_agent = NULL;
   src->duration_changed = FALSE;
 }
 
diff --git a/tests/check/libs/gstglcontext.c b/tests/check/libs/gstglcontext.c
index edbf9f9..e626f2a 100644
--- a/tests/check/libs/gstglcontext.c
+++ b/tests/check/libs/gstglcontext.c
@@ -489,6 +489,34 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_is_shared)
+{
+  GstGLContext *c1, *c2;
+  GError *error = NULL;
+
+  c1 = gst_gl_context_new (display);
+  gst_gl_context_create (c1, NULL, &error);
+  fail_if (error != NULL, "Error creating context %s\n",
+      error ? error->message : "Unknown Error");
+
+  c2 = gst_gl_context_new (display);
+  gst_gl_context_create (c2, c1, &error);
+  fail_if (error != NULL, "Error creating context %s\n",
+      error ? error->message : "Unknown Error");
+
+  fail_unless (gst_gl_context_is_shared (c1));
+  fail_unless (gst_gl_context_is_shared (c2));
+
+  gst_object_unref (c2);
+  c2 = NULL;
+
+  fail_unless (!gst_gl_context_is_shared (c1));
+
+  gst_object_unref (c1);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_gl_context_suite (void)
 {
@@ -501,6 +529,7 @@
   tcase_add_test (tc_chain, test_wrapped_context);
   tcase_add_test (tc_chain, test_current_context);
   tcase_add_test (tc_chain, test_context_can_share);
+  tcase_add_test (tc_chain, test_is_shared);
 
   return s;
 }
diff --git a/tests/check/libs/gstglmemory.c b/tests/check/libs/gstglmemory.c
index 7387e25..4130e3b 100644
--- a/tests/check/libs/gstglmemory.c
+++ b/tests/check/libs/gstglmemory.c
@@ -183,10 +183,12 @@
   fail_unless (!GST_MEMORY_FLAG_IS_SET (mem2,
           GST_GL_BASE_MEMORY_TRANSFER_NEED_DOWNLOAD));
 
-  fail_unless (((gchar *) map_info.data)[0] == rgba_pixel[0]);
-  fail_unless (((gchar *) map_info.data)[1] == rgba_pixel[1]);
-  fail_unless (((gchar *) map_info.data)[2] == rgba_pixel[2]);
-  fail_unless (((gchar *) map_info.data)[3] == rgba_pixel[3]);
+  fail_unless (memcmp (map_info.data, rgba_pixel,
+          G_N_ELEMENTS (rgba_pixel)) == 0,
+      "0x%02x%02x%02x%02x != 0x%02x%02x%02x%02x", map_info.data[0],
+      map_info.data[1], map_info.data[2], map_info.data[3],
+      (guint8) rgba_pixel[0], (guint8) rgba_pixel[1], (guint8) rgba_pixel[2],
+      (guint8) rgba_pixel[3]);
 
   gst_memory_unmap (mem2, &map_info);
 
@@ -222,10 +224,12 @@
   /* test download of copied texture */
   fail_unless (gst_memory_map (mem, &map_info, GST_MAP_READ));
 
-  fail_unless (((gchar *) map_info.data)[0] == rgba_pixel[0]);
-  fail_unless (((gchar *) map_info.data)[1] == rgba_pixel[1]);
-  fail_unless (((gchar *) map_info.data)[2] == rgba_pixel[2]);
-  fail_unless (((gchar *) map_info.data)[3] == rgba_pixel[3]);
+  fail_unless (memcmp (map_info.data, rgba_pixel,
+          G_N_ELEMENTS (rgba_pixel)) == 0,
+      "0x%02x%02x%02x%02x != 0x%02x%02x%02x%02x", (guint8) map_info.data[0],
+      (guint8) map_info.data[1], (guint8) map_info.data[2],
+      (guint8) map_info.data[3], (guint8) rgba_pixel[0], (guint8) rgba_pixel[1],
+      (guint8) rgba_pixel[2], (guint8) rgba_pixel[3]);
 
   gst_memory_unmap (mem, &map_info);
 
@@ -237,10 +241,12 @@
   fail_unless (!GST_MEMORY_FLAG_IS_SET (mem,
           GST_GL_BASE_MEMORY_TRANSFER_NEED_DOWNLOAD));
 
-  fail_unless (((gchar *) map_info.data)[0] == rgba_pixel[0]);
-  fail_unless (((gchar *) map_info.data)[1] == rgba_pixel[1]);
-  fail_unless (((gchar *) map_info.data)[2] == rgba_pixel[2]);
-  fail_unless (((gchar *) map_info.data)[3] == rgba_pixel[3]);
+  fail_unless (memcmp (map_info.data, rgba_pixel,
+          G_N_ELEMENTS (rgba_pixel)) == 0,
+      "0x%02x%02x%02x%02x != 0x%02x%02x%02x%02x", (guint8) map_info.data[0],
+      (guint8) map_info.data[1], (guint8) map_info.data[2],
+      (guint8) map_info.data[3], (guint8) rgba_pixel[0], (guint8) rgba_pixel[1],
+      (guint8) rgba_pixel[2], (guint8) rgba_pixel[3]);
 
   gst_memory_unmap (mem3, &map_info);
 
@@ -313,10 +319,11 @@
 
   fail_unless (gst_memory_map (mem, &info, GST_MAP_READ));
 
-  fail_unless (((gchar *) info.data)[0] == rgba_pixel[0]);
-  fail_unless (((gchar *) info.data)[1] == rgba_pixel[1]);
-  fail_unless (((gchar *) info.data)[2] == rgba_pixel[2]);
-  fail_unless (((gchar *) info.data)[3] == rgba_pixel[3]);
+  fail_unless (memcmp (info.data, rgba_pixel, G_N_ELEMENTS (rgba_pixel)) == 0,
+      "0x%02x%02x%02x%02x != 0x%02x%02x%02x%02x", (guint8) info.data[0],
+      (guint8) info.data[1], (guint8) info.data[2],
+      (guint8) info.data[3], (guint8) rgba_pixel[0], (guint8) rgba_pixel[1],
+      (guint8) rgba_pixel[2], (guint8) rgba_pixel[3]);
 
   gst_memory_unmap (mem, &info);
 
diff --git a/tests/check/libs/gstglquery.c b/tests/check/libs/gstglquery.c
new file mode 100644
index 0000000..2dfa240
--- /dev/null
+++ b/tests/check/libs/gstglquery.c
@@ -0,0 +1,150 @@
+/* GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include <gst/check/gstcheck.h>
+
+#include <gst/gl/gl.h>
+
+#include <stdio.h>
+
+static GstGLDisplay *display;
+static GstGLContext *context;
+
+GST_DEBUG_CATEGORY_STATIC (gst_test_debug_cat);
+
+static void
+setup (void)
+{
+  GError *error = NULL;
+
+  display = gst_gl_display_new ();
+  context = gst_gl_context_new (display);
+
+  gst_gl_context_create (context, NULL, &error);
+
+  fail_if (error != NULL, "Error creating context: %s\n",
+      error ? error->message : "Unknown Error");
+}
+
+static void
+teardown (void)
+{
+  gst_object_unref (display);
+  gst_object_unref (context);
+}
+
+static void
+_test_query_gl (GstGLContext * context, gpointer data)
+{
+  GstGLQuery *q1, q2;
+
+  q1 = gst_gl_query_new (context, GST_GL_QUERY_TIME_ELAPSED);
+  fail_if (q1 == NULL);
+
+  gst_gl_query_start_log (q1, NULL, GST_LEVEL_ERROR, NULL, "%s",
+      "1. testing query proxy-logging");
+  gst_gl_query_end (q1);
+  /* GST_GL_QUERY_TIME_ELAPSED doesn't supported counter() */
+  ASSERT_CRITICAL (gst_gl_query_counter (q1));
+  gst_gl_query_result (q1);
+
+  gst_gl_query_free (q1);
+
+  gst_gl_query_init (&q2, context, GST_GL_QUERY_TIMESTAMP);
+
+  /* GST_GL_QUERY_TIMESTAMP doesn't supported start()/end() */
+  ASSERT_CRITICAL (gst_gl_query_start (&q2));
+  ASSERT_CRITICAL (gst_gl_query_end (&q2));
+
+  gst_gl_query_counter_log (&q2, gst_test_debug_cat, GST_LEVEL_ERROR, NULL,
+      "%s", "2. testing query proxy-logging works from _unset()");
+  gst_gl_query_result (&q2);
+
+  gst_gl_query_unset (&q2);
+
+  /* no usage */
+  gst_gl_query_init (&q2, context, GST_GL_QUERY_TIMESTAMP);
+  gst_gl_query_unset (&q2);
+
+  /* test mismatched start()/free() */
+  q1 = gst_gl_query_new (context, GST_GL_QUERY_TIME_ELAPSED);
+  fail_if (q1 == NULL);
+
+  gst_gl_query_start (q1);
+
+  ASSERT_CRITICAL (gst_gl_query_free (q1));
+
+  /* test mismatched start()/result() */
+  q1 = gst_gl_query_new (context, GST_GL_QUERY_TIME_ELAPSED);
+  fail_if (q1 == NULL);
+
+  gst_gl_query_start (q1);
+  ASSERT_CRITICAL (gst_gl_query_result (q1));
+  gst_gl_query_end (q1);
+
+  gst_gl_query_free (q1);
+
+  /* test mismatched end() */
+  q1 = gst_gl_query_new (context, GST_GL_QUERY_TIME_ELAPSED);
+  fail_if (q1 == NULL);
+  ASSERT_CRITICAL (gst_gl_query_end (q1));
+  gst_gl_query_free (q1);
+
+  /* test double end() */
+  q1 = gst_gl_query_new (context, GST_GL_QUERY_TIME_ELAPSED);
+  fail_if (q1 == NULL);
+
+  gst_gl_query_start (q1);
+  gst_gl_query_end (q1);
+  ASSERT_CRITICAL (gst_gl_query_end (q1));
+
+  gst_gl_query_free (q1);
+
+  /* double start is allowed */
+}
+
+GST_START_TEST (test_query)
+{
+  gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _test_query_gl,
+      NULL);
+}
+
+GST_END_TEST;
+
+static Suite *
+gst_gl_upload_suite (void)
+{
+  Suite *s = suite_create ("GstGLQuery");
+  TCase *tc_chain = tcase_create ("glquery");
+
+  GST_DEBUG_CATEGORY_INIT (gst_test_debug_cat, "test-debug", 0,
+      "proxy-logging test debug");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_checked_fixture (tc_chain, setup, teardown);
+  tcase_add_test (tc_chain, test_query);
+
+  return s;
+}
+
+GST_CHECK_MAIN (gst_gl_upload);
diff --git a/tests/check/libs/player.c b/tests/check/libs/player.c
index 0f7a63c..5586e63 100644
--- a/tests/check/libs/player.c
+++ b/tests/check/libs/player.c
@@ -69,7 +69,7 @@
 {
   GstPlayer *player;
 
-  player = gst_player_new ();
+  player = gst_player_new (NULL, NULL);
   fail_unless (player != NULL);
   g_object_unref (player);
 }
@@ -81,7 +81,7 @@
   GstPlayer *player;
   gchar *uri;
 
-  player = gst_player_new ();
+  player = gst_player_new (NULL, NULL);
 
   fail_unless (player != NULL);
 
@@ -101,7 +101,7 @@
   GstPlayer *player;
   guint interval = 0;
 
-  player = gst_player_new ();
+  player = gst_player_new (NULL, NULL);
 
   fail_unless (player != NULL);
 
@@ -355,7 +355,7 @@
   GstElement *playbin, *fakesink;
 
   player =
-      gst_player_new_full (NULL,
+      gst_player_new (NULL,
       gst_player_g_main_context_signal_dispatcher_new (NULL));
   fail_unless (player != NULL);
 
diff --git a/tests/examples/Makefile.in b/tests/examples/Makefile.in
index 2d4235c..d0be295 100644
--- a/tests/examples/Makefile.in
+++ b/tests/examples/Makefile.in
@@ -121,16 +121,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -339,7 +338,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -361,7 +359,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -383,9 +380,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -547,6 +541,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -560,8 +555,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -648,8 +641,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -701,6 +692,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -721,6 +713,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -758,7 +752,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/avsamplesink/Makefile.in b/tests/examples/avsamplesink/Makefile.in
index 2fddbbc..1a3f47b 100644
--- a/tests/examples/avsamplesink/Makefile.in
+++ b/tests/examples/avsamplesink/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -293,7 +292,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -315,7 +313,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -337,9 +334,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -501,6 +495,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -514,8 +509,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -602,8 +595,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -655,6 +646,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -675,6 +667,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -712,7 +706,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/camerabin2/Makefile.in b/tests/examples/camerabin2/Makefile.in
index 679ff4e..2bc6382 100644
--- a/tests/examples/camerabin2/Makefile.in
+++ b/tests/examples/camerabin2/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -311,7 +310,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -333,7 +331,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -355,9 +352,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -519,6 +513,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -532,8 +527,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -620,8 +613,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -673,6 +664,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -693,6 +685,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -730,7 +724,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/codecparsers/Makefile.in b/tests/examples/codecparsers/Makefile.in
index db8b4f4..946dc02 100644
--- a/tests/examples/codecparsers/Makefile.in
+++ b/tests/examples/codecparsers/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -296,7 +295,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -318,7 +316,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -340,9 +337,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -504,6 +498,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -517,8 +512,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -605,8 +598,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -658,6 +649,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -678,6 +670,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -715,7 +709,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/directfb/Makefile.in b/tests/examples/directfb/Makefile.in
index 0515727..1d6c4e5 100644
--- a/tests/examples/directfb/Makefile.in
+++ b/tests/examples/directfb/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -290,7 +289,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -312,7 +310,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -334,9 +331,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -498,6 +492,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -511,8 +506,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -599,8 +592,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -652,6 +643,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -672,6 +664,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -709,7 +703,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/Makefile.in b/tests/examples/gl/Makefile.in
index 9f5a918..9e40958 100644
--- a/tests/examples/gl/Makefile.in
+++ b/tests/examples/gl/Makefile.in
@@ -119,16 +119,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -301,7 +300,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -323,7 +321,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -345,9 +342,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -509,6 +503,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -522,8 +517,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -610,8 +603,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -663,6 +654,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -683,6 +675,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -720,7 +714,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/clutter/Makefile.in b/tests/examples/gl/clutter/Makefile.in
index 263cb57..854e75a 100644
--- a/tests/examples/gl/clutter/Makefile.in
+++ b/tests/examples/gl/clutter/Makefile.in
@@ -120,16 +120,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -333,7 +332,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -355,7 +353,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -377,9 +374,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -541,6 +535,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -554,8 +549,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -642,8 +635,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -695,6 +686,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -715,6 +707,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -752,7 +746,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/cocoa/Makefile.in b/tests/examples/gl/cocoa/Makefile.in
index 6a7e64f..f5f4606 100644
--- a/tests/examples/gl/cocoa/Makefile.in
+++ b/tests/examples/gl/cocoa/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -296,7 +295,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -318,7 +316,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -340,9 +337,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -504,6 +498,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -517,8 +512,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -605,8 +598,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -658,6 +649,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -678,6 +670,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -715,7 +709,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/generic/Makefile.in b/tests/examples/gl/generic/Makefile.in
index 112221b..a4fb04c 100644
--- a/tests/examples/gl/generic/Makefile.in
+++ b/tests/examples/gl/generic/Makefile.in
@@ -114,16 +114,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -297,7 +296,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -319,7 +317,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -341,9 +338,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -505,6 +499,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -518,8 +513,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -606,8 +599,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -659,6 +650,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -679,6 +671,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -716,7 +710,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/generic/cube/Makefile.in b/tests/examples/gl/generic/cube/Makefile.in
index 8ebc765..4053276 100644
--- a/tests/examples/gl/generic/cube/Makefile.in
+++ b/tests/examples/gl/generic/cube/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -292,7 +291,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -314,7 +312,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -336,9 +333,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -500,6 +494,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -513,8 +508,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -601,8 +594,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -654,6 +645,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -674,6 +666,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -711,7 +705,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/generic/cubeyuv/Makefile.in b/tests/examples/gl/generic/cubeyuv/Makefile.in
index 249a304..8c42672 100644
--- a/tests/examples/gl/generic/cubeyuv/Makefile.in
+++ b/tests/examples/gl/generic/cubeyuv/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -292,7 +291,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -314,7 +312,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -336,9 +333,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -500,6 +494,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -513,8 +508,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -601,8 +594,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -654,6 +645,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -674,6 +666,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -711,7 +705,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/generic/doublecube/Makefile.in b/tests/examples/gl/generic/doublecube/Makefile.in
index bb78e1b..c3673c9 100644
--- a/tests/examples/gl/generic/doublecube/Makefile.in
+++ b/tests/examples/gl/generic/doublecube/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -292,7 +291,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -314,7 +312,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -336,9 +333,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -500,6 +494,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -513,8 +508,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -601,8 +594,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -654,6 +645,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -674,6 +666,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -711,7 +705,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/generic/recordgraphic/Makefile.in b/tests/examples/gl/generic/recordgraphic/Makefile.in
index 4330875..ce36ed5 100644
--- a/tests/examples/gl/generic/recordgraphic/Makefile.in
+++ b/tests/examples/gl/generic/recordgraphic/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -293,7 +292,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -315,7 +313,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -337,9 +334,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -501,6 +495,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -514,8 +509,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -602,8 +595,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -655,6 +646,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -675,6 +667,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -712,7 +706,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/gtk/3dvideo/Makefile.in b/tests/examples/gl/gtk/3dvideo/Makefile.in
index b33f20e..1a481d1 100644
--- a/tests/examples/gl/gtk/3dvideo/Makefile.in
+++ b/tests/examples/gl/gtk/3dvideo/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -316,7 +315,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -338,7 +336,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -360,9 +357,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -524,6 +518,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -537,8 +532,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -625,8 +618,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -678,6 +669,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -698,6 +690,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -735,7 +729,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/gtk/Makefile.in b/tests/examples/gl/gtk/Makefile.in
index 9febf25..12f7a4b 100644
--- a/tests/examples/gl/gtk/Makefile.in
+++ b/tests/examples/gl/gtk/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -333,7 +332,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -355,7 +353,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -377,9 +374,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -541,6 +535,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -554,8 +549,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -642,8 +635,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -695,6 +686,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -715,6 +707,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -752,7 +746,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/gtk/filternovideooverlay/Makefile.in b/tests/examples/gl/gtk/filternovideooverlay/Makefile.in
index a5e5804..2949604 100644
--- a/tests/examples/gl/gtk/filternovideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/filternovideooverlay/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -294,7 +293,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -316,7 +314,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -338,9 +335,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -502,6 +496,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -515,8 +510,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -603,8 +596,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -656,6 +647,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -676,6 +668,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -713,7 +707,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/gtk/filtervideooverlay/Makefile.in b/tests/examples/gl/gtk/filtervideooverlay/Makefile.in
index a899cb7..50aad71 100644
--- a/tests/examples/gl/gtk/filtervideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/filtervideooverlay/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -294,7 +293,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -316,7 +314,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -338,9 +335,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -502,6 +496,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -515,8 +510,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -603,8 +596,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -656,6 +647,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -676,6 +668,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -713,7 +707,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/gtk/fxtest/Makefile.in b/tests/examples/gl/gtk/fxtest/Makefile.in
index 9d283b6..f96c2d6 100644
--- a/tests/examples/gl/gtk/fxtest/Makefile.in
+++ b/tests/examples/gl/gtk/fxtest/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -301,7 +300,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -323,7 +321,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -345,9 +342,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -509,6 +503,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -522,8 +517,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -610,8 +603,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -663,6 +654,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -683,6 +675,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -720,7 +714,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in b/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
index 4e0bc3d..2c68a3c 100644
--- a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -294,7 +293,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -316,7 +314,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -338,9 +335,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -502,6 +496,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -515,8 +510,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -603,8 +596,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -656,6 +647,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -676,6 +668,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -713,7 +707,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/gtk/switchvideooverlay/Makefile.in b/tests/examples/gl/gtk/switchvideooverlay/Makefile.in
index 4ebab46..c7bfe31 100644
--- a/tests/examples/gl/gtk/switchvideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/switchvideooverlay/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -294,7 +293,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -316,7 +314,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -338,9 +335,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -502,6 +496,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -515,8 +510,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -603,8 +596,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -656,6 +647,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -676,6 +668,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -713,7 +707,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/qt/Makefile.in b/tests/examples/gl/qt/Makefile.in
index ba6c799..1dd97c7 100644
--- a/tests/examples/gl/qt/Makefile.in
+++ b/tests/examples/gl/qt/Makefile.in
@@ -114,16 +114,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -237,7 +236,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -259,7 +257,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -281,9 +278,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -445,6 +439,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -458,8 +453,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -546,8 +539,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -599,6 +590,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -619,6 +611,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -656,7 +650,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gl/sdl/Makefile.in b/tests/examples/gl/sdl/Makefile.in
index 5bf6e2d..4d51a2d 100644
--- a/tests/examples/gl/sdl/Makefile.in
+++ b/tests/examples/gl/sdl/Makefile.in
@@ -119,16 +119,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -308,7 +307,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -330,7 +328,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -352,9 +349,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -516,6 +510,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -529,8 +524,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -617,8 +610,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -670,6 +661,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -690,6 +682,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -727,7 +721,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/gtk/Makefile.in b/tests/examples/gtk/Makefile.in
index c38a4ce..888b3d7 100644
--- a/tests/examples/gtk/Makefile.in
+++ b/tests/examples/gtk/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -318,7 +317,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -340,7 +338,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -362,9 +359,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -526,6 +520,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -539,8 +534,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -627,8 +620,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -680,6 +671,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -700,6 +692,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -737,7 +731,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/mpegts/Makefile.in b/tests/examples/mpegts/Makefile.in
index ebc4115..0d3f759 100644
--- a/tests/examples/mpegts/Makefile.in
+++ b/tests/examples/mpegts/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -290,7 +289,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -312,7 +310,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -334,9 +331,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -498,6 +492,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -511,8 +506,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -599,8 +592,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -652,6 +643,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -672,6 +664,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -709,7 +703,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/mxf/Makefile.in b/tests/examples/mxf/Makefile.in
index 9fbc215..2e93746 100644
--- a/tests/examples/mxf/Makefile.in
+++ b/tests/examples/mxf/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
@@ -295,7 +294,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -317,7 +315,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -339,9 +336,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -503,6 +497,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -516,8 +511,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -604,8 +597,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -657,6 +648,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -677,6 +669,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -714,7 +708,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/opencv/Makefile.in b/tests/examples/opencv/Makefile.in
index db3e33d..6a12ba6 100644
--- a/tests/examples/opencv/Makefile.in
+++ b/tests/examples/opencv/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -312,7 +311,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -334,7 +332,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -356,9 +353,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -520,6 +514,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -533,8 +528,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -621,8 +614,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -674,6 +665,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -694,6 +686,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -731,7 +725,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/uvch264/Makefile.in b/tests/examples/uvch264/Makefile.in
index 4c818eb..0d61bcc 100644
--- a/tests/examples/uvch264/Makefile.in
+++ b/tests/examples/uvch264/Makefile.in
@@ -117,16 +117,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -298,7 +297,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -320,7 +318,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -342,9 +339,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -506,6 +500,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -519,8 +514,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -607,8 +600,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -660,6 +651,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -680,6 +672,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -717,7 +711,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/examples/waylandsink/Makefile.in b/tests/examples/waylandsink/Makefile.in
index 7261411..e9011c6 100644
--- a/tests/examples/waylandsink/Makefile.in
+++ b/tests/examples/waylandsink/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -294,7 +293,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -316,7 +314,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -338,9 +335,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -502,6 +496,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -515,8 +510,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -603,8 +596,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -656,6 +647,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -676,6 +668,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -713,7 +707,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tests/files/Makefile.am b/tests/files/Makefile.am
index 2807612..359d601 100644
--- a/tests/files/Makefile.am
+++ b/tests/files/Makefile.am
@@ -1,7 +1,4 @@
 EXTRA_DIST = \
 	barcode.png \
 	blue-square.png \
-	cbr_stream.mp3 \
-	s16be-id3v2.aiff \
-	stream.mp2 \
-	vbr_stream.mp3
+	s16be-id3v2.aiff
diff --git a/tests/files/Makefile.in b/tests/files/Makefile.in
index e987db4..f0ba64b 100644
--- a/tests/files/Makefile.in
+++ b/tests/files/Makefile.in
@@ -114,16 +114,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -237,7 +236,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -259,7 +257,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -281,9 +278,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -445,6 +439,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -458,8 +453,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -546,8 +539,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -599,6 +590,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -619,6 +611,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -656,7 +650,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
@@ -699,10 +692,7 @@
 EXTRA_DIST = \
 	barcode.png \
 	blue-square.png \
-	cbr_stream.mp3 \
-	s16be-id3v2.aiff \
-	stream.mp2 \
-	vbr_stream.mp3
+	s16be-id3v2.aiff
 
 all: all-am
 
diff --git a/tests/files/cbr_stream.mp3 b/tests/files/cbr_stream.mp3
deleted file mode 100644
index b1a5c43..0000000
--- a/tests/files/cbr_stream.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/files/stream.mp2 b/tests/files/stream.mp2
deleted file mode 100644
index ab6e900..0000000
--- a/tests/files/stream.mp2
+++ /dev/null
Binary files differ
diff --git a/tests/files/vbr_stream.mp3 b/tests/files/vbr_stream.mp3
deleted file mode 100644
index 81fc38b..0000000
--- a/tests/files/vbr_stream.mp3
+++ /dev/null
Binary files differ
diff --git a/tests/icles/Makefile.in b/tests/icles/Makefile.in
index f92db03..d0552a4 100644
--- a/tests/icles/Makefile.in
+++ b/tests/icles/Makefile.in
@@ -116,16 +116,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -295,7 +294,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -317,7 +315,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -339,9 +336,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -503,6 +497,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -516,8 +511,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -604,8 +597,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -657,6 +648,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -677,6 +669,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -714,7 +708,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 5847a4a..65ac6e0 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -114,16 +114,15 @@
 	$(top_srcdir)/common/m4/gtk-doc.m4 \
 	$(top_srcdir)/common/m4/introspection.m4 \
 	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gsettings.m4 \
-	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/gst-sdl.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libgcrypt.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gst-fionread.m4 \
+	$(top_srcdir)/m4/gst-sdl.m4 $(top_srcdir)/m4/iconv.m4 \
+	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
+	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
+	$(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+	$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
@@ -237,7 +236,6 @@
 EXIF_CFLAGS = @EXIF_CFLAGS@
 EXIF_LIBS = @EXIF_LIBS@
 FAAC_LIBS = @FAAC_LIBS@
-FAAD_IS_NEAAC = @FAAD_IS_NEAAC@
 FAAD_LIBS = @FAAD_LIBS@
 FFLAGS = @FFLAGS@
 FGREP = @FGREP@
@@ -259,7 +257,6 @@
 GLES2_CFLAGS = @GLES2_CFLAGS@
 GLES2_LIBS = @GLES2_LIBS@
 GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
 GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
 GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
@@ -281,9 +278,6 @@
 GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
 GRAPHENE_LIBS = @GRAPHENE_LIBS@
 GREP = @GREP@
-GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
-GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
-GSETTINGS_LIBS = @GSETTINGS_LIBS@
 GSM_LIBS = @GSM_LIBS@
 GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
 GSTPB_PREFIX = @GSTPB_PREFIX@
@@ -445,6 +439,7 @@
 LTLIBICONV = @LTLIBICONV@
 LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -458,8 +453,6 @@
 MODPLUG_LIBS = @MODPLUG_LIBS@
 MPEG2ENC_CFLAGS = @MPEG2ENC_CFLAGS@
 MPEG2ENC_LIBS = @MPEG2ENC_LIBS@
-MPG123_CFLAGS = @MPG123_CFLAGS@
-MPG123_LIBS = @MPG123_LIBS@
 MPLEX_CFLAGS = @MPLEX_CFLAGS@
 MPLEX_LDFLAGS = @MPLEX_LDFLAGS@
 MPLEX_LIBS = @MPLEX_LIBS@
@@ -546,8 +539,6 @@
 QT_X11_LIBS = @QT_X11_LIBS@
 RANLIB = @RANLIB@
 RCC = @RCC@
-RSVG_2_36_2_CFLAGS = @RSVG_2_36_2_CFLAGS@
-RSVG_2_36_2_LIBS = @RSVG_2_36_2_LIBS@
 RSVG_CFLAGS = @RSVG_CFLAGS@
 RSVG_LIBS = @RSVG_LIBS@
 RTMP_CFLAGS = @RTMP_CFLAGS@
@@ -599,6 +590,7 @@
 VOAACENC_LIBS = @VOAACENC_LIBS@
 VOAMRWBENC_CFLAGS = @VOAMRWBENC_CFLAGS@
 VOAMRWBENC_LIBS = @VOAMRWBENC_LIBS@
+VULKAN_LIBS = @VULKAN_LIBS@
 WARNING_CFLAGS = @WARNING_CFLAGS@
 WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
 WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
@@ -619,6 +611,8 @@
 X11_LIBS = @X11_LIBS@
 X265_CFLAGS = @X265_CFLAGS@
 X265_LIBS = @X265_LIBS@
+XCB_CFLAGS = @XCB_CFLAGS@
+XCB_LIBS = @XCB_LIBS@
 XCOMPOSITE_CFLAGS = @XCOMPOSITE_CFLAGS@
 XCOMPOSITE_LIBS = @XCOMPOSITE_LIBS@
 XGETTEXT = @XGETTEXT@
@@ -656,7 +650,6 @@
 docdir = @docdir@
 dvidir = @dvidir@
 exec_prefix = @exec_prefix@
-gsettingsschemadir = @gsettingsschemadir@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
diff --git a/win32/common/config.h b/win32/common/config.h
index 05996f5..166b8dc 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -31,12 +31,6 @@
    language is requested. */
 #undef ENABLE_NLS
 
-/* The x in 2.x */
-#undef FAAD2_MINOR_VERSION
-
-/* Define if AAC is using new api prefix */
-#undef FAAD_IS_NEAAC
-
 /* gettext package name */
 #define GETTEXT_PACKAGE "gst-plugins-bad-1.0"
 
@@ -95,7 +89,7 @@
 #define GST_PACKAGE_ORIGIN "Unknown package origin"
 
 /* GStreamer package release date/time for plugins as YYYY-MM-DD */
-#define GST_PACKAGE_RELEASE_DATETIME "2015-12-24"
+#define GST_PACKAGE_RELEASE_DATETIME "2016-02-19"
 
 /* Define if static plugins should be built */
 #undef GST_PLUGIN_BUILD_STATIC
@@ -244,7 +238,7 @@
 /* Define to enable AAC encoder plug-in (used by faac). */
 #undef HAVE_FAAC
 
-/* Define to enable AAC decoder plug-in (used by faad). */
+/* Define to enable FAAD2 AAC decoder plug-in (used by faad). */
 #undef HAVE_FAAD
 
 /* Define to enable linux framebuffer (used by fbdevsink). */
@@ -280,6 +274,9 @@
 /* Define to 1 if the system has the type `GLeglImageOES'. */
 #undef HAVE_GLEGLIMAGEOES
 
+/* Define to 1 if the system has the type `GLint64'. */
+#undef HAVE_GLINT64
+
 /* Define to 1 if the system has the type `GLintptr'. */
 #undef HAVE_GLINTPTR
 
@@ -301,9 +298,6 @@
 /* Use graphene */
 #undef HAVE_GRAPHENE
 
-/* Define to enable GSettings plugin (used by gsettings). */
-#undef HAVE_GSETTINGS
-
 /* Define to enable GSM library (used by gsmenc gsmdec). */
 #undef HAVE_GSM
 
@@ -385,9 +379,6 @@
 /* Define to enable mpeg2enc (used by mpeg2enc). */
 #undef HAVE_MPEG2ENC
 
-/* Define to enable mpg123 audio decoder (used by mpg123). */
-#undef HAVE_MPG123
-
 /* Define to enable mplex (used by mplex). */
 #undef HAVE_MPLEX
 
@@ -537,9 +528,6 @@
 /* Define to enable rsvg decoder (used by rsvg). */
 #undef HAVE_RSVG
 
-/* Have RSVG 2.36.2 or newer */
-#undef HAVE_RSVG_2_36_2
-
 /* Define to enable rtmp library (used by rtmp). */
 #undef HAVE_RTMP
 
@@ -621,6 +609,9 @@
 /* Define to enable timidity midi soft synth plugin (used by timidity). */
 #undef HAVE_TIMIDITY
 
+/* Define to enable tinyalsa (used by tinyalsa). */
+#undef HAVE_TINYALSA
+
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
@@ -648,6 +639,9 @@
 /* Define to enable vo-amrwbenc library (used by vo-amrwbenc). */
 #undef HAVE_VOAMRWBENC
 
+/* Define to enable Vulkan elements (used by vulkan). */
+#undef HAVE_VULKAN
+
 /* Define to enable WASAPI plug-in (used by wasapi). */
 #undef HAVE_WASAPI
 
@@ -715,8 +709,7 @@
 /* gettext locale dir */
 #define LOCALEDIR PREFIX "\\share\\locale"
 
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
-   */
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
 #undef LT_OBJDIR
 
 /* Define if the old MusePack API is used */
@@ -738,7 +731,7 @@
 #define PACKAGE_NAME "GStreamer Bad Plug-ins"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer Bad Plug-ins 1.7.1"
+#define PACKAGE_STRING "GStreamer Bad Plug-ins 1.7.2"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "gst-plugins-bad"
@@ -747,7 +740,7 @@
 #undef PACKAGE_URL
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.7.1"
+#define PACKAGE_VERSION "1.7.2"
 
 /* directory where plugins are located */
 #ifdef _DEBUG
@@ -791,7 +784,7 @@
 #undef USE_EGL_RPI
 
 /* Version number of package */
-#define VERSION "1.7.1"
+#define VERSION "1.7.2"
 
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */