diff --git a/ChangeLog b/ChangeLog
index ae00232..6ce2c39 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,11 +1,982 @@
-=== release 1.8.3 ===
+=== release 1.9.90 ===
 
-2016-08-19  Sebastian Dröge <slomo@coaxion.net>
+2016-09-30  Sebastian Dröge <slomo@coaxion.net>
 
 	* configure.ac:
-	  releasing 1.8.3
+	  releasing 1.9.90
 
-2016-08-19 11:50:15 +0300  Sebastian Dröge <sebastian@centricular.com>
+2016-09-30 11:41:14 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/de.po:
+	  po: Update translations
+
+2016-09-27 18:00:47 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* meson.build:
+	* plugins/tracers/meson.build:
+	  meson: tracers: signal availability of libunwind and backtrace() to code
+	  Not setting cdata here on purpose because of .. complications.
+
+2016-09-26 18:21:19 -0300  Thibault Saunier <thibault.saunier@osg.samsung.com>
+
+	* config.h.meson:
+	* meson.build:
+	* plugins/meson.build:
+	* plugins/tracers/meson.build:
+	  meson: Build tracers
+
+2016-09-23 20:40:39 -0300  Thibault Saunier <thibault.saunier@osg.samsung.com>
+
+	* docs/gst/meson.build:
+	* docs/libs/meson.build:
+	* docs/meson.build:
+	  meson: Fix gtkdoc using new meson features
+
+2016-09-26 12:14:14 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/gst/gstbuffer.c:
+	* tests/check/gst/gstmemory.c:
+	* tests/check/gst/gstmeta.c:
+	  tests: remove unused valgrind stuff
+	  Code was also checking the wrong define anyway.
+
+2016-09-26 12:12:12 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/Makefile.am:
+	* tests/check/pipelines/parse-launch.c:
+	  tests: parse-launch: looks clean nowadays, so re-enable for valgrind
+	  Also, the valgrind bits weren't hooked up properly anyway,
+	  checking the wrong define.
+
+2016-09-24 18:22:26 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* config.h.meson:
+	* meson.build:
+	  meson: remove incorrect and unneeded check for ptrdiff_t
+	  Need to include stddef.h for it, so this would've worked:
+	  if cc.has_type('ptrdiff_t', prefix: '#include <stddef.h>')
+
+2016-09-24 18:06:31 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/printf/meson.build:
+	  meson: fix internal printf for %ll format modifier on 32-bit systems
+	  gst/gstprintf unit test would fail on 32-bit x86 with:
+	  gstprintf.c:83:printf_I32_I64:0: 'str' (64-bit x value = b5a6978f) is not equal to '"64-bit x value = f1e2d3c4b5a6978f"'
+
+2016-09-23 04:19:47 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst/meson.build:
+	  Revert "meson: Force gstenum_h to be built when using gst_dep"
+	  This reverts commit cfc565e2d88a8e7d656b68c5c2a1b7acb08cdb7f.
+	  The commit was redundant since gst_gen_sources already contains
+	  gstenum_h. We're still investigating why some people are still seeing
+	  a racy build failure.
+
+2016-09-23 00:28:53 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst/meson.build:
+	  meson: Force gstenum_h to be built when using gst_dep
+	  This forces gstenumtypes.h to be built whenever something uses gst_dep
+	  as a subproject dependency. This is needed since gst/gst.h includes
+	  gstenumtypes.h
+	  Closes https://github.com/mesonbuild/meson/issues/714 which is not
+	  actually a Meson bug.
+
+2016-09-19 10:07:51 -0400  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbin.c:
+	  bin: Add forgotten "git commit --amend" for last commit
+	  Need to cast away the const as g_queue_foreach() takes a non-const GQueue*
+
+2016-09-19 10:04:55 -0400  Kouhei Sutou <kou@clear-code.com>
+
+	* gst/gstbin.c:
+	  bin: When copying the sort iterator, also copy its internal queue
+	  Otherwise both iterators share the same references, the second one
+	  usually resulting in a crash when being freed.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771649
+
+2016-09-11 15:28:43 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* tests/check/elements/queue2.c:
+	  queue2: Fix watermark test
+	  This carries over code for a similar test from multiqueue to ensure full
+	  control over the dataflow while testing. (The previous attempt was racy
+	  since the fill level changed without any thread sync with the test code.)
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771210
+
+2016-09-11 15:26:26 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* plugins/elements/gstqueue2.c:
+	  queue2: Update buffering if its enabled and low/high watermarks are changed
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771210
+
+2016-09-15 17:38:49 +0530  Arun Raghavan <arun@arunraghavan.net>
+
+	* gst/gstmessage.c:
+	  message: Fix documentation for gst_message_new_duration()
+	  Seems like there was some documentation left over from when this was
+	  gst_message_new_duration().
+
+2016-09-12 17:41:16 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: Remove unused fields and always use the buffer timestamp difference for calculating the QoS proportion
+	  The buffer timestamps are only hints and more often than not have
+	  nothing to do with reality.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771306
+
+2016-09-08 12:58:54 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* configure.ac:
+	* gst/gstconfig.h.in:
+	* meson.build:
+	  gstconfig: Use __declspec when built with MinGW and linking with MSVC
+	  Earlier we were only using __declspec(dllexport/import) when we were
+	  built with MSVC because when built with MinGW and linking with MinGW we
+	  don't need it (and we get linker errors because of it).
+	  However, when we're built with MinGW and someone wants to link to us
+	  with MSVC, we still need the prototypes to have __declspec(dllimport)
+	  since MSVC cannot do auto-import like GCC can.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771029
+
+2016-09-12 17:07:09 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbin.c:
+	  bin: Also don't *unset* element flags if they're in the suppressed flags
+	  Otherwise our bin might lose various flags that were explicitly set on
+	  it at arbitrary times.
+
+2016-09-10 11:59:11 -0300  Thiago Santos <thiagossantos@gmail.com>
+
+	* tests/check/gst/gstbin.c:
+	  tests: gstbin: add tests for suppressed flags
+	  Some simple tests to make sure it keeps working
+
+2016-09-02 17:39:17 +0900  Wonchul Lee <wonchul.lee@collabora.com>
+
+	* gst/gstbin.c:
+	* gst/gstbin.h:
+	* win32/common/libgstreamer.def:
+	  bin: Add setter and getter to suppress element flags
+	  Suppress-flags is for preventing propagation of child element's specific
+	  flag when it is added to the bin.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770627
+
+2016-09-10 20:50:48 +1000  Jan Schmidt <jan@centricular.com>
+
+	* autogen.sh:
+	* common:
+	  Automatic update of common submodule
+	  From b18d820 to f980fd9
+
+2015-11-13 16:00:02 +0000  Graham Leggett <minfrin@sharp.fm>
+
+	* gst/gst.c:
+	  gst: Ensure gst_value is initialised before gst_tag
+	  Otherwise GST_TYPE_FRACTION will work correctly in tags.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=753922
+
+2016-09-09 11:46:11 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstutils.c:
+	  element: Reset the stop position to NONE in seek_simple()
+	  When using seek_simple() in combination with other kinds of seeks, this
+	  becomes problematic. seek_simple() does not reset the stop position to
+	  GST_CLOCK_TIME_NONE but keeps whatever a previous seek did. So for example
+	  when doing a seek_simple() after a rate=-1 seek, we would usually get
+	  assertions that start>stop (and stop being the old stop from the rate=1 seek).
+	  https://bugzilla.gnome.org/show_bug.cgi?id=771104
+
+2016-09-10 09:53:42 +1000  Jan Schmidt <jan@centricular.com>
+
+	* autogen.sh:
+	* common:
+	  Automatic update of common submodule
+	  From f49c55e to b18d820
+
+2016-09-09 09:36:40 -0300  Thibault Saunier <thibault.saunier@osg.samsung.com>
+
+	* tests/check/meson.build:
+	  meson:tests: Bump timeout to 3 minutes
+	  Basically we already have each test with a 20sec timeout,
+	  and testsuite can last more than the default 30secs from
+	  meson. 3 minutes is another arbitrary timeout but should
+	  be good enough.
+
+2016-09-08 15:19:38 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: Use the average durations based on timestamps for the QoS proportion when doing trickmodes
+	  The durations of the buffers are (usually) assuming that no frames are being
+	  dropped and are just the durations coming from the stream. However if we do
+	  trickmodes, frames are being dropped regularly especially if only key units
+	  are supposed to be played.
+	  Fixes completely bogus QoS proportion values in the above case.
+
+2016-09-05 18:07:49 -0300  Thibault Saunier <thibault.saunier@osg.samsung.com>
+
+	* meson.build:
+	  meson: Fix building with meson 0.34
+
+2016-08-26 20:06:59 -0300  Thibault Saunier <tsaunier@gnome.org>
+
+	* gst/meson.build:
+	* meson.build:
+	* meson_options.txt:
+	  meson: Allow others to build GIR files when using GStreamer as subproject
+	  And add a way to disable the introspection and bump version to 1.9.2
+
+2016-09-05 11:11:29 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstconfig.h.in:
+	  gstconfig.h.in: Add another version of the SH4 #define and S390x
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770731
+
+2016-09-05 09:50:17 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstconfig.h.in:
+	  config: newer gcc doesn't know __ppc__ and __ppc64__ anymore
+	  __ppc__ and __ppc64__ are non-standard defines, we should use
+	  __powerpc__ and __powerpc64__ instead because newer gcc doesn't know
+	  them anymore.
+
+2016-09-04 20:39:31 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-inspect.c:
+	  tools: gst-inspect: add * for pointer signal arguments where needed
+	  Print GObject argument properly with pointer marker:
+	  "client-added" :  void user_function (GstElement* object,
+	  GObject* arg0,
+	  gpointer user_data);
+	  instead of
+	  "client-added" :  void user_function (GstElement* object,
+	  GObject arg0,
+	  gpointer user_data);
+	  for gst-inspect-1.0 tcpserversink.
+
+2016-09-02 23:22:17 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/Makefile.am:
+	  tests: don't build misc subdir if both examples and benchmarks have been disabled
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770740
+
+2016-09-01 14:13:40 +0200  Wim Taymans <wtaymans@redhat.com>
+
+	* gst/gstconfig.h.in:
+	  config: support System z
+
+2016-09-01 12:25:23 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  Back to development
+
+=== release 1.9.2 ===
+
+2016-09-01 12:24:45 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* configure.ac:
+	* docs/plugins/gstreamer-plugins.args:
+	* docs/plugins/inspect/plugin-coreelements.xml:
+	* gstreamer.doap:
+	* win32/common/config.h:
+	* win32/common/gstenumtypes.c:
+	* win32/common/gstversion.h:
+	  Release 1.9.2
+
+2016-09-01 11:22:45 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/af.po:
+	* po/az.po:
+	* po/be.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/lt.po:
+	* po/nb.po:
+	* po/nl.po:
+	* po/pl.po:
+	* po/pt_BR.po:
+	* po/ro.po:
+	* po/ru.po:
+	* po/rw.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/zh_TW.po:
+	  po: Update translations
+
+2016-08-31 09:49:03 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* plugins/elements/gstmultiqueue.c:
+	* tests/check/elements/multiqueue.c:
+	  multiqueue: Add higher-resolution low/high-watermark properties
+	  low/high-watermark are of type double, and given in range 0.0-1.0. This
+	  makes it possible to set low/high watermarks with greater resolution,
+	  which is useful with large multiqueue max sizes and watermarks like 0.5%.
+	  Also adding a test to check the fill and watermark level behavior.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770628
+
+2016-08-31 09:48:53 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* plugins/elements/gstmultiqueue.c:
+	* plugins/elements/gstmultiqueue.h:
+	  multiqueue: Distinguish between buffering percentage and buffering level
+	  To make the code clearer, and to facilitate future improvements, introduce
+	  a distinction between the buffering level and the buffering percentage.
+	  Buffering level: the queue's current fill level. The low/high watermarks
+	  are in this range.
+	  Buffering percentage: percentage relative to the low/high watermarks
+	  (0% = low watermark, 100% = high watermark).
+	  To that end, get_percentage() is renamed to get_buffering_level(). Also,
+	  low/high_percent are renamed to low/high_watermark to avoid confusion.
+	  mq->buffering_percent values are now normalized in the 0..100 range for
+	  buffering messages inside update_buffering(), and not just before sending
+	  the buffering message. Finally the buffering level range is parameterized
+	  by adding a new constant called MAX_BUFFERING_LEVEL.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770628
+
+2016-08-31 09:48:38 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* plugins/elements/gstmultiqueue.c:
+	* plugins/elements/gstmultiqueue.h:
+	  multiqueue: Rename percent/percent_changed to buffering_percent(_changed)
+	  This is a prerequisite for subsequent commits, and makes queue2 and
+	  multiqueue code a little more consistent.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770628
+
+2016-08-23 14:57:33 +0900  Edward Hervey <edward@centricular.com>
+
+	* plugins/elements/gstmultiqueue.c:
+	  multiqueue: Fix high_time wakeup logic
+	  When calculating the high_time, cache the group value in each singlequeue.
+	  This fixes the issue by which wake_up_next_non_linked() would use the global
+	  high-time to decide whether to wake-up a waiting thread, instead of the group
+	  one, resulting in those threads constantly spinning.
+	  Tidy up a bit the waiting logic while we're at it.
+	  With this patch, we go from 212% playing a 8 audio / 8 video file down to less
+	  than 10% (most of it being the video decoding).
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770225
+
+2016-08-28 16:02:14 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-inspect.c:
+	  tools: gst-inspect: don't print internal pad request function name
+	  This just confuses people, they look at it and try to call it
+	  directly by name, instead of using the public GstElement API.
+	  It stands to reason that it goes without saying that when an
+	  element provides request pads that they can actually be
+	  requested using the standard API, and there's no point in
+	  printing internal implementation details of the element.
+
+2016-08-23 13:27:58 -0300  Thibault Saunier <tsaunier@gnome.org>
+
+	* libs/gst/base/gstbaseparse.c:
+	* libs/gst/base/gstbasesink.c:
+	* libs/gst/base/gstbasesrc.c:
+	* plugins/elements/gstdownloadbuffer.c:
+	* plugins/elements/gstmultiqueue.c:
+	* plugins/elements/gstqueue.c:
+	* plugins/elements/gstqueue2.c:
+	* plugins/elements/gsttypefindelement.c:
+	  Make use of the new GST_ELEMENT_FLOW_ERROR API all around.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770158
+
+2016-08-23 13:27:20 -0300  Thibault Saunier <tsaunier@gnome.org>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstelement.h:
+	  element: Add API to more easily post messages about flowing issues
+	  In many parts of the code we raise streaming error when the flow
+	  goes wrong, and each time we create more or less similare error
+	  message. Also that message does not let the application know what
+	  has actually gone wrong. In the new API we add a "flow-return" detail
+	  field inside the GstMessage so that the application has all the information
+	  if it needs it.
+	  API:
+	  GST_ELEMENT_FLOW_ERROR
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770158
+
+2016-08-26 19:27:22 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* configure.ac:
+	* gst/gstconfig.h.in:
+	* meson.build:
+	  gstconfig: Decide GST_EXPORT declaration style at build time
+	  We only use GST_EXPORT consistently when building with MSVC by using the
+	  visual studio definitions files (win32/common/*.def), so always disable
+	  it when building with Autotools and only enable it with Meson when
+	  building with MSVC.
+	  This allows you to use MinGW to link to a GStreamer built with MSVC and
+	  get the correct function prototypes to find functions and variables in
+	  DLLs.
+
+2016-08-26 16:21:30 +0900  Wonchul Lee <wonchul.lee@collabora.com>
+
+	* docs/design/part-stream-selection.txt:
+	  docs: fix typo in stream selection docs
+	  https://bugzilla.gnome.org//show_bug.cgi?id=770428
+
+2016-08-26 12:55:04 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstelement.c:
+	* gst/gstelement.h:
+	* win32/common/libgstreamer.def:
+	  element: rename gst_element_message_new_details() to gst_make_element_message_details()
+	  Fixes g-i warning "Gst: Constructor return type mismatch
+	  symbol='gst_element_message_new_details' constructed='Gst.Element'
+	  return='Gst.Structure'".
+	  This is a newly-added function in git that has not been in a stable
+	  release yet, so it's fine to rename it. It's also only used indirectly
+	  via macros.
+
+2016-08-26 12:35:23 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstelement.c:
+	* gst/gstmessage.c:
+	* gst/gsttracerutils.c:
+	  docs: fix various gtk-doc warnings
+	  e.g. "warning: multi-line since docs found"
+
+2016-08-26 12:04:33 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstinfo.c:
+	  g-i: info: allow passing NULL to gst_debug_remove_log_function()
+	  Useful for removing the default handler from bindings.
+
+2016-08-25 15:04:06 -0300  Thibault Saunier <tsaunier@gnome.org>
+
+	* docs/gst/meson.build:
+	* docs/libs/meson.build:
+	* meson.build:
+	  meson: doc: Fix building documentation when using subprojects
+	  and check the presence of gtk-doc before building the documentation
+
+2016-08-26 03:17:41 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstvalue.c:
+	* tests/check/gst/gstvalue.c:
+	  value: Implement can_intersect for GstFlagSet types
+	  Make sure that gst_value_can_intersect returns TRUE
+	  for GstFlagSet combinations that can successfully
+	  intersect
+
+2016-08-03 15:20:20 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* plugins/elements/gstqueue2.c:
+	* plugins/elements/gstqueue2.h:
+	* tests/check/elements/queue2.c:
+	  queue2: Add higher-resolution low/high-watermark properties
+	  low/high-watermark are of type double, and given in range 0.0-1.0. This
+	  makes it possible to set low/high watermarks with greater resolution,
+	  which is useful with large queue2 max sizes and watermarks like 0.5%.
+	  Also adding a test to check the fill and watermark level behavior.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769449
+
+2016-08-03 15:27:40 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* plugins/elements/gstqueue2.c:
+	  queue2: Distinguish between buffering percentage and buffering level
+	  To make the code clearer, and to facilitate future improvements, introduce
+	  a distinction between the buffering level and the buffering percentage.
+	  Buffering level: the queue's current fill level. The low/high watermarks
+	  are in this range.
+	  Buffering percentage: percentage relative to the low/high watermarks
+	  (0% = low watermark, 100% = high watermark).
+	  To that end, get_buffering_percent() is renamed to get_buffering_level(),
+	  and the code at the end that transforms to the buffering percentage is
+	  factored out into a new convert_to_buffering_percent() function. Also,
+	  the buffering level range is parameterized by adding a new constant called
+	  MAX_BUFFERING_LEVEL.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769449
+
+2016-08-23 10:52:32 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/random/release:
+	  docs: release: add tag signing command
+
+2016-07-07 08:01:24 +0200  Arjen Veenhuizen <arjen.veenhuizen@tno.nl>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstbuffer.c:
+	* gst/gstbuffer.h:
+	* win32/common/libgstreamer.def:
+	  buffer: add explicit getters and setters for buffer flags
+	  These can be used from bindings.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768301
+
+2016-08-22 00:01:46 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/check/meson.build:
+	  meson: install libgstcheck-1.0 and add api version to name
+
+2016-08-20 08:54:27 +0900  Hoonhee Lee <hoonhee.lee@lge.com>
+
+	* gst/gststreams.c:
+	  streams: update and emit notify signal only if taglist actually changed
+	  https://bugzilla.gnome.org/show_bug.cgi?id=770161
+
+2016-08-12 20:25:17 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* .gitignore:
+	* config.h.meson:
+	* docs/gst/meson.build:
+	* docs/libs/meson.build:
+	* docs/meson.build:
+	* gst/build_mkenum.py:
+	* gst/meson.build:
+	* gst/parse/gen_grammar.py.in:
+	* gst/parse/gen_lex.py.in:
+	* gst/parse/meson.build:
+	* gst/printf/meson.build:
+	* libs/gst/base/meson.build:
+	* libs/gst/check/libcheck/meson.build:
+	* libs/gst/check/meson.build:
+	* libs/gst/controller/meson.build:
+	* libs/gst/helpers/meson.build:
+	* libs/gst/meson.build:
+	* libs/gst/net/meson.build:
+	* libs/meson.build:
+	* meson.build:
+	* meson_options.txt:
+	* pkgconfig/meson.build:
+	* plugins/elements/meson.build:
+	* plugins/meson.build:
+	* po/meson.build:
+	* tests/benchmarks/meson.build:
+	* tests/check/meson.build:
+	* tests/examples/adapter/meson.build:
+	* tests/examples/controller/meson.build:
+	* tests/examples/helloworld/meson.build:
+	* tests/examples/memory/meson.build:
+	* tests/examples/meson.build:
+	* tests/examples/netclock/meson.build:
+	* tests/examples/ptp/meson.build:
+	* tests/examples/stepping/meson.build:
+	* tests/examples/streamiddemux/meson.build:
+	* tests/examples/streams/meson.build:
+	* tests/meson.build:
+	* tests/misc/meson.build:
+	* tools/meson.build:
+	  Add support for Meson as alternative/parallel build system
+	  https://github.com/mesonbuild/meson
+	  With contributions from:
+	  Tim-Philipp Müller <tim@centricular.com>
+	  Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
+	  Jussi Pakkanen <jpakkane@gmail.com> (original port)
+	  Highlights of the features provided are:
+	  * Faster builds on Linux (~40-50% faster)
+	  * The ability to build with MSVC on Windows
+	  * Generate Visual Studio project files
+	  * Generate XCode project files
+	  * Much faster builds on Windows (on-par with Linux)
+	  * Seriously fast configure and building on embedded
+	  ... and many more. For more details see:
+	  http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
+	  http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html
+	  Building with Meson should work on both Linux and Windows, but may
+	  need a few more tweaks on other operating systems.
+
+2016-08-13 13:55:15 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/Makefile.am:
+	* pkgconfig/gstreamer.pc.in:
+	  Move gstconfig.h back to normal include dir
+	  Now that it's arch-independent again. Will need fixes in cerbero too.
+
+2016-06-21 18:59:49 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* configure.ac:
+	* gst/gstconfig.h.in:
+	  gstconfig.h: Detect unaligned access support at compile-time
+	  This makes gstconfig.h completely arch-independent. Should cover all
+	  compilers that gstreamer is known to build on, and all architectures
+	  that I could find information on. People are encouraged to file bugs if
+	  their platform/arch is missing.
+
+2016-08-13 09:55:46 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* Makefile.am:
+	* configure.ac:
+	* docs/gst/gstreamer-sections.txt:
+	* gst/Makefile.am:
+	* gst/gst.c:
+	* gst/gstclock.c:
+	* gst/gstconfig.h.in:
+	* gst/gstminiobject.c:
+	* gst/gstobject.c:
+	* gst/gsttrace.c:
+	* gst/gsttrace.h:
+	* po/POTFILES.in:
+	* tests/check/Makefile.am:
+	* win32/common/gstconfig.h:
+	* win32/common/libgstreamer.def:
+	  Remove old alloc tracing code now that we have a GstTracer-based replacement
+	  It's been internal API only in 1.x.
+
+2016-08-12 16:15:25 +0200  Edward Hervey <edward@centricular.com>
+
+	* plugins/elements/gstqueue2.c:
+	  queue2: Post buffering messages earlier in ringbuffer mode
+	  In ringbuffer mode we need to make sure we post buffering messages *before*
+	  blocking to wait for data to be drained.
+	  Without this, we would end up in situations like this:
+	  * pipeline is pre-rolling
+	  * Downstream demuxer/decoder has pushed data to all sinks, and demuxer thread
+	  is blocking downstream (i.e. not pulling from upstream/queue2).
+	  * Therefore pipeline has pre-rolled ...
+	  * ... but queue2 hasn't filled up yet, therefore the application waits for
+	  the buffering 100% messages before setting the pipeline to PLAYING
+	  * But queue2 can't post that message, since the 100% message will be posted
+	  *after* there is room available for that last buffer.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769802
+
+2016-08-08 16:42:06 +0200  Josep Torra <n770galaxy@gmail.com>
+
+	* plugins/elements/gstmultiqueue.c:
+	  multiqueue: removed redundant call to g_thread_self
+	  Remove an unneeded call to g_thread_self and minor coding style fix.
+
+2016-03-16 18:00:15 +1100  Jan Schmidt <jan@centricular.com>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: Handle stream-group-done
+	  Handle the new stream-group-done message to unblock pads which
+	  are waiting for the running time to advance on that group.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768995
+
+2016-03-14 14:20:42 +1100  Jan Schmidt <jan@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstevent.c:
+	* gst/gstevent.h:
+	* gst/gstpad.c:
+	* gst/gstquark.c:
+	* gst/gstquark.h:
+	* tests/check/gst/gstevent.c:
+	* win32/common/libgstreamer.def:
+	  events: Implement the stream-group-done event
+	  A new event which precedes EOS in situations where we
+	  need downstream to unblock any pads waiting on a stream
+	  before we can send EOS. E.g, decodebin draining a chain
+	  so it can switch pads.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768995
+
+2016-07-25 11:22:36 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstmessage.c:
+	* gst/gstmessage.h:
+	* gst/gstquark.c:
+	* gst/gstquark.h:
+	* tests/check/gst/gstmessage.c:
+	* win32/common/libgstreamer.def:
+	  message: Add redirect message
+	  Redirection messages are already used in fragmented sources and in
+	  uridecodebin, so it makes sense to introduce these as an official message
+	  type.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=631673
+
+2016-07-25 19:15:15 +1000  Jan Schmidt <jan@centricular.com>
+
+	* plugins/elements/gstinputselector.c:
+	  inputselector: Wake other pads when selected goes EOS
+	  Other pads that are waiting for the stream on the selected
+	  pad to advance before they finish waiting themselves
+	  should be given the chance to do so when the selected pad
+	  goes EOS. Fixes problems where input streams can end up
+	  waiting forever if the active stream goes EOS earlier than
+	  their own end time.
+
+2016-07-24 01:35:41 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstelement.h:
+	  element: fix GST_ELEMENT_ERROR() error code expansion
+	  In some corner cases, the error 'code' part passed to
+	  GST_ELEMENT_ERROR() is a valid define as well, in which
+	  case it won't survive two levels of macro expansion, but
+	  only one. Fixes:
+	  oss4-sink.c: In function ‘gst_oss4_sink_open’:
+	  error: ‘GST_RESOURCE_ERROR_0x00000002’ undeclared (first use in this function)
+	  GST_ ## domain ## _ERROR_ ## code, __txt, __dbg, __FILE__,
+	  which is from GST_ELEMENT_ERROR(el,RESOURCE,OPEN_WRITE,..)
+	  and OPEN_WRITE happens to be defined to 2 here.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=756806
+	  https://bugzilla.gnome.org/show_bug.cgi?id=769117
+
+2016-07-22 17:32:33 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstmessage.c:
+	  message: fix some nonsensical annotations
+
+2016-07-22 15:25:09 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* docs/gst/gstreamer-sections.txt:
+	  docs: add GST_ELEMENT_*_WITH_DETAILS to doc list
+
+2016-07-22 15:04:58 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* docs/gst/gstreamer-sections.txt:
+	  docs: list new message details apis where they seem to belong
+
+2016-07-22 14:59:56 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* win32/common/libgstreamer.def:
+	  libgstreamer.def: fix mentions of new message details api
+	  I had not updated it after the review changes
+
+2016-03-02 11:22:23 +0000  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* gst/gstelement.c:
+	* gst/gstelement.h:
+	* gst/gstmessage.c:
+	* gst/gstmessage.h:
+	* tests/check/gst/gstmessage.c:
+	* win32/common/libgstreamer.def:
+	  message: new API for additional custom data to error messages
+	  https://bugzilla.gnome.org/show_bug.cgi?id=756806
+
+2016-07-20 12:22:10 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* plugins/tracers/gstleaks.c:
+	* plugins/tracers/gstleaks.h:
+	  tracers: leaks: update type filter later for unknown types
+	  This allow us to filter using an object type which is implemented
+	  by a plugin like, say, GstGtkGLSink.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768989
+
+2016-07-19 14:45:53 +0200  Aurélien Zanelli <aurelien.zanelli@parrot.com>
+
+	* libs/gst/base/gstcollectpads.c:
+	  collectpads: add g-i transfer annotations to peek/pop/read_buffer/take_buffer functions
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768948
+
+2016-07-19 23:18:24 +1000  Jan Schmidt <jan@centricular.com>
+
+	* tests/check/libs/gstnetclientclock.c:
+	  tests: Use gst_clock_wait_for_sync () for net client clock
+	  Instead of looping, use the gst_clock_wait_for_sync() function
+	  to give clocks up to 1 second to synchronise
+
+2016-07-13 15:43:21 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gstmessage.c:
+	  message: fix annotation of parse_stream_{collection,streams_selected}
+	  gst_structure_id_get() returns a new reference so the returned object is
+	  actually (transfer full).
+	  The unit tests was already unreffing the objects.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768776
+
+2016-07-13 15:43:21 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gstdevicemonitor.c:
+	* gst/gstmessage.c:
+	  message: fix annotation of parse_device_{added,removed}
+	  gst_structure_id_get() returns a new reference so the returned device is
+	  actually (transfer full).
+	  The code using this API was already correct but the code example in
+	  comments was not.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768776
+
+2016-07-14 16:40:22 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gstpad.c:
+	  pad: add g-i transfer annotatation to _store_sticky_event()
+	  For clarity.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768810
+
+2016-07-12 12:32:56 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasesrc.c:
+	  basesrc: Fix automatic-eos=false mode if a segment.stop is given
+	  If segment.stop was given, and the subclass provides a size that might be
+	  smaller than segment.stop and also smaller than the actual size, we would
+	  already stop there.
+	  Instead try reading up to segment.stop, the goal is to ignore the (possibly
+	  inaccurate) size the subclass gives and finish until segment.stop or when the
+	  subclass tells us to stop.
+
+2016-07-11 21:13:28 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* common:
+	  Automatic update of common submodule
+	  From f363b32 to f49c55e
+
+2016-07-11 18:45:49 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* tests/benchmarks/capsnego.c:
+	  benchmarks: Fix potential stack corruption in capsnego test
+	  flavour_str is a non-const pointer that will be written to if the -f
+	  option is passed
+
+2016-07-11 11:34:02 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* plugins/tracers/gstleaks.c:
+	  leaks: check return values of libunwind calls
+
+2016-07-11 09:58:47 +0200  Edward Hervey <edward@centricular.com>
+
+	* plugins/elements/gstqueue2.c:
+	  queue2: Fix average input rate calculation on small input range
+	  When dealing with small-ish input data coming into queue2, such as
+	  adaptivedemux fragments, we would never take into account the last
+	  <200ms of data coming in.
+	  The problem is that usually on TCP connection the download rate
+	  gradually increases (i.e. the rate is lower at the beginning of a
+	  download than it is later on). Combined with small download time (less
+	  than a second) we would end up with a computed average input rate
+	  which was sometimes up to 30-50% off from the *actual* average input
+	  rate for that fragment.
+	  In order to fix this, force the average input rate calculation when
+	  we receive an EOS so that we take into account that final window
+	  of data.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768649
+
+2016-07-08 16:31:56 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gstminiobject.c:
+	  miniobject: weak_unref: display the pointer of the object if failing
+	  That's generally the most useful information to help debugging the
+	  problem.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768579
+
+2016-07-08 16:29:38 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gstbin.c:
+	  bin: properly display the type of the removed message
+	  Makes debugging easier.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768579
+
+2016-07-08 17:46:06 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstelement.c:
+	  element: re-create threadpool after cleaning up tasks
+	  We don't free this from gst_deinit() but from gst_task_cleanup_all(),
+	  so more GStreamer API may be called. In particular makes unit tests
+	  work again with CK_FORK=no.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768577
+
+2016-07-08 16:53:51 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* plugins/tracers/gstleaks.c:
+	* plugins/tracers/gstleaks.h:
+	  leaks: warn if object is destroyed while the tracer is disposing
+	  This should not happen and generally means some thread is still running.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768578
+
+2016-07-08 16:36:01 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gst_private.h:
+	* gst/gstelement.c:
+	* gst/gsttask.c:
+	  element: clean up thread pool from gst_task_cleanup_all()
+	  This ensures that all async operations (started from gst_element_call_async())
+	  have been completed and so there is no extra thread running.
+	  Fix races when checking for leaks on unit tests as some of those
+	  operations were still running when the leaks tracer was checking for
+	  leaked objects.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768577
+
+2016-07-08 11:15:06 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* configure.ac:
+	* plugins/tracers/gstleaks.c:
+	  leaks tracer: use G_OS_UNIX to check for signal support
+	  Checking for signal.h is not good enough as it's present in Windows.
+	  Those signals are UNIX specific anyway.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767857
+
+2016-06-22 16:25:16 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* configure.ac:
+	* docs/design/part-tracing.txt:
+	* plugins/tracers/Makefile.am:
+	* plugins/tracers/gstleaks.c:
+	* plugins/tracers/gstleaks.h:
+	  leaks tracer: add creation stack trace support
+	  This allow us to provide the trace of leaked objects making it easier
+	  to debug.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767862
+
+2016-06-01 11:08:39 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* docs/design/part-tracing.txt:
+	* plugins/tracers/gstleaks.c:
+	* plugins/tracers/gstleaks.h:
+	  leaks tracer: add checkpoint support using SIGUSR2
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767857
+
+2016-05-31 16:56:26 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* configure.ac:
+	* docs/design/part-tracing.txt:
+	* plugins/tracers/gstleaks.c:
+	  leaks tracer: log alive objects when receiving SIGUSR1
+	  We don't want to automatically catch signals so use an env variable to
+	  enable this feature.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767857
+
+2016-07-07 13:15:51 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* plugins/elements/gstfunnel.c:
+	  funnel: Only forward sticky events on GAP events if needed
+	  That is, if the active pad changed and if forwarding of sticky events is
+	  requested at all. We otherwise forward events too often.
+
+2016-07-05 16:50:16 +0200  Miguel París Díaz <mparisdiaz@gmail.com>
+
+	* gst/gstpad.c:
+	  pad: check query caps answered and caps not NULL
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768450
+
+2016-07-06 13:50:56 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  Back to development
+
+=== release 1.9.1 ===
+
+2016-07-06 13:05:02 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* ChangeLog:
+	* NEWS:
+	* RELEASE:
+	* configure.ac:
+	* docs/plugins/gstreamer-plugins.hierarchy:
+	* docs/plugins/inspect/plugin-coreelements.xml:
+	* gstreamer.doap:
+	* win32/common/config.h:
+	* win32/common/gstenumtypes.c:
+	* win32/common/gstenumtypes.h:
+	* win32/common/gstversion.h:
+	  Release 1.9.1
+
+2016-07-06 11:37:56 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* po/af.po:
 	* po/az.po:
@@ -48,40 +1019,566 @@
 	* po/zh_TW.po:
 	  Update .po files
 
-2016-08-12 16:15:25 +0200  Edward Hervey <edward@centricular.com>
+2016-07-06 10:17:37 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* po/da.po:
+	* po/hr.po:
+	* po/pt_BR.po:
+	* po/sk.po:
+	  po: Update translations
+
+2016-07-05 12:17:18 +0200  Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: Don't add calculated bitrates until threshold
+	  Waiting before posting calculated bitrates seems to be the
+	  intent of the code, so avoid adding them to the tag list
+	  pushed with the first frame.
+	  When the threshold is reached, gst_base_parse_update_bitrates
+	  sets tags_changed, so this posts the calculated ones right
+	  that moment.
+	  This prevents an insane average calculated from just the
+	  first (key) frame from getting posted.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768439
+
+2016-07-04 10:00:38 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: Make sure to not create an invalid event order when generating the default CAPS event because of a GAP event
+	  There must be a SEGMENT event before the GAP event, and SEGMENT events must
+	  come after any CAPS event. We however did not produce any CAPS yet, so we need
+	  to ensure to insert the CAPS event before the SEGMENT event into the pending
+	  events list.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766970
+
+2016-07-01 22:34:59 +1000  Jan Schmidt <jan@centricular.com>
+
+	* gst/gstinfo.h:
+	  gstinfo: Avoid gcc 6 warning that breaks the tests build
+	  gcc 6 has problems detecting and avoiding throwing
+	  a warning for tautological compares in macros (they
+	  should only trigger for compares outside macros).
+	  Avoid them with a nasty cast of one parameter to void *
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764526
+
+2016-07-01 09:44:12 +0200  Edward Hervey <edward@centricular.com>
+
+	* plugins/elements/gstmultiqueue.c:
+	  multiqueue: Fix behaviour with not-linked and eos pads
+	  This is an update on c9b6848885f4675d447e823c8fb117e247658252
+	  multiqueue: Fix not-linked pad handling at EOS
+	  While that commit did fix the behaviour if upstream sent a GST_EVENT_EOS,
+	  it would break the same issue when *downstream* returns GST_FLOW_EOS
+	  (which can happen for example when downstream decoders receive data
+	  from after the segment stop).
+	  GST_PAD_IS_EOS() is only TRUE when a GST_EVENT_EOS has flown through it
+	  and not when a GST_EVENT_EOS has gone through it.
+	  In order to handle both cases, also take into account the last flow
+	  return.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763770
+
+2016-06-30 15:07:28 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstevent.c:
+	* gst/gstevent.h:
+	* gst/gstmessage.c:
+	* gst/gstmessage.h:
+	* gst/gststreamcollection.c:
+	* gst/gststreamcollection.h:
+	* gst/gststreams.c:
+	* gst/gstutils.c:
+	  streams: sprinkle some Since: markers for docs
+
+2016-06-30 14:37:17 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstmultiqueue.c:
+	  multiqueue: add gtk-doc blurb for new pad property
+
+2016-02-10 11:42:04 +0100  Edward Hervey <edward@centricular.com>
+
+	* plugins/elements/gstmultiqueue.c:
+	* plugins/elements/gstmultiqueue.h:
+	  multiqueue: Add a pad property to "group" streams
+	  When syncing by running time, multiqueue will throttle unlinked streams
+	  based on a global "high-time" and the pending "next_time" of a stream.
+	  The idea is that we don't want unlinked streams to be "behind" the global
+	  running time of linked streams, so that if/when they get linked (like when
+	  switching tracks) decoding/playback can resume from the same position as
+	  the other streams.
+	  The problem is that it assumes elements downstream will have a more or less
+	  equal buffering/latency ... which isn't the case for streams of different
+	  type. Video decoders tend to have higher latency (and therefore consume more
+	  from upstream to output a given decoded frame) compared to audio ones, resulting
+	  in the computed "high_time" being at the position of the video stream,
+	  much further than the audio streams.
+	  This means the unlinked audio streams end up being quite a bit after the linked
+	  audio streams, resulting in gaps when switching streams.
+	  In order to mitigate this issue, this patch adds a new "group-id" pad property
+	  which allows users to "group" streams together. Calculating the high-time will
+	  now be done not only globally, but also per group. This ensures that within
+	  a given group unlinked streams will be throttled by that group's high-time
+	  instead.
+	  This fixes gaps when switching downstream elements (like switching audio tracks).
+
+2015-06-12 10:53:23 +0200  Edward Hervey <edward@centricular.com>
+
+	* docs/design/part-stream-selection.txt:
+	* docs/gst/gstreamer-docs.sgml:
+	* docs/gst/gstreamer-sections.txt:
+	* gst/Makefile.am:
+	* gst/gst.c:
+	* gst/gst.h:
+	* gst/gstevent.c:
+	* gst/gstevent.h:
+	* gst/gstmessage.c:
+	* gst/gstmessage.h:
+	* gst/gstquark.c:
+	* gst/gstquark.h:
+	* gst/gststreamcollection.c:
+	* gst/gststreamcollection.h:
+	* gst/gststreams.c:
+	* gst/gststreams.h:
+	* gst/gstutils.c:
+	* gst/gstutils.h:
+	* tests/check/Makefile.am:
+	* tests/check/gst/.gitignore:
+	* tests/check/gst/gstevent.c:
+	* tests/check/gst/gstmessage.c:
+	* tests/check/gst/gststream.c:
+	* tests/check/gst/gststream.h:
+	* win32/common/libgstreamer.def:
+	  gst: New Stream listing/selection system
+	  * GstStream
+	  * GstStreamCollection
+	  * GST_EVENT_SELECT_STREAMS
+	  * GST_MESSAGE_STREAM_COLLECTION
+
+2016-06-29 23:24:02 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbufferpool.c:
+	* gst/gstbus.c:
+	* gst/gstpoll.c:
+	  poll: #define EWOULDBLOCK to EAGAIN if it's not defined on Windows
+
+2016-06-29 14:05:18 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbufferpool.c:
+	  bufferpool: Fix handling of the GstPoll
+	  Especially if multiple threads are waiting for buffers to be available again,
+	  the current code was wrong. Fix this and document clearly how the GstPoll is
+	  supposed to be used.
+	  Also fix some potential races with reading from the GstPoll before writing
+	  actually happened.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767979
+
+2016-06-29 14:02:55 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbus.c:
+	  bus: Make sure to always read the control after popping a message
+	  It might happen that we popped the message before writing of the control
+	  happened. In this case we just have to retry again a bit later, and failure to
+	  do so will cause an additional byte in the control and the GSource /
+	  gst_poll_wait() to always wake up again immediately.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750397
+
+2016-06-29 13:37:28 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstsystemclock.c:
+	  systemclock: Improve GstPoll handling and don't check for impossible errno values
+	  Also just read/write control every time, GstPoll is optimized by itself
+	  already to only do I/O if switching between empty and one byte.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750397
+
+2016-06-29 13:35:35 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpoll.c:
+	  poll: Clarify when FALSE is returned from read/write_control()
+	  And also mention what the expected values of errno are going to be.
+	  write_control() will only ever return FALSE if there was a critical error. It
+	  will never return because of EINTR, EAGAIN or EWOULDBLOCK.
+	  read_control() will return FALSE if there was no byte to read, in which case
+	  errno would be EWOULDBLOCK.
+	  In all other cases there was a critical error.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750397
+
+2016-06-29 13:26:57 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpoll.c:
+	  poll: set_controllable(), restart() and set_flushing() are only valid for non-timer GstPolls
+	  On timer GstPolls it will cause the control socket state to become
+	  inconsistent as now one less read_control() than write_control() be would
+	  needed.
+	  Similarly, read_control() and write_control() are only valid on timer
+	  GstPolls.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750397
+
+2016-06-29 13:11:01 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpoll.h:
+	  poll: Warn if the return value of gst_poll_read_control() is unused
+	  This might fail even under correct usage, e.g. if read_control() is called
+	  from another thread before write_control() finished in another. It has to be
+	  retried then, or other measures have to be taken, depending on how it is used
+	  by the surrounding code.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750397
+
+2016-06-29 18:57:42 +0200  Matthew Gruenke <mgruenke@tycoint.com>
+
+	* gst/gstpoll.c:
+	  poll: Fix various race conditions with read_control() and write_control()
+	  This addresses slightly different race conditions on Linux and Windows, and
+	  fixes gst_poll_read_control() when control_pending == 0.
+	  On Linux, the socketpair() used for control should not be made O_NONBLOCK.
+	  If there's any propagation delay between set->control_write_fd.fd and
+	  set->control_read_fd.fd, even the mutex now held will not be sufficient to
+	  prevent a race condition.  There's no benefit to using O_NONBLOCK, here.
+	  Only liabilities.
+	  For Windows, it's necessary to fix the race condition between testing
+	  set->control_pending and performing WAKE_EVENT()/RELEASE_EVENT().  This is
+	  accomplished by acquiring and holding set->lock, for both of these operations.
+	  We could optimize the Linux version by making this Windows-specific.
+	  For consistency with the Linux implementation, Windows' RELEASE_EVENT()
+	  has also been made to block, although it should never happen.
+	  Also, changed release_wakeup() to return TRUE and decrement control_pending
+	  only when > 0.  Furthermore, RELEASE_EVENT() is called only when
+	  control_pending == 1.
+	  Finally, changed control_pending to use normal, non-atomic arithmetic
+	  operations, since it's now protected by set->lock.
+	  Note: even though the underlying signaling mechanisms are blocking,
+	  release_wakeup() is effectively non-blocking, as it will only attempt to read
+	  from control_read_fd.fd after a byte has been written to control_write_fd.fd
+	  or WaitForSingleObject() after it's been signaled.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=750397
+
+2016-06-28 15:01:17 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gstbus.c:
+	  bus: chain up GObject::constructed() to the parent class' implementation
+	  Needed so GstBus can be tracked by the leaks tracer.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=768141
+
+2016-06-24 05:26:09 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* gst/gstconfig.h.in:
+	  gstconfig.h: Don't use extern with dllexport
+	  GCC emits an error for this with -Werror:
+	  plugin.c:22:1: error: 'gst_plugin_desc' initialized and declared 'extern' [-Werror]
+	  This matches how glib does symbol exporting.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767463
+
+2016-06-21 19:49:15 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
+
+	* configure.ac:
+	* gst/gstconfig.h.in:
+	  win32: Don't use dllexport/import when only building statically
+	  If the prototypes in the public API have dllimport in them when building
+	  statically on Windows, the compiler will look for symbols with symbol
+	  mangling and indirection corresponding to a DLL. This will cause a build
+	  failure when trying to link tests/examples/etc.
+	  External users of GStreamer also need to define -DGST_STATIC_COMPILATION
+	  if they want to link to static gstreamer libraries on Windows.
+	  A similar version of this patch has been committed to all gstreamer
+	  repositories.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767463
+
+2016-06-21 11:45:26 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* common:
+	  Automatic update of common submodule
+	  From ac2f647 to f363b32
+
+2016-06-15 16:24:27 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* tests/check/elements/queue2.c:
+	  tests: add a test for small ring buffer sizes
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767688
+
+2016-06-15 13:43:59 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
 
 	* plugins/elements/gstqueue2.c:
-	  queue2: Post buffering messages earlier in ringbuffer mode
-	  In ringbuffer mode we need to make sure we post buffering messages *before*
-	  blocking to wait for data to be drained.
-	  Without this, we would end up in situations like this:
-	  * pipeline is pre-rolling
-	  * Downstream demuxer/decoder has pushed data to all sinks, and demuxer thread
-	  is blocking downstream (i.e. not pulling from upstream/queue2).
-	  * Therefore pipeline has pre-rolled ...
-	  * ... but queue2 hasn't filled up yet, therefore the application waits for
-	  the buffering 100% messages before setting the pipeline to PLAYING
-	  * But queue2 can't post that message, since the 100% message will be posted
-	  *after* there is room available for that last buffer.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=769802
+	  queue2: fix crash deleting current region for small ring buffers
+	  Ensure we do not attempt to destroy the current range. Doing so
+	  causes the current one to be left dangling, and it may be dereferenced
+	  later, leading to a crash.
+	  This can happen with a very small queue2 ring buffer (10000 bytes)
+	  and 4 kB buffers.
+	  repro case:
+	  gst-launch-1.0 fakesrc sizetype=2 sizemax=4096 ! \
+	  queue2 ring-buffer-max-size=1000 ! fakesink sync=true
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767688
 
-2016-07-11 09:58:47 +0200  Edward Hervey <edward@centricular.com>
+2016-06-20 11:34:49 +0100  Tim-Philipp Müller <tim@centricular.com>
 
-	* plugins/elements/gstqueue2.c:
-	  queue2: Fix average input rate calculation on small input range
-	  When dealing with small-ish input data coming into queue2, such as
-	  adaptivedemux fragments, we would never take into account the last
-	  <200ms of data coming in.
-	  The problem is that usually on TCP connection the download rate
-	  gradually increases (i.e. the rate is lower at the beginning of a
-	  download than it is later on). Combined with small download time (less
-	  than a second) we would end up with a computed average input rate
-	  which was sometimes up to 30-50% off from the *actual* average input
-	  rate for that fragment.
-	  In order to fix this, force the average input rate calculation when
-	  we receive an EOS so that we take into account that final window
-	  of data.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=768649
+	* tests/check/gst/gstobject.c:
+	  tests: gstobject: fix typo in test name
+
+2016-06-16 14:08:01 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* docs/design/part-tracing.txt:
+	  docs/design/part-tracing: fix reference to renamed func
+
+2016-06-08 12:34:53 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* plugins/elements/gsttee.c:
+	  tee: Properly handle return value when only 1 pad
+	  This patch handle the case when you have 1 pad (so the fast path is
+	  being used) but this pad is removed. If we are in allow-not-linked, we
+	  should return GST_FLOW_OK, otherwise, we should return GST_FLOW_UNLINKED
+	  and ignore the meaningless return value obtained from pushing.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=767413
+
+2016-06-16 15:52:16 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* scripts/gst-plot-traces.sh:
+	  gst-plot-traces.sh: add a script to plot gst-tracer graphs
+	  The script extracts cpu-usage data from a tracelog and plots it via gnuplot.
+
+2016-06-15 16:12:23 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstdevice.c:
+	  device: Fix typo
+	  paramater -> parameter
+
+2016-06-14 19:16:33 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstinfo.h:
+	  info: flesh out GST_PTR_FORMAT docs a bit
+
+2016-06-13 18:33:27 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: Update start time when losing state only if we were in PLAYING
+	  If we were in PAUSED, the current clock time and base time don't have much to
+	  do with the running time anymore as the clock might have advanced while we
+	  were PAUSED. The system clock does that for example, audio clocks often don't.
+	  Updating the start time in PAUSED will cause a) the wrong position to be
+	  reported, b) step events to step not just the requested amount but the amount
+	  of time we spent in PAUSED. The start time should only ever be updated when
+	  going from PLAYING to PAUSED to remember the current running time (to be able
+	  to compensate later when going to PLAYING for the clock time advancing while
+	  PAUSED), not when we are already in PAUSED.
+	  Based on a patch by Kishore Arepalli <kishore.arepalli@gmail.com>
+	  The updating of the start time when the state is lost was added in commit
+	  ba943a82c0bbfd17c9ee9f5068d44c9d9274fd13 to fix the position reporting when
+	  the state is lost. This still works correctly after this change.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=739289
+
+2016-06-11 22:18:06 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstpad.c:
+	  pad: Log pad offsets as signed times
+
+2016-06-11 21:56:19 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/gst/gstpad.c:
+	  pad: Also check the number of segment events and if other serialized events and queries trigger segment updating too
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765049
+
+2016-06-11 21:37:47 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/gst/gstpad.c:
+	  pad: Add unit test for pad offset handling on src pads
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765049
+
+2016-06-07 11:32:47 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/base/gstadapter.c:
+	* libs/gst/base/gstadapter.h:
+	* tests/check/libs/adapter.c:
+	* win32/common/libgstbase.def:
+	  adapter: Rename functions and implement new functions, update test
+	  We don't do calculations with different units (buffer offsets and bytes)
+	  anymore but have functions for:
+	  1) getting the number of bytes since the last discont
+	  2) getting the offset (and pts/dts) at the last discont
+	  and the previously added function to get the last offset and its distance from
+	  the current adapter position.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766647
+
+2016-05-19 10:31:02 +0200  Edward Hervey <edward@centricular.com>
+
+	* docs/libs/gstreamer-libs-sections.txt:
+	* libs/gst/base/gstadapter.c:
+	* libs/gst/base/gstadapter.h:
+	* tests/check/libs/adapter.c:
+	* win32/common/libgstbase.def:
+	  adapter: Add methods to query current offset
+	  API: gst_buffer_prev_offset
+	  API: gst_buffer_get_offset_from_discont
+	  The gst_buffer_get_offset_from_discont() method allows retrieving the current
+	  offset based on the GST_BUFFER_OFFSET of the buffers that were pushed in.
+	  The offset will be set initially by the GST_BUFFER_OFFSET of
+	  DISCONT buffers, and then incremented by the sizes of the following
+	  buffers.
+	  The gst_buffer_prev_offset() method allows retrievent the previous
+	  GST_BUFFER_OFFSET regardless of flags. It works in the same way as
+	  the other gst_buffer_prev_*() methods.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766647
+
+2016-06-09 17:42:13 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstconfig.h.in:
+	  gstconfig.h.in: indent #if #else jungle for better readability
+
+2016-06-08 12:11:19 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstutils.c:
+	* gst/gstutils.h:
+	* win32/common/libgstreamer.def:
+	  utils: Add gst_pad_link_maybe_ghosting() for consistency
+	  We already had a _full() version, but having that alone seems inconsistent.
+	  Add a non-full version that mirrors the behaviour of gst_pad_link() vs
+	  gst_pad_link_full().
+
+2016-05-22 13:10:06 +0200  Edward Hervey <edward@centricular.com>
+
+	* libs/gst/base/gstbaseparse.c:
+	  baseparse: Make sure DISCONT flags are properly propagated
+	  If we drop a frame that contained a discontinuity, we must remember
+	  that for the next frame that *will* be pushed downstream.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766795
+
+2016-06-04 13:31:58 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstdeviceprovider.c:
+	  deviceprovider: remove base_class_finalize function
+	  It's not going to get called anyway.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765540
+
+2016-06-04 13:11:55 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstelement.c:
+	  element: remove base_class_finalize_func which is never called
+	  Won't be called for static types, so no point keeping it around.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765540
+
+2016-06-03 13:55:44 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/tracers/gstleaks.c:
+	  tracers: leaks: some micro-optimisations
+	  - we know number of filter items is not going to change,
+	  but compiler doesn't
+	  - only do GST_IS_TRACER check for GObjects, not mini objects
+	  - use non-type check cast macros in performance critical paths
+
+2016-05-10 09:29:12 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* docs/design/part-tracing.txt:
+	* plugins/tracers/Makefile.am:
+	* plugins/tracers/gstleaks.c:
+	* plugins/tracers/gstleaks.h:
+	* plugins/tracers/gsttracers.c:
+	  tracers: add leaks tracer
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765052
+
+2016-05-30 12:11:13 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gstcaps.c:
+	* gst/gstdeviceproviderfactory.c:
+	* gst/gstelementfactory.c:
+	* gst/gstpadtemplate.c:
+	* gst/gsttask.c:
+	* libs/gst/net/gstnetclientclock.c:
+	  Use MAY_BE_LEAKED_FLAG
+	  This helps having "make check" passing with the leaks tracer enabled.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766008
+
+2016-05-09 16:31:36 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gstminiobject.c:
+	* gst/gstobject.c:
+	* gst/gsttracerutils.c:
+	* gst/gsttracerutils.h:
+	  tracing: add hooks when objects or miniobjects are created and destroyed
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765052
+
+2016-05-09 16:56:56 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gst.c:
+	  gst_deinit: move down tracers cleaning
+	  We want the tracer detecting leaks to be finalized as late as possible
+	  to give the chance to other gst components to be properly cleaned first.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765052
+
+2016-05-10 11:06:42 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/gst/gstplugin.c:
+	  tests: plugin: remove feature refcount assert
+	  This check fails if one, or more, tracers are loaded while running the
+	  test. The new "leaks" tracer will be able to check for leaks anyway.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765052
+
+2016-04-14 12:25:43 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gststructure.c:
+	  tracerrecord: allow G_TYPE_POINTER for field types
+	  Tracers may want to display the address of an object.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765052
+
+2016-05-30 13:42:36 +0200  Stefan Sauer <ensonic@users.sf.net>
+
+	* tests/check/gst/gstobject.c:
+	  gstobject: split up name tests
+	  It is better to have separate tests:
+	  1) the test name will tell what is broekn when the test fails
+	  2) we still run the other tests when one assert fails
+	  3) the tests are easier to understand
+	  4) we don't rely on sie effect of previous actions
+	  5) ...
+	  Also ix the assertion message for the name checks (Gst -> fakeobject).
+
+2016-05-30 02:06:01 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* docs/design/part-tracing.txt:
+	  design: update design doc
+	  Some of the api was renamed before the merge.
+
+2016-05-30 02:04:18 -0700  Stefan Sauer <ensonic@users.sf.net>
+
+	* gst/gstquery.c:
+	  docs: xref the free function and expand allocation query docs
+	  Add xrefs for how to parse pool details from an allocation query.
+
+2016-05-26 14:43:10 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* tests/check/gst/gstobject.c:
+	  object: Add _set_name() test on parented object
+	  This is not allowed, and set_name() should fail.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766923
+
+2016-05-26 14:41:38 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* tests/check/gst/gstobject.c:
+	  object: Check that name change are notified once
+	  GObject allow calling g_object_notify() within set_property() and
+	  won't notify it twice. As it was raised during review, add a unit test to
+	  make sure.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766923
+
+2016-05-26 13:17:37 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+	* gst/gstobject.c:
+	  object: Notify name change when using _set_name()
+	  There was a 0.11 FIXME about notifying the name change or removing that
+	  function. Clearly we can't remove this function, so let's notify it.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766923
+
+2016-05-25 15:30:21 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/gst_private.h:
+	  gst_private: Fix gstconfig include
+	  Since it's a generated header, we need to specify the gst subdir so
+	  that it gets properly included in out-of-dir compilation
+
+2016-05-25 10:48:05 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gst_private.h:
+	  gst: make sure to include gstconfig.h also in gst_private.h
+	  For GST_EXPORT define and also things like GST_DISABLE_REGISTRY.
+	  Hopefully fixes the following build failure on cerbero-cross-mingw32:
+	  helpers/gst-plugin-scanner.c:50: undefined reference to `_imp___gst_disable_registry_cache'
 
 2016-05-24 00:40:27 +0100  Tim-Philipp Müller <tim@centricular.com>
 
@@ -105,178 +1602,87 @@
 	* gst/Makefile.am:
 	  gst: attempt to fix/track-down mysterious gnome-continuous build failures
 
-2016-07-25 19:15:15 +1000  Jan Schmidt <jan@centricular.com>
+2016-05-23 18:00:30 +0100  Tim-Philipp Müller <tim@centricular.com>
 
-	* plugins/elements/gstinputselector.c:
-	  inputselector: Wake other pads when selected goes EOS
-	  Other pads that are waiting for the stream on the selected
-	  pad to advance before they finish waiting themselves
-	  should be given the chance to do so when the selected pad
-	  goes EOS. Fixes problems where input streams can end up
-	  waiting forever if the active stream goes EOS earlier than
-	  their own end time.
+	* gst/gstiterator.c:
+	  iterator: only unset GValue if it was inited
+	  And add some function guards. From GLib 2.48 on it is
+	  allowed to pass an uninitialised GValue to g_value_unset().
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763762
 
-2016-07-05 16:50:16 +0200  Miguel París Díaz <mparisdiaz@gmail.com>
+2016-05-23 18:44:01 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
-	* gst/gstpad.c:
-	  pad: check query caps answered and caps not NULL
-	  https://bugzilla.gnome.org/show_bug.cgi?id=768450
+	* gst/parse/Makefile.am:
+	  gst/parse: Also pass -DGST_EXPORTS here
+	  This static library gets included directly into libgstreamer-1.0.so, so it needs
+	  the same GST_EXPORTS definition as the rest of the code that's compiled into
+	  that otherwise it will try to find the constants it uses from gstinfo via DLL
+	  importing (__declspec(dllimport)).
+	  Fixes https://ci.gstreamer.net/job/cerbero-cross-mingw32/4393/
 
-2016-07-04 10:00:38 +0200  Sebastian Dröge <sebastian@centricular.com>
+2016-05-20 00:24:54 +0530  Nirbheek Chauhan <nirbheek@centricular.com>
 
-	* libs/gst/base/gstbaseparse.c:
-	  baseparse: Make sure to not create an invalid event order when generating the default CAPS event because of a GAP event
-	  There must be a SEGMENT event before the GAP event, and SEGMENT events must
-	  come after any CAPS event. We however did not produce any CAPS yet, so we need
-	  to ensure to insert the CAPS event before the SEGMENT event into the pending
-	  events list.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766970
+	* gst/gstconfig.h.in:
+	  gstconfig.h: Always use dllexport/import on Windows
+	  __declspec(dllexport/import) are supported by GCC and are needed for
+	  properly generating code that fetches the values of constants from DLLs
+	  built with __declspec(dllexport) which happens when anything using
+	  GST_EXPORT is built with MSVC.
+	  See: https://msdn.microsoft.com/en-us/library/619w14ds.aspx
+	  Essentially, if you built gstreamer with MSVC and then tried to use
+	  constants from it (such as GST_TYPE_CAPS) in a plugin, GCC would
+	  retrieve the address of the value instead of the value itself.
 
-2016-06-28 15:01:17 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+2016-05-19 11:27:36 -0300  Danilo Cesar Lemes de Paula <danilo.cesar@collabora.co.uk>
 
-	* gst/gstbus.c:
-	  bus: chain up GObject::constructed() to the parent class' implementation
-	  Needed so GstBus can be tracked by the leaks tracer.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=768141
+	* scripts/git-update.sh:
+	  scripts: make git-update.sh build with all cores available
+	  The git-update.sh now builds with all cores available. In case of
+	  failure it defaults to 1
+	  The developer can still override this by setting -j to something else
+	  in MAKEFLAGS, as stated by 299605dfe2f97fca330161ff01a392e1a85fe422.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766666
 
-2016-06-15 13:43:59 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+2016-05-04 13:53:56 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
 
-	* plugins/elements/gstqueue2.c:
-	  queue2: fix crash deleting current region for small ring buffers
-	  Ensure we do not attempt to destroy the current range. Doing so
-	  causes the current one to be left dangling, and it may be dereferenced
-	  later, leading to a crash.
-	  This can happen with a very small queue2 ring buffer (10000 bytes)
-	  and 4 kB buffers.
-	  repro case:
-	  gst-launch-1.0 fakesrc sizetype=2 sizemax=4096 ! \
-	  queue2 ring-buffer-max-size=1000 ! fakesink sync=true
-	  https://bugzilla.gnome.org/show_bug.cgi?id=767688
+	* gst/gstminiobject.h:
+	* gst/gstobject.h:
+	  (mini)object: add MAY_BE_LEAKED flag
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766008
 
-2016-07-01 09:44:12 +0200  Edward Hervey <edward@centricular.com>
+2016-05-15 14:15:51 +0100  Tim-Philipp Müller <tim@centricular.com>
 
-	* plugins/elements/gstmultiqueue.c:
-	  multiqueue: Fix behaviour with not-linked and eos pads
-	  This is an update on c9b6848885f4675d447e823c8fb117e247658252
-	  multiqueue: Fix not-linked pad handling at EOS
-	  While that commit did fix the behaviour if upstream sent a GST_EVENT_EOS,
-	  it would break the same issue when *downstream* returns GST_FLOW_EOS
-	  (which can happen for example when downstream decoders receive data
-	  from after the segment stop).
-	  GST_PAD_IS_EOS() is only TRUE when a GST_EVENT_EOS has flown through it
-	  and not when a GST_EVENT_EOS has gone through it.
-	  In order to handle both cases, also take into account the last flow
-	  return.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=763770
+	* gst/gstbin.c:
+	* tests/check/gst/gstbin.c:
+	  bin: emit deep-element-{added,removed} for children of newly-added/removed bin
+	  https://bugzilla.gnome.org/show_bug.cgi?id=578933
 
-2016-06-08 12:34:53 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>
+2016-05-14 10:55:53 +0100  Tim-Philipp Müller <tim@centricular.com>
 
-	* plugins/elements/gsttee.c:
-	  tee: Properly handle return value when only 1 pad
-	  This patch handle the case when you have 1 pad (so the fast path is
-	  being used) but this pad is removed. If we are in allow-not-linked, we
-	  should return GST_FLOW_OK, otherwise, we should return GST_FLOW_UNLINKED
-	  and ignore the meaningless return value obtained from pushing.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=767413
+	* gst/gstbin.c:
+	* gst/gstbin.h:
+	* tests/check/gst/gstbin.c:
+	  bin: add "deep-element-added" and "deep-element-removed" signals
+	  This means applications and bin sub-classes can easily track when
+	  a new child element is added to the pipeline sub-hierarchy or
+	  removed.
+	  Currently doesn't signal deep added/removed for elements inside
+	  a bin if a bin is added/removed.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=578933
 
-2016-06-13 18:33:27 +0200  Sebastian Dröge <sebastian@centricular.com>
+2016-05-15 15:02:49 +0300  Sebastian Dröge <sebastian@centricular.com>
 
-	* libs/gst/base/gstbasesink.c:
-	  basesink: Update start time when losing state only if we were in PLAYING
-	  If we were in PAUSED, the current clock time and base time don't have much to
-	  do with the running time anymore as the clock might have advanced while we
-	  were PAUSED. The system clock does that for example, audio clocks often don't.
-	  Updating the start time in PAUSED will cause a) the wrong position to be
-	  reported, b) step events to step not just the requested amount but the amount
-	  of time we spent in PAUSED. The start time should only ever be updated when
-	  going from PLAYING to PAUSED to remember the current running time (to be able
-	  to compensate later when going to PLAYING for the clock time advancing while
-	  PAUSED), not when we are already in PAUSED.
-	  Based on a patch by Kishore Arepalli <kishore.arepalli@gmail.com>
-	  The updating of the start time when the state is lost was added in commit
-	  ba943a82c0bbfd17c9ee9f5068d44c9d9274fd13 to fix the position reporting when
-	  the state is lost. This still works correctly after this change.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=739289
+	* gst/gstpad.h:
+	  pad: Improve IDLE probe docs
+	  Make it explicit that the pad is only blocked while the callback is running,
+	  and the pad will be unblocked again once the callback returned.
+	  If BLOCK and IDLE behaviour is needed, both need to be used.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766002
 
-2016-02-19 16:18:12 +0100  Linus Svensson <linussn@axis.com>
+2016-05-15 13:29:55 +0300  Sebastian Dröge <sebastian@centricular.com>
 
-	* tests/check/gst/gstpad.c:
-	  gstpad tests: Add a test for flush event only probes
-	  https://bugzilla.gnome.org/show_bug.cgi?id=762330
-
-2016-03-24 12:13:39 -0300  Thiago Santos <thiagoss@osg.samsung.com>
-
-	* gst/gstpad.c:
-	  pad: consider PROBE_TYPE_EVENT_FLUSH when using PROBE_TYPE_ALL_BOTH
-	  When GST_PAD_PROBE_EVENT_FLUSH is used, the probes already have
-	  a data type and it is not needed to automatically add the default
-	  types. Without this, EVENT_FLUSH probes that didn't specify a data
-	  type would be called also for other data such as buffers.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=762330
-
-=== release 1.8.2 ===
-
-2016-06-09 11:50:03 +0300  Sebastian Dröge <sebastian@centricular.com>
-
-	* ChangeLog:
-	* NEWS:
-	* RELEASE:
-	* configure.ac:
 	* docs/plugins/inspect/plugin-coreelements.xml:
-	* gstreamer.doap:
-	* win32/common/config.h:
-	* win32/common/gstversion.h:
-	  Release 1.8.2
-
-2016-06-09 11:12:07 +0300  Sebastian Dröge <sebastian@centricular.com>
-
-	* po/af.po:
-	* po/az.po:
-	* po/be.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/lt.po:
-	* po/nb.po:
-	* po/nl.po:
-	* po/pl.po:
-	* po/pt_BR.po:
-	* po/ro.po:
-	* po/ru.po:
-	* po/rw.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/zh_TW.po:
-	  Update .po files
-
-2016-06-09 10:04:18 +0300  Sebastian Dröge <sebastian@centricular.com>
-
-	* po/hr.po:
-	* po/pt_BR.po:
-	* po/sk.po:
-	  po: Update translations
+	  docs: Update for git master
 
 2016-03-11 16:04:52 +0200  Sebastian Dröge <sebastian@centricular.com>
 
@@ -288,15 +1694,6 @@
 	  interesting effects.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=763496
 
-2016-05-15 15:02:49 +0300  Sebastian Dröge <sebastian@centricular.com>
-
-	* gst/gstpad.h:
-	  pad: Improve IDLE probe docs
-	  Make it explicit that the pad is only blocked while the callback is running,
-	  and the pad will be unblocked again once the callback returned.
-	  If BLOCK and IDLE behaviour is needed, both need to be used.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=766002
-
 2016-05-14 17:31:51 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* libs/gst/base/gstbasesink.c:
@@ -315,6 +1712,42 @@
 	  send it because there'll be no actual state changed message.
 	  Allow EOS through directly in that case.
 
+2016-05-13 09:43:14 +0200  Edward Hervey <bilboed@bilboed.com>
+
+	* gst/gstpad.c:
+	  pad: Don't drop LATENCY queries with default implementation
+	  If there is only one pad in the internal pads, when folding for
+	  LATENCY queries it will just drop the response if it's not live.
+	  This is maybe not the proper fix, but it will just accept the first
+	  peer responses, and if there are any other pads, it will only take
+	  them into account if the response is live.
+	  This *should* properly handle the aggregation/folding behaviour of
+	  multiple live peer responses, while at the same time handling the
+	  simple one-pad-only-and-forward use-case
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766360
+
+2016-04-07 00:46:20 +1000  Jan Schmidt <jan@centricular.com>
+
+	* tools/gst-launch.1.in:
+	  Update the examples in the gst-launch-1.0 manpage
+	  Replace elements that don't exist any more with ones
+	  that do, and insert elements like mpegaudioparse where
+	  they are needed.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=727105
+
+2016-04-02 01:05:39 +1100  Jan Schmidt <jan@centricular.com>
+
+	* gst/gst.c:
+	  debug: Instantiate GType when dumping debug categories.
+	  A lot of debug categories are declared in element class_init
+	  functions, which don't get run until the element is first created
+	  (not just registered in the plugin load function). This means
+	  that --gst-debug-help doesn't print out a lot of categories.
+	  Creating an instance of each element from the element factory
+	  makes them visible, at some extra cost - 2-3 times longer, which can
+	  be a full second or two of extra waiting. Yikes!
+	  https://bugzilla.gnome.org/show_bug.cgi?id=741001
+
 2016-05-11 15:06:39 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* plugins/elements/gsttypefindelement.c:
@@ -324,6 +1757,12 @@
 	  deadlocks and is in general unexpected by elements that are in PULL mode.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=765906
 
+2016-05-11 12:16:09 +0900  Wonchul Lee <wonchul.lee@collabora.com>
+
+	* gst/gstdebugutils.c:
+	  debugutils: fix warning on enum properties printing
+	  https://bugzilla.gnome.org/show_bug.cgi?id=766251
+
 2016-05-10 15:01:42 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* gst/gstpad.c:
@@ -336,6 +1775,42 @@
 	  This fixes e.g. typefind in decodebin reactivating PUSH/PULL mode if upstream
 	  actually fails to go into PULL mode after first PUSHING data to typefind.
 
+2016-03-13 11:05:29 -0400  Anthony G. Basile <blueness@gentoo.org>
+
+	* libs/gst/check/libcheck/strsignal.c:
+	  libcompat.h: strsignal() should be not be decleared const
+	  POSIX standards requires strsignal() to return a pointer to a char,
+	  not a const pointer to a char. [1]  On uClibc, and possibly other
+	  libc's, that do not HAVE_DECL_STRSIGNAL, libcompat.h declares
+	  const char *strsignal (int sig) which causes a type error.
+	  [1] man 3 strsignal
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763567
+
+2016-05-05 18:50:05 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstflowcombiner.c:
+	  flowcombiner: add debug category
+	  Not that it logs much.
+
+2016-05-05 18:02:21 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* libs/gst/base/gstflowcombiner.c:
+	  flowcombiner: fix docs for gst_flow_combiner_reset()
+
+2016-05-04 10:04:30 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/pipelines/parse-launch.c:
+	  parse-launch: fix factory leak in test
+	  We get 2 references one from gst_element_factory_find() and the other
+	  from gst_plugin_feature_load().
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765976
+
+2016-05-04 13:46:46 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/gst/gstminiobject.c:
+	  miniobject: fix ref count leaks in tests
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765978
+
 2016-05-04 09:53:32 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
 
 	* gst/gstutils.c:
@@ -344,6 +1819,134 @@
 	  The root element was not unreffed when iterating over ancestors.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=765961
 
+2016-05-02 17:35:29 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tools/gst-inspect.c:
+	  inspect: fix feature leak
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765957
+
+2016-05-03 11:49:03 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gsturi.c:
+	  uri: unref instead of using _gst_uri_free() directly
+	  This confuses gst_tracing as we shortcut the mini object reference
+	  system.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765958
+
+2016-05-02 09:32:47 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/pipelines/seek.c:
+	  pipeline: fix bus leak in seek test
+	  gst_bus_add_signal_watch_full() keeps a ref on the bus which should
+	  be released using gst_bus_remove_signal_watch().
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765903
+
+2016-05-02 09:29:31 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/streamiddemux.c:
+	  streamiddemux: fix list and event leaks in test
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765903
+
+2016-05-02 08:43:04 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/selector.c:
+	  selector: fix pad leaks in tests
+	  setup_input_pad() creates a new pad so we should unref it once we're
+	  done.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765903
+
+2016-05-02 08:33:42 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/filesrc.c:
+	  filesrc: fix buffer leaks in tests
+	  gst_check_setup_sink_pad() internally uses gst_check_chain_func() so we
+	  should call gst_check_drop_buffers() when tearing down tests to free the
+	  buffers which have been exchanged through the pipeline.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765903
+
+2016-05-02 08:29:00 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/elements/fakesink.c:
+	  fakesink: fix pipeline leak in test
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765903
+
+2016-05-02 07:35:45 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/gst/gstelementfactory.c:
+	  elementfactory: fix factory leak in test
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765903
+
+2016-05-02 16:00:42 +0200  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gstdeviceproviderfactory.c:
+	  deviceproviderfactory: fix factory leak
+	  The code path when early returning was leaking the extra reference on
+	  the factory.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765904
+
+2016-04-10 11:42:18 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstquery.c:
+	  query: fix compiler warning
+	  C4146: unary minus operator applied to unsigned type, result still unsigned
+
+2016-04-28 14:59:51 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/gst/gstbin.c:
+	  bin: fix leaks in unit tests
+	  The test rely on bus being flushed when setting the bin to the NULL state which
+	  is not the case. This apply only when setting the pipeline state to
+	  NULL.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765720
+
+2016-04-28 14:56:18 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* tests/check/gst/gstpad.c:
+	  pad: fix buffer leaks in tests
+	  The buffer received through the pad have to be unreffed using
+	  gst_check_drop_buffers().
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765719
+
+2016-04-30 14:15:08 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstbuffer.c:
+	* gst/gstghostpad.c:
+	* libs/gst/check/gstharness.c:
+	  Fix some nonsensical g-i annotations
+
+2016-04-29 14:55:02 +0200  Matej Knopp <matej.knopp@gmail.com>
+
+	* plugins/elements/gstmultiqueue.c:
+	  multiqueue: Ignore time when determining whether sparse stream limits have been reached
+	  Basically, sq->max_size.visible is never increased for sparse streams in
+	  overruncb when empty queue has been found;
+	  If the queue is sparse it just skip the entire logic determining whether
+	  max_size.visible should be increased, deadlocking the demuxer.
+	  What should be done instead is that when determining if limits have been
+	  reached, to ignore time for sparse streams, as the buffer may be far in the
+	  future.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765736
+
+2016-02-28 12:06:40 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstbin.c:
+	* gst/gstbin.h:
+	* gst/gstelement.c:
+	* gst/gstelement.h:
+	* win32/common/libgstreamer.def:
+	  element: Add gst_element_call_async()
+	  This calls a function from another thread, asynchronously. This is to be
+	  used for cases when a state change has to be performed from a streaming
+	  thread, directly via gst_element_set_state() or indirectly e.g. via SEEK
+	  events.
+	  Calling those functions directly from the streaming thread will cause
+	  deadlocks in many situations, as they might involve waiting for the
+	  streaming thread to shut down from this very streaming thread.
+	  This is mostly a convenience function around a GThreadPool and is for example
+	  used by GstBin to continue asynchronous state changes.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=760532
+
 2016-04-27 09:21:31 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* docs/manual/advanced-dataaccess.xml:
@@ -351,6 +1954,36 @@
 	  g_signal_emit_by_name() is not like gst_app_src_push_buffer() due to reference
 	  counting limitations of signals, it does *not* take ownership of the buffer.
 
+2016-04-26 16:02:14 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gst.c:
+	* gst/gst_private.h:
+	* gst/gstcaps.c:
+	  caps: add cleanup priv function
+	  Those are allocated in _priv_gst_caps_initialize() so it makes
+	  sense to have a symetric cleanup functions called by gst_deinit().
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765606
+
+2016-04-26 16:02:14 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gst.c:
+	* gst/gst_private.h:
+	* gst/gstcapsfeatures.c:
+	  capsfeature: add cleanup priv function
+	  Those are allocated in _priv_gst_caps_features_initialize() so it makes
+	  sense to have a symetric cleanup functions called by gst_deinit().
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765606
+
+2016-04-21 14:45:39 +0100  Alex Ashley <bugzilla@ashley-family.net>
+
+	* libs/gst/check/gsttestclock.c:
+	  testclock: add clock-type property
+	  To allow the GstTestClock to be used as a GstSystemClock, it is
+	  useful to implement the clock-type property that GstSystemClock
+	  provides. This allows GstTestClock to be used as the system clock
+	  with code that expects a GstSystemClock.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762147
+
 2016-04-21 13:49:32 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* gst/gstdatetime.c:
@@ -359,67 +1992,6 @@
 	  cause an assertion and generally does not make much sense. Instead consider it
 	  as a parsing error like hours > 24 and return NULL.
 
-=== release 1.8.1 ===
-
-2016-04-20 18:09:16 +0300  Sebastian Dröge <sebastian@centricular.com>
-
-	* ChangeLog:
-	* NEWS:
-	* RELEASE:
-	* configure.ac:
-	* docs/plugins/inspect/plugin-coreelements.xml:
-	* gstreamer.doap:
-	* win32/common/config.h:
-	* win32/common/gstversion.h:
-	  Release 1.8.1
-
-2016-04-20 17:52:31 +0300  Sebastian Dröge <sebastian@centricular.com>
-
-	* po/af.po:
-	* po/az.po:
-	* po/be.po:
-	* po/bg.po:
-	* po/ca.po:
-	* po/cs.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/lt.po:
-	* po/nb.po:
-	* po/nl.po:
-	* po/pl.po:
-	* po/pt_BR.po:
-	* po/ro.po:
-	* po/ru.po:
-	* po/rw.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/zh_TW.po:
-	  Update .po files
-
-2016-04-20 15:29:15 +0300  Sebastian Dröge <sebastian@centricular.com>
-
-	* po/da.po:
-	  po: Update translations
-
 2016-04-20 11:46:19 +0300  Sebastian Dröge <sebastian@centricular.com>
 
 	* libs/gst/base/gstbaseparse.c:
@@ -429,6 +2001,27 @@
 	  exactly increasing with the duration of each packet.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=765260
 
+2016-04-20 11:45:28 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gsttypefindhelper.c:
+	  typefindhelper: Fix gobject-introspection warning about invalid transfer annotation
+	  gsttypefindhelper.c:485: Warning: GstBase: invalid "transfer" annotation for gsize: only valid for array, struct, union, boxed, object and interface types
+
+2016-04-18 13:05:40 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* gst/gst.c:
+	* gst/gst_private.h:
+	* gst/gstallocator.c:
+	  allocator: add cleanup method
+	  Make tracking memory leaks easier.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=765212
+
+2016-03-25 15:55:18 +0100  Francisco Velazquez <francisv@ifi.uio.no>
+
+	* tests/check/gst/gstplugin.c:
+	  tests: plugin: improve debug message
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764199
+
 2016-04-14 11:54:32 +0200  Carlos Rafael Giani <dv@pseudoterminal.org>
 
 	* plugins/elements/gstmultiqueue.c:
@@ -470,6 +2063,433 @@
 	  the code was introduced.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=765096
 
+2016-04-14 09:58:04 +0100  Julien Isorce <j.isorce@samsung.com>
+
+	* README:
+	* common:
+	  Automatic update of common submodule
+	  From 6f2d209 to ac2f647
+
+2016-04-13 16:08:30 +0100  Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+	* plugins/elements/gstmultiqueue.c:
+	  multiqueue: catch errors and flushing case after lock
+	  This ensures we can not get into an indefinite wait on the
+	  following cond var wait.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764999
+
+2016-04-13 16:40:43 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-launch.c:
+	  tools: gst-launch: fix up caps printing in verbose mode
+	  Add missing 'else' and print caps and taglists without the
+	  annoying duplicate string escaping, making both nicer to read.
+	  Fixes string leak and coverity CID 1358492.
+
+2016-04-13 12:38:05 +0300  Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+	* plugins/tracers/gstrusage.c:
+	  rusage: properly free the queue memory
+	  The queue is allocated as part of the tracer struct so we should not
+	  use g_queue_free() to free it.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764985
+
+2016-04-13 10:21:15 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstbuffer.c:
+	* gst/gstmeta.c:
+	  meta: Warn if a meta implementation is registered without init function
+	  This previously caused uninitialized memory unless something else was
+	  initializing all the fields explicitly to something.
+	  To be on the safe side, we also allocate metas without init function to all
+	  zeroes now as it was relatively common.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764902
+
+2016-04-12 15:17:36 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  Revert "basesink: Take PREROLL_LOCK in wait_event()"
+	  This reverts commit 828a4627db0cb6a6706b96d9be97e5e5c7d22215.
+	  The lock was already taken elsewhere, in gst_base_sink_event().
+
+2016-04-12 15:11:30 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* libs/gst/base/gstbasesink.c:
+	  basesink: Take PREROLL_LOCK in wait_event()
+	  It is calling do_sync(), which requires the STREAM_LOCK and PREROLL_LOCK to be
+	  taken. The STREAM_LOCK is already taken in all callers, the PREROLL_LOCK not.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764939
+
+2016-02-11 09:33:28 +0100  Julien Isorce <j.isorce@samsung.com>
+
+	* tests/check/Makefile.am:
+	  tests: add PTHREAD_CFLAGS for make check to pass on OS X
+	  Currently "make check" fails with:
+	  "error: argument unused during compilation: '-pthread'"
+	  PTHREAD_CFLAGS now contains -Qunused-arguments to fix that.
+	  Explanation here: http://savannah.gnu.org/patch/?8186#comment21
+	  https://bugzilla.gnome.org/show_bug.cgi?id=747954
+
+2016-04-11 10:44:22 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/libs/baseparse.c:
+	  tests: baseparse: make work with CK_FORK=no
+	  https://bugzilla.gnome.org/show_bug.cgi?id=623469
+
+2016-04-11 10:27:56 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/libs/test_transform.c:
+	* tests/check/libs/transform1.c:
+	* tests/check/libs/transform2.c:
+	  tests: transform1: make test work with CK_FORK=no
+	  We need to clear some global state and register a new test
+	  basetransform subclass for each test because we do things
+	  in class_init base on global state.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=623469
+
+2016-04-10 20:45:24 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/libs/collectpads.c:
+	  tests: collectpads: fix for CK_FORK=no
+	  Reset global state when done, and unref sink pads too
+	  in teardown function to make it valgrind clean.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=623469
+
+2016-04-10 20:25:44 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/elements/streamiddemux.c:
+	  tests: streamiddemux: fix with CK_FORK=no
+	  Clear global state when done.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=623469
+
+2016-04-10 20:04:07 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/gst/gstbufferpool.c:
+	  tests: bufferpool: fix wrong assumptions about pointers and object lifecycles
+	  The test assumed that if a buffer has the same pointer address as
+	  before it is in fact the same mini object and has been re-used by
+	  the pool. This seems to be mostly true, but not always. The buffer
+	  might be destroyed and when a new buffer is created the allocator
+	  might return the same memory that we just freed.
+	  Instead attach a qdata with destroy notify function to buffer
+	  instances we want to track to make sure the buffer actually
+	  gets finalized rather than resurrected and put back into the pool.
+
+2016-04-10 18:37:31 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/pwg/building-boiler.xml:
+	* docs/pwg/pwg.xml:
+	  docs: pwg: remove broken references to example code
+	  We point to gst-template at the beginning that shoul be
+	  enough.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=623575
+
+2016-04-08 13:26:48 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/Makefile.am:
+	  tests: don't run tracerrecord in valgrind for now
+	  Because of the way we implement logging and adding/removing
+	  log functions currently (we leak a GList on purpose) this
+	  test leaks.
+
+2016-03-05 17:51:01 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* tools/gst-launch.c:
+	  tools: gst-launch: use new async property change notification API
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763142
+
+2016-03-05 14:12:36 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstelement.c:
+	* gst/gstelement.h:
+	* gst/gstmessage.c:
+	* gst/gstmessage.h:
+	* gst/gstquark.c:
+	* gst/gstquark.h:
+	* tests/check/gst/gstelement.c:
+	* win32/common/libgstreamer.def:
+	  element: add API to get property change notifications via messages
+	  Be notified in the application thread via bus messages about
+	  notify::* and deep-notify::* property changes, instead of
+	  having to deal with it in a non-application thread.
+	  API: gst_element_add_property_notify_watch()
+	  API: gst_element_add_property_deep_notify_watch()
+	  API: gst_element_remove_property_notify_watch()
+	  API: gst_message_new_property_notify()
+	  API: gst_message_parse_property_notify()
+	  API: GST_MESSAGE_PROPERTY_NOTIFY
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763142
+
+2016-04-07 20:29:10 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/gst/gstcpp.cc:
+	* tests/check/libs/gstlibscpp.cc:
+	  tests: Add C++ tests for the other INIT macros we have
+
+2016-04-06 17:19:28 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/gst/gstcpp.cc:
+	  tests: gstcpp: flesh out C++ test so we can add more bits
+	  Like a check for GST_MAP_INFO_INIT.
+
+2016-04-06 16:48:38 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* tests/check/libs/gstlibscpp.cc:
+	  tests: use catch-all includes for c++ gst libs include test
+	  So we get any new header files as well as they're added.
+
+2016-04-06 17:23:20 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstmemory.h:
+	  memory: fix C++ compiler warnings with GST_MAP_INFO_INIT
+
+2016-04-04 10:28:18 +0000  Matthew Waters <matthew@centricular.com>
+
+	* gst/gstutils.c:
+	* tests/check/gst/gstutils.c:
+	  utils: check the correct element's state on ghosting pads
+	  Checking the current element's state when we're adding pads to
+	  the parent element is checking the wrong thing.
+	  Silences a 'attempting to add an inactive pad to a running element'
+	  warning when adding a ghost pad to a running parent bin of the parent
+	  bin of the element.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764176
+
+2016-03-25 01:28:18 +0000  Matthew Waters <matthew@centricular.com>
+
+	* docs/gst/gstreamer-sections.txt:
+	* gst/gstutils.c:
+	* gst/gstutils.h:
+	* win32/common/libgstreamer.def:
+	  utils: expose pad_link_maybe_ghosting
+	  This is a useful function to automatically add ghost pads when linking
+	  two elements across bin boundaries without know their exact parentage.
+	  e.g. when using gst_parse_bin_from_description (with or without it ghosting pads),
+	  one can simply retreive the src/sink pads from the bin to link to another pad.
+	  Similar functionality is provided by gst_element_link_pads{_full}() however only
+	  by pad name rather than by actual pads.
+	  API: gst_pad_link_maybe_ghosting_full
+	  https://bugzilla.gnome.org/show_bug.cgi?id=764176
+
+2016-04-03 23:35:46 -0700  Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+	* docs/design/part-states.txt:
+	  docs/design/part-states.txt: spelling fix
+
+2015-05-15 13:36:04 +0100  Mark Combellack <gnome-bugzilla@combellack.net>
+
+	* gst/gstbin.c:
+	* gst/gstbufferpool.c:
+	* gst/gstelement.c:
+	* gst/gstobject.c:
+	* gst/gstpad.c:
+	* gst/gstpipeline.c:
+	  GST_REFCOUNTING: Add logging of pointer address for dispose, finalize, etc messages
+	  Updated the GST_REFCOUNTING logging so that it includes the pointer
+	  address of the object that is being disposed or finalized.
+	  With this change is is then possible to match up GST_REFCOUNTING log messages
+	  for object allocation/disposal/finalization. This can help with diagnosing
+	  "memory leaks" in applications that have not correctly disposed of all the
+	  GStreamer objects it creates.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=749427
+
+2016-03-31 11:46:03 +0100  Luis de Bethencourt <luisbg@osg.samsung.com>
+
+	* gst/gstinfo.c:
+	  info: only open log file when adding it to the log function
+	  This avoids the leak of opening it and then not passing it or closing it
+	  before it goes out of scope.
+
+2016-04-01 22:41:51 +0300  Sebastian Dröge <sebastian@centricular.com>
+
+	* gst/gstclock.c:
+	  clock: Return FALSE in all paths that don't set out parameters in gst_clock_add_observation_unapplied()
+	  It returned TRUE when regression failed, while not setting any of the out
+	  parameters. This caused uninitialized data from the stack to be used for
+	  setting the clock calibration.
+
+2016-03-24 17:34:20 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst/gstpad.c:
+	  pad: rework probe's hook_marshall function
+	  PUSH and PULL mode have opposite scenarios for IDLE and BLOCK
+	  probes.
+	  For PUSH it will BLOCK with some data type and IDLE won't have a type.
+	  For PULL it will BLOCK before getting some data and will be IDLE when
+	  some data is obtained.
+	  The check in hook_marshall was specific for PUSH mode and would cause
+	  PULL probes to fail to be called. Adding different checks for the mode
+	  to fix this issue.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761211
+
+2016-03-24 17:34:40 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* tests/check/gst/gstpad.c:
+	  tests: pad: extra tests for pad pull probes
+	  For BUFFER and IDLE probes
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761211
+
+2016-01-28 16:22:17 +0100  Matej Knopp <matej.knopp@gmail.com>
+
+	* tests/check/gst/gstpad.c:
+	  pad: Add test for blocking pull probe
+	  https://bugzilla.gnome.org/show_bug.cgi?id=761211
+
+2016-03-24 12:13:39 -0300  Thiago Santos <thiagoss@osg.samsung.com>
+
+	* gst/gstpad.c:
+	  pad: consider PROBE_TYPE_EVENT_FLUSH when using PROBE_TYPE_ALL_BOTH
+	  When GST_PAD_PROBE_EVENT_FLUSH is used, the probes already have
+	  a data type and it is not needed to automatically add the default
+	  types.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762330
+
+2016-02-19 16:18:12 +0100  Linus Svensson <linussn@axis.com>
+
+	* tests/check/gst/gstpad.c:
+	  gstpad tests: Add a test for flush event only probes
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762330
+
+2016-03-26 17:21:51 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstdebugutils.c:
+	  debugutils: fix enum/flag properties printing for elements
+	  We want to use the flag/enum nicks here, not only because they
+	  are shorter but also because in case of element-specific enums
+	  and flags we abuse the enum/flag name field for the description,
+	  and we don't want that printed in the dot file.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763814
+
+2016-03-23 10:31:46 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gsttrace.c:
+	  alloctrace: print size and allocator details for buffers and memories
+
+2016-02-29 19:04:16 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstinfo.c:
+	  info: make it possible to remove default log handler before gst_init()
+	  Make sure it's not even added then, so that we never output
+	  anything via the default log handler then.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=751538
+
+2016-03-05 14:27:35 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstmemory.h:
+	* gst/gstminiobject.h:
+	* gst/gsturi.h:
+	  miniobject, memory, uri: warn on unused return value of some funcs
+	  Make compiler issue a warning for common beginner mistakes such as:
+	  ...
+	  gst_buffer_make_writable (buf);
+	  gst_buffer_map (buf, &map, GST_MAP_WRITE);
+	  ...
+	  and similar. Only do this for some functions for now.
+
+2016-03-26 11:17:02 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* .gitignore:
+	  .gitignore new netclock-replay testing tool binary
+
+2015-10-17 18:01:47 +0100  Tim-Philipp Müller <tim@centricular.com>
+
+	* gst/gstregistry.c:
+	  registry: allow plugin and feature filter funcs to call registry API
+	  Don't keep the registry locked whilst iterating over the plugins
+	  or features with a filter function. This would deadlock if the
+	  callback tried to access the registry from the function. Instead,
+	  make a copy of the feature/plugin list and then filter it without
+	  holding the registry lock. This is still considerably faster than
+	  the alternative which would be to use a GstIterator.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=756738
+
+2016-03-25 12:59:57 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* configure.ac:
+	  configure: Remove unneeded parenthesis from AG_GST_CHECK_CHECKS
+
+2016-03-25 12:05:41 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/check/elements/valve.c:
+	  valve: Fix unit test by sending caps before buffers
+	  Unexpected critical/warning: gstpad.c:4400:gst_pad_push_data:<'':src> Got data flow before segment event
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763753
+
+2016-03-25 10:23:46 +0200  Sebastian Dröge <sebastian@centricular.com>
+
+	* tests/misc/Makefile.am:
+	  netclock: Link the replay example to GIO
+
+2016-03-03 21:45:54 +0530  Arun Raghavan <arun@centricular.com>
+
+	* tests/misc/Makefile.am:
+	* tests/misc/netclock-replay.c:
+	  tests: Add some code to replay and analyse netclientclock
+	  This takes readings in the form of ...
+	  <local_1> <remote_1> <remote_2> <local_2>
+	  ... with one observation per line, and then replays it using the
+	  netclientclock code.
+	  The output is the statistics structure emitted by the netclientclock,
+	  which can then be analysed and tuned once we get those readings for
+	  potential edge-cases.
+	  It should be possible to find some inputs with "bad" data and convert
+	  this into a unit test for future tweaks to run against.
+
+2016-03-03 21:44:35 +0530  Arun Raghavan <arun@centricular.com>
+
+	* libs/gst/net/gstnetclientclock.c:
+	  netclientclock: Always dump clock observations in logs
+	  This makes it possible to examine what values we get in logs, and
+	  potentially tune our filtering/extrapolation in various scenarios.
+
+2016-03-16 15:13:39 +0100  Havard Graff <havard.graff@gmail.com>
+
+	* plugins/elements/gstvalve.c:
+	* tests/check/elements/valve.c:
+	  valve: don't send sticky events as a direct response to upstream events
+	  Also refactor the existing valve test to actually test the valve,
+	  and not just test the EOS mechanism of a pad.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763753
+
+2016-03-11 09:23:04 +0100  Carlos Rafael Giani <dv@pseudoterminal.org>
+
+	* gst/gstparse.c:
+	* gst/gstparse.h:
+	* gst/parse/grammar.y:
+	  parse-launch: Add flag for placing elements in a bin instead of a pipeline
+	  By default, gst_parse_launch_full() creates a GstPipeline if there's more
+	  than one toplevel element. Add a flag to let it use a GstBin instead.
+	  Also fix the parser to let it use this flag for GST_TYPE_ELEMENT property
+	  values, to avoid having GstPipelines inside other GstPipelines.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763457
+
+2016-03-08 19:08:16 +0000  Tim-Philipp Müller <tim@centricular.com>
+
+	* plugins/elements/gstcapsfilter.c:
+	* plugins/elements/gstcapsfilter.h:
+	  capsfilter: optimisation: avoid unnecessary gst_pad_has_current_caps() checks
+	  No need to do this for every input buffer, since it involves
+	  locking and iterating of the sticky events array and such.
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763337
+
+2016-03-03 14:15:00 +0900  Vineeth TM <vineeth.tm@samsung.com>
+
+	* gst/gstpadtemplate.c:
+	* libs/gst/base/gstbasesink.c:
+	* libs/gst/base/gstbasesrc.c:
+	* tests/check/elements/fakesink.c:
+	* tests/check/gst/gstpad.c:
+	* tests/check/gst/gstprotection.c:
+	* tests/check/gst/gstutils.c:
+	* tests/check/libs/baseparse.c:
+	* tests/check/libs/collectpads.c:
+	* tests/check/libs/test_transform.c:
+	* tests/check/pipelines/parse-launch.c:
+	* tests/check/pipelines/seek.c:
+	  gstreamer: use new gst_element_class_add_static_pad_template()
+	  https://bugzilla.gnome.org/show_bug.cgi?id=763020
+
 2016-03-02 17:47:33 +0100  Edward Hervey <edward@centricular.com>
 
 	* plugins/elements/gstqueue.c:
@@ -493,21 +2513,19 @@
 	  race.
 	  https://bugzilla.gnome.org/show_bug.cgi?id=761912
 
-2016-03-25 12:05:41 +0200  Sebastian Dröge <sebastian@centricular.com>
+2016-03-02 21:11:51 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>
 
-	* tests/check/elements/valve.c:
-	  valve: Fix unit test by sending caps before buffers
-	  Unexpected critical/warning: gstpad.c:4400:gst_pad_push_data:<'':src> Got data flow before segment event
-	  https://bugzilla.gnome.org/show_bug.cgi?id=763753
+	* libs/gst/base/gstcollectpads.c:
+	  collectpads: Assume PTS is equal DTS if PTS is missing
+	  This is the best guess we can make if such a buffer reached the collect
+	  pad. This is uncommon, we do expect parsers to have tried and fixed that
+	  if possible (or needed).
+	  https://bugzilla.gnome.org/show_bug.cgi?id=762207
 
-2016-03-16 15:13:39 +0100  Havard Graff <havard.graff@gmail.com>
+2016-03-24 13:32:41 +0200  Sebastian Dröge <sebastian@centricular.com>
 
-	* plugins/elements/gstvalve.c:
-	* tests/check/elements/valve.c:
-	  valve: don't send sticky events as a direct response to upstream events
-	  Also refactor the existing valve test to actually test the valve,
-	  and not just test the EOS mechanism of a pad.
-	  https://bugzilla.gnome.org/show_bug.cgi?id=763753
+	* configure.ac:
+	  Back to development
 
 2016-03-24 11:49:44 +0200  Sebastian Dröge <sebastian@centricular.com>
 
diff --git a/Makefile.am b/Makefile.am
index 503ffb3..aeefe9d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -153,10 +153,8 @@
 # Do not run the check-exports test in case any option which causes the API to
 # change has been used
 if !GST_DISABLE_REGISTRY
-if !GST_DISABLE_TRACE
 CHECK_EXPORTS = check-exports
 endif
-endif
 
 check: $(CHECK_EXPORTS) check-enum-gettypes
 
diff --git a/Makefile.in b/Makefile.in
index c912a68..e888043 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -359,6 +359,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -366,17 +367,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -501,6 +499,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
@@ -620,7 +620,7 @@
 
 # Do not run the check-exports test in case any option which causes the API to
 # change has been used
-@GST_DISABLE_REGISTRY_FALSE@@GST_DISABLE_TRACE_FALSE@CHECK_EXPORTS = check-exports
+@GST_DISABLE_REGISTRY_FALSE@CHECK_EXPORTS = check-exports
 
 # cruft: plugins that have been merged or moved or renamed
 CRUFT_FILES = \
@@ -1239,8 +1239,11 @@
 
 update-exports:
 	make check-exports 2>&1 | patch -p1
-	git add win32/common/libgst*.def
-	git diff --cached -- win32/common/
+	if test -f "$(top_srcdir)/win32/common/libgstgl.def"; then \
+	  git checkout "$(top_srcdir)/win32/common/libgstgl.def";  \
+	fi
+	git add $(top_srcdir)/win32/common/libgst*.def
+	git diff --cached -- $(top_srcdir)/win32/common/
 	echo '^^^--- updated and staged changes above'
 
 # complain about nonportable printf format strings (%lld, %llu, %zu etc.)
diff --git a/NEWS b/NEWS
index 90393f5..072b2df 100644
--- a/NEWS
+++ b/NEWS
@@ -1,29 +1 @@
-### 1.8.3
-
-The third 1.8 bug-fix release (1.8.3) was released on 19 August 2016.
-This release only contains bugfixes and it should be safe to update from 1.8.x.
-
-#### Major bugfixes in 1.8.3
-
- - Fix Android build scripts on OS X and Windows
- - Fix stepping in PAUSED state in certain circumstances
- - Fix jackaudiosink hang when exiting
- - Fix udpsrc receiving multicast packets not only from the selected
-   multicast group
- - Fix unnecessary decoding of unselected streams in GES
- - Fix (multi)udpsink randomly not sending to clients
- - Fix ALL\_BOTH probes not considering EVENT\_FLUSH
- - Fix average input rate calculations in queue2
- - Fix various locking issues causing deadlock in adaptivedemux
- - Fix gst-libav encoders to correctly produce codec\_data in caps
- - Add Wayland, Windows and Rasberry Pi support to the QML GL video sink
- - Add support for building with OpenH264 1.6
- - Add support for controlling deinterlacing in GES video sources
- - ... and many, many more!
-
-For a full list of bugfixes see [Bugzilla][buglist-1.8.3]. Note that this is
-not the full list of changes. For the full list of changes please refer to the
-GIT logs or ChangeLogs of the particular modules.
-
-[buglist-1.8.3]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=145400&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.8.3
-
+This is GStreamer 1.9.90
diff --git a/README b/README
index fa53f95..48e2c9f 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-GStreamer 1.7.x development series
+GStreamer 1.9.x development series
 
 WHAT IT IS
 ----------
diff --git a/RELEASE b/RELEASE
index b867688..6c009a2 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,15 +1,13 @@
 
-Release notes for GStreamer 1.8.3
+Release notes for GStreamer 1.9.90
 
-The GStreamer team is proud to announce the third bugfix release in the stable
-1.8 release series of your favourite cross-platform multimedia framework!
+The GStreamer team is pleased to announce the first release candidate of the
+stable 1.10 release series. The 1.10 release series is adding new features on
+top of the 1.0, 1.2, 1.4, 1.6 and 1.8 series and is part of the API and
+ABI-stable 1.x release series of the GStreamer multimedia framework.
 
 
-This release only contains bugfixes and it is safe to update from 1.8.x. For a
-full list of bugfixes see Bugzilla.
-
-
-See /releases/1.8/ for the full release notes.
+Binaries for Android, iOS, Mac OS X and Windows will be provided in the next days.
 
 
 This module, gstreamer, only contains core functionality.
@@ -35,15 +33,14 @@
 
 Bugs fixed in this release
      
-      * 739289 : basesink: Stepping incorrectly updates start time when stepping in PAUSED, causing step amount to be calculated wrongly
-      * 762330 : Probe only flush events, is not possible
-      * 767413 : tee: Properly handle return value when only 1 pad
-      * 767688 : queue2: fix crash deleting current region for small ring buffers
-      * 768141 : bus: chain up constructed.
-      * 768326 : Building GStreamer for Android fails on Windows (new since 1.8.2)
-      * 768450 : pad: check caps not NULL before referring
-      * 768649 : queue2: Force final average input rate calculation on EOS
-      * 769802 : queue2: Post buffering messages earlier in ringbuffer mode
+      * 753922 : GValue types are registered after types that might use them (e.g. tags)
+      * 770731 : gstconfig.h: Need to add support for more platforms / PPC broken
+      * 770740 : No way to disable build of tests/misc
+      * 771104 : element: seek_simple() does not reset stop position
+      * 771210 : tests: new queue2: Add higher-resolution low/high-watermark properties unit test is flaky
+      * 771306 : basesink: Remove unused fields and always use the buffer timestamp difference for calculating the QoS proportion
+      * 771649 : gst_bin_sort_iterator_copy doesn't copy GstBinSortIterator::queue
+      * 771029 : MSVC can't link against autotools-build generated DLLs
 
 ==== Download ====
 
@@ -80,15 +77,16 @@
         
 Contributors to this release
     
-      * Edward Hervey
-      * Guillaume Desmottes
+      * Arun Raghavan
+      * Carlos Rafael Giani
+      * Graham Leggett
       * Jan Schmidt
-      * Linus Svensson
-      * Miguel París Díaz
-      * Nicolas Dufresne
-      * Ray Strode
+      * Kouhei Sutou
+      * Nirbheek Chauhan
       * Sebastian Dröge
       * Thiago Santos
+      * Thibault Saunier
       * Tim-Philipp Müller
-      * Vincent Penquerc'h
+      * Wim Taymans
+      * Wonchul Lee
  
\ No newline at end of file
diff --git a/common/Makefile.in b/common/Makefile.in
index b9943c2..a9deeb4 100644
--- a/common/Makefile.in
+++ b/common/Makefile.in
@@ -288,6 +288,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -295,17 +296,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -430,6 +428,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/common/gst.supp b/common/gst.supp
index 2740e9a..f85cd69 100644
--- a/common/gst.supp
+++ b/common/gst.supp
@@ -4024,5 +4024,4 @@
    fun:malloc
    ...
    fun:g_quark_init
-   fun:glib_init_ctor
 }
diff --git a/common/gtk-doc-plugins.mak b/common/gtk-doc-plugins.mak
index fe0977c..4b5dd1b 100644
--- a/common/gtk-doc-plugins.mak
+++ b/common/gtk-doc-plugins.mak
@@ -179,9 +179,13 @@
 		$(top_srcdir)/common/plugins.xsl $$a > xml/`basename $$a`; done
 	@for f in $(EXAMPLE_CFILES); do \
 		$(PYTHON) $(top_srcdir)/common/c-to-xml.py $$f > xml/element-`basename $$f .c`.xml; done
-	@gtkdoc-mkdb \
+	@_source_dir='' ;						\
+	for i in $(DOC_SOURCE_DIR) ; do					\
+	    _source_dir="$${_source_dir} --source-dir=$$i" ;	        \
+	done ;								\
+	gtkdoc-mkdb \
 		--module=$(DOC_MODULE) \
-		--source-dir=$(DOC_SOURCE_DIR) \
+		$${_source_dir} \
 		 --expand-content-files="$(expand_content_files)" \
 		--main-sgml-file=$(srcdir)/$(DOC_MAIN_SGML_FILE) \
 		--output-format=xml \
diff --git a/common/gtk-doc.mak b/common/gtk-doc.mak
index 2aab3a9..3f83491 100644
--- a/common/gtk-doc.mak
+++ b/common/gtk-doc.mak
@@ -121,7 +121,11 @@
 
 sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(expand_content_files)
 	@echo '  DOC   Building XML'
-	@gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR)  --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
+	@_source_dir='' ;						\
+	for i in $(DOC_SOURCE_DIR) ; do					\
+	    _source_dir="$${_source_dir} --source-dir=$$i" ;	        \
+	done ;							        \
+	gtkdoc-mkdb --module=$(DOC_MODULE) $${_source_dir}  --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
 	@cp ../version.entities xml
 	@touch sgml-build.stamp
 
diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in
index 26ebf92..027a87c 100644
--- a/common/m4/Makefile.in
+++ b/common/m4/Makefile.in
@@ -228,6 +228,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -235,17 +236,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -370,6 +368,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/common/m4/ax_pthread.m4 b/common/m4/ax_pthread.m4
index d383ad5..4c4051e 100644
--- a/common/m4/ax_pthread.m4
+++ b/common/m4/ax_pthread.m4
@@ -19,10 +19,10 @@
 #   is necessary on AIX to use the special cc_r compiler alias.)
 #
 #   NOTE: You are assumed to not only compile your program with these flags,
-#   but also link it with them as well. e.g. you should link with
+#   but also to link with them as well. For example, you might link with
 #   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
 #
-#   If you are only building threads programs, you may wish to use these
+#   If you are only building threaded programs, you may wish to use these
 #   variables in your default LIBS, CFLAGS, and CC:
 #
 #     LIBS="$PTHREAD_LIBS $LIBS"
@@ -30,8 +30,8 @@
 #     CC="$PTHREAD_CC"
 #
 #   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
-#   has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
-#   (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+#   has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
+#   that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
 #
 #   Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
 #   PTHREAD_PRIO_INHERIT symbol is defined when compiling with
@@ -82,35 +82,40 @@
 #   modified version of the Autoconf Macro, you may extend this special
 #   exception to the GPL to apply to your modified version as well.
 
-#serial 21
+#serial 23
 
 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
 AC_DEFUN([AX_PTHREAD], [
 AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_CC])
+AC_REQUIRE([AC_PROG_SED])
 AC_LANG_PUSH([C])
 ax_pthread_ok=no
 
 # We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
+# requires special compiler flags (e.g. on Tru64 or Sequent).
 # It gets checked for in the link test anyway.
 
 # First of all, check if the user has set any of the PTHREAD_LIBS,
 # etcetera environment variables, and if threads linking works using
 # them:
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
-        save_CFLAGS="$CFLAGS"
+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
+        ax_pthread_save_CC="$CC"
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-        save_LIBS="$LIBS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
-        AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
+        AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
+        AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
         AC_MSG_RESULT([$ax_pthread_ok])
-        if test x"$ax_pthread_ok" = xno; then
+        if test "x$ax_pthread_ok" = "xno"; then
                 PTHREAD_LIBS=""
                 PTHREAD_CFLAGS=""
         fi
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CC="$ax_pthread_save_CC"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 fi
 
 # We must check for the threads library under a number of different
@@ -123,7 +128,7 @@
 # which indicates that we try without any flags at all, and "pthread-config"
 # which is a program returning the flags for the Pth emulation library.
 
-ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
 
 # The ordering *is* (sometimes) important.  Some notes on the
 # individual items follow:
@@ -132,82 +137,225 @@
 # none: in case threads are in libc; should be tried before -Kthread and
 #       other compiler flags to prevent continual compiler warnings
 # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
+#           (Note: HP C rejects this with "bad form for `-t' option")
+# -pthreads: Solaris/gcc (Note: HP C also rejects)
 # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-#      doesn't hurt to check since this sometimes defines pthreads too;
-#      also defines -D_REENTRANT)
-#      ... -mt is also the pthreads flag for HP/aCC
+#      doesn't hurt to check since this sometimes defines pthreads and
+#      -D_REENTRANT too), HP C (must be checked before -lpthread, which
+#      is present but should not be used directly; and before -mthreads,
+#      because the compiler interprets this as "-mt" + "-hreads")
+# -mthreads: Mingw32/gcc, Lynx/gcc
 # pthread: Linux, etcetera
 # --thread-safe: KAI C++
 # pthread-config: use pthread-config program (for GNU Pth library)
 
-case ${host_os} in
+case $host_os in
+
+        freebsd*)
+
+        # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+        # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+
+        ax_pthread_flags="-kthread lthread $ax_pthread_flags"
+        ;;
+
+        hpux*)
+
+        # From the cc(1) man page: "[-mt] Sets various -D flags to enable
+        # multi-threading and also sets -lpthread."
+
+        ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
+        ;;
+
+        openedition*)
+
+        # IBM z/OS requires a feature-test macro to be defined in order to
+        # enable POSIX threads at all, so give the user a hint if this is
+        # not set. (We don't define these ourselves, as they can affect
+        # other portions of the system API in unpredictable ways.)
+
+        AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
+            [
+#            if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
+             AX_PTHREAD_ZOS_MISSING
+#            endif
+            ],
+            [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
+        ;;
+
         solaris*)
 
         # On Solaris (at least, for some versions), libc contains stubbed
         # (non-functional) versions of the pthreads routines, so link-based
-        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
-        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
-        # a function called by this macro, so we could check for that, but
-        # who knows whether they'll stub that too in a future libc.)  So,
-        # we'll just look for -pthreads and -lpthread first:
+        # tests will erroneously succeed. (N.B.: The stubs are missing
+        # pthread_cleanup_push, or rather a function called by this macro,
+        # so we could check for that, but who knows whether they'll stub
+        # that too in a future libc.)  So we'll check first for the
+        # standard Solaris way of linking pthreads (-mt -lpthread).
 
-        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
-        ;;
-
-        darwin*)
-        ax_pthread_flags="-pthread $ax_pthread_flags"
+        ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
         ;;
 esac
 
-# Clang doesn't consider unrecognized options an error unless we specify
-# -Werror. We throw in some extra Clang-specific options to ensure that
-# this doesn't happen for GCC, which also accepts -Werror.
+# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
 
-AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
-save_CFLAGS="$CFLAGS"
-ax_pthread_extra_flags="-Werror"
-CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
-                  [AC_MSG_RESULT([yes])],
-                  [ax_pthread_extra_flags=
-                   AC_MSG_RESULT([no])])
-CFLAGS="$save_CFLAGS"
+AS_IF([test "x$GCC" = "xyes"],
+      [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
 
-if test x"$ax_pthread_ok" = xno; then
-for flag in $ax_pthread_flags; do
+# The presence of a feature test macro requesting re-entrant function
+# definitions is, on some systems, a strong hint that pthreads support is
+# correctly enabled
 
-        case $flag in
+case $host_os in
+        darwin* | hpux* | linux* | osf* | solaris*)
+        ax_pthread_check_macro="_REENTRANT"
+        ;;
+
+        aix*)
+        ax_pthread_check_macro="_THREAD_SAFE"
+        ;;
+
+        *)
+        ax_pthread_check_macro="--"
+        ;;
+esac
+AS_IF([test "x$ax_pthread_check_macro" = "x--"],
+      [ax_pthread_check_cond=0],
+      [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
+
+# Are we compiling with Clang?
+
+AC_CACHE_CHECK([whether $CC is Clang],
+    [ax_cv_PTHREAD_CLANG],
+    [ax_cv_PTHREAD_CLANG=no
+     # Note that Autoconf sets GCC=yes for Clang as well as GCC
+     if test "x$GCC" = "xyes"; then
+        AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
+            [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
+#            if defined(__clang__) && defined(__llvm__)
+             AX_PTHREAD_CC_IS_CLANG
+#            endif
+            ],
+            [ax_cv_PTHREAD_CLANG=yes])
+     fi
+    ])
+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
+
+ax_pthread_clang_warning=no
+
+# Clang needs special handling, because older versions handle the -pthread
+# option in a rather... idiosyncratic way
+
+if test "x$ax_pthread_clang" = "xyes"; then
+
+        # Clang takes -pthread; it has never supported any other flag
+
+        # (Note 1: This will need to be revisited if a system that Clang
+        # supports has POSIX threads in a separate library.  This tends not
+        # to be the way of modern systems, but it's conceivable.)
+
+        # (Note 2: On some systems, notably Darwin, -pthread is not needed
+        # to get POSIX threads support; the API is always present and
+        # active.  We could reasonably leave PTHREAD_CFLAGS empty.  But
+        # -pthread does define _REENTRANT, and while the Darwin headers
+        # ignore this macro, third-party headers might not.)
+
+        PTHREAD_CFLAGS="-pthread"
+        PTHREAD_LIBS=
+
+        ax_pthread_ok=yes
+
+        # However, older versions of Clang make a point of warning the user
+        # that, in an invocation where only linking and no compilation is
+        # taking place, the -pthread option has no effect ("argument unused
+        # during compilation").  They expect -pthread to be passed in only
+        # when source code is being compiled.
+        #
+        # Problem is, this is at odds with the way Automake and most other
+        # C build frameworks function, which is that the same flags used in
+        # compilation (CFLAGS) are also used in linking.  Many systems
+        # supported by AX_PTHREAD require exactly this for POSIX threads
+        # support, and in fact it is often not straightforward to specify a
+        # flag that is used only in the compilation phase and not in
+        # linking.  Such a scenario is extremely rare in practice.
+        #
+        # Even though use of the -pthread flag in linking would only print
+        # a warning, this can be a nuisance for well-run software projects
+        # that build with -Werror.  So if the active version of Clang has
+        # this misfeature, we search for an option to squash it.
+
+        AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
+            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
+            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+             # Create an alternate version of $ac_link that compiles and
+             # links in two steps (.c -> .o, .o -> exe) instead of one
+             # (.c -> exe), because the warning occurs only in the second
+             # step
+             ax_pthread_save_ac_link="$ac_link"
+             ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
+             ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
+             ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
+             ax_pthread_save_CFLAGS="$CFLAGS"
+             for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
+                AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
+                CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
+                ac_link="$ax_pthread_save_ac_link"
+                AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
+                    [ac_link="$ax_pthread_2step_ac_link"
+                     AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
+                         [break])
+                    ])
+             done
+             ac_link="$ax_pthread_save_ac_link"
+             CFLAGS="$ax_pthread_save_CFLAGS"
+             AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
+             ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
+            ])
+
+        case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
+                no | unknown) ;;
+                *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
+        esac
+
+fi # $ax_pthread_clang = yes
+
+if test "x$ax_pthread_ok" = "xno"; then
+for ax_pthread_try_flag in $ax_pthread_flags; do
+
+        case $ax_pthread_try_flag in
                 none)
                 AC_MSG_CHECKING([whether pthreads work without any flags])
                 ;;
 
+                -mt,pthread)
+                AC_MSG_CHECKING([whether pthreads work with -mt -lpthread])
+                PTHREAD_CFLAGS="-mt"
+                PTHREAD_LIBS="-lpthread"
+                ;;
+
                 -*)
-                AC_MSG_CHECKING([whether pthreads work with $flag])
-                PTHREAD_CFLAGS="$flag"
+                AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
+                PTHREAD_CFLAGS="$ax_pthread_try_flag"
                 ;;
 
                 pthread-config)
                 AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
-                if test x"$ax_pthread_config" = xno; then continue; fi
+                AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
                 PTHREAD_CFLAGS="`pthread-config --cflags`"
                 PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
                 ;;
 
                 *)
-                AC_MSG_CHECKING([for the pthreads library -l$flag])
-                PTHREAD_LIBS="-l$flag"
+                AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
+                PTHREAD_LIBS="-l$ax_pthread_try_flag"
                 ;;
         esac
 
-        save_LIBS="$LIBS"
-        save_CFLAGS="$CFLAGS"
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
 
         # Check for various functions.  We must include pthread.h,
         # since some functions may be macros.  (On the Sequent, we
@@ -218,7 +366,11 @@
         # pthread_cleanup_push because it is one of the few pthread
         # functions on Solaris that doesn't have a non-functional libc stub.
         # We try pthread_create on general principles.
+
         AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
+#                       if $ax_pthread_check_cond
+#                        error "$ax_pthread_check_macro must be defined"
+#                       endif
                         static void routine(void *a) { a = 0; }
                         static void *start_routine(void *a) { return a; }],
                        [pthread_t th; pthread_attr_t attr;
@@ -227,16 +379,14 @@
                         pthread_attr_init(&attr);
                         pthread_cleanup_push(routine, 0);
                         pthread_cleanup_pop(0) /* ; */])],
-                [ax_pthread_ok=yes],
-                [])
+            [ax_pthread_ok=yes],
+            [])
 
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 
         AC_MSG_RESULT([$ax_pthread_ok])
-        if test "x$ax_pthread_ok" = xyes; then
-                break;
-        fi
+        AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
 
         PTHREAD_LIBS=""
         PTHREAD_CFLAGS=""
@@ -244,71 +394,74 @@
 fi
 
 # Various other checks:
-if test "x$ax_pthread_ok" = xyes; then
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        save_CFLAGS="$CFLAGS"
+if test "x$ax_pthread_ok" = "xyes"; then
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
 
         # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
-        AC_MSG_CHECKING([for joinable pthread attribute])
-        attr_name=unknown
-        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-            AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
-                           [int attr = $attr; return attr /* ; */])],
-                [attr_name=$attr; break],
-                [])
-        done
-        AC_MSG_RESULT([$attr_name])
-        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
-            AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
-                               [Define to necessary symbol if this constant
-                                uses a non-standard name on your system.])
-        fi
+        AC_CACHE_CHECK([for joinable pthread attribute],
+            [ax_cv_PTHREAD_JOINABLE_ATTR],
+            [ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+             for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+                 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
+                                                 [int attr = $ax_pthread_attr; return attr /* ; */])],
+                                [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
+                                [])
+             done
+            ])
+        AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
+               test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
+               test "x$ax_pthread_joinable_attr_defined" != "xyes"],
+              [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
+                                  [$ax_cv_PTHREAD_JOINABLE_ATTR],
+                                  [Define to necessary symbol if this constant
+                                   uses a non-standard name on your system.])
+               ax_pthread_joinable_attr_defined=yes
+              ])
 
-        AC_MSG_CHECKING([if more special flags are required for pthreads])
-        flag=no
-        case ${host_os} in
-            aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
-            osf* | hpux*) flag="-D_REENTRANT";;
-            solaris*)
-            if test "$GCC" = "yes"; then
-                flag="-D_REENTRANT"
-            else
-                # TODO: What about Clang on Solaris?
-                flag="-mt -D_REENTRANT"
-            fi
-            ;;
-        esac
-        AC_MSG_RESULT([$flag])
-        if test "x$flag" != xno; then
-            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
-        fi
+        AC_CACHE_CHECK([whether more special flags are required for pthreads],
+            [ax_cv_PTHREAD_SPECIAL_FLAGS],
+            [ax_cv_PTHREAD_SPECIAL_FLAGS=no
+             case $host_os in
+             solaris*)
+             ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
+             ;;
+             esac
+            ])
+        AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
+               test "x$ax_pthread_special_flags_added" != "xyes"],
+              [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
+               ax_pthread_special_flags_added=yes])
 
         AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
-            [ax_cv_PTHREAD_PRIO_INHERIT], [
-                AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
-                                                [[int i = PTHREAD_PRIO_INHERIT;]])],
-                    [ax_cv_PTHREAD_PRIO_INHERIT=yes],
-                    [ax_cv_PTHREAD_PRIO_INHERIT=no])
+            [ax_cv_PTHREAD_PRIO_INHERIT],
+            [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
+                                             [[int i = PTHREAD_PRIO_INHERIT;]])],
+                            [ax_cv_PTHREAD_PRIO_INHERIT=yes],
+                            [ax_cv_PTHREAD_PRIO_INHERIT=no])
             ])
-        AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
-            [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
+        AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
+               test "x$ax_pthread_prio_inherit_defined" != "xyes"],
+              [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
+               ax_pthread_prio_inherit_defined=yes
+              ])
 
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 
         # More AIX lossage: compile with *_r variant
-        if test "x$GCC" != xyes; then
+        if test "x$GCC" != "xyes"; then
             case $host_os in
                 aix*)
                 AS_CASE(["x/$CC"],
-                  [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
-                  [#handle absolute path differently from PATH based program lookup
-                   AS_CASE(["x$CC"],
-                     [x/*],
-                     [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
-                     [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
+                    [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
+                    [#handle absolute path differently from PATH based program lookup
+                     AS_CASE(["x$CC"],
+                         [x/*],
+                         [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
+                         [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
                 ;;
             esac
         fi
@@ -321,7 +474,7 @@
 AC_SUBST([PTHREAD_CC])
 
 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$ax_pthread_ok" = xyes; then
+if test "x$ax_pthread_ok" = "xyes"; then
         ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
         :
 else
diff --git a/common/win32.mak b/common/win32.mak
index 87cd346..6060532 100644
--- a/common/win32.mak
+++ b/common/win32.mak
@@ -61,8 +61,11 @@
 
 update-exports:
 	make check-exports 2>&1 | patch -p1
-	git add win32/common/libgst*.def
-	git diff --cached -- win32/common/
+	if test -f "$(top_srcdir)/win32/common/libgstgl.def"; then \
+	  git checkout "$(top_srcdir)/win32/common/libgstgl.def";  \
+	fi
+	git add $(top_srcdir)/win32/common/libgst*.def
+	git diff --cached -- $(top_srcdir)/win32/common/
 	echo '^^^--- updated and staged changes above'
 
 # complain about nonportable printf format strings (%lld, %llu, %zu etc.)
diff --git a/config.h.in b/config.h.in
index b13b309..dde8e5e 100644
--- a/config.h.in
+++ b/config.h.in
@@ -79,6 +79,9 @@
 /* Define to 1 if you have the `alarm' function. */
 #undef HAVE_ALARM
 
+/* Have backtrace */
+#undef HAVE_BACKTRACE
+
 /* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
    CoreFoundation framework. */
 #undef HAVE_CFLOCALECOPYCURRENT
@@ -164,6 +167,9 @@
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 
+/* Define to 1 if you have the <execinfo.h> header file. */
+#undef HAVE_EXECINFO_H
+
 /* Define to 1 if you have the `fgetpos' function. */
 #undef HAVE_FGETPOS
 
@@ -397,15 +403,15 @@
 /* Have __uint128_t type */
 #undef HAVE_UINT128_T
 
-/* defined if unaligned memory access works correctly */
-#undef HAVE_UNALIGNED_ACCESS
-
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
 /* Define to 1 if the system has the type `unsigned long long int'. */
 #undef HAVE_UNSIGNED_LONG_LONG_INT
 
+/* libunwind available */
+#undef HAVE_UNWIND
+
 /* Define if valgrind should be used */
 #undef HAVE_VALGRIND
 
diff --git a/configure b/configure
index f224002..af186c2 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 1.8.3.
+# Generated by GNU Autoconf 2.69 for GStreamer 1.9.90.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
 #
@@ -591,8 +591,8 @@
 # Identity of this package.
 PACKAGE_NAME='GStreamer'
 PACKAGE_TARNAME='gstreamer'
-PACKAGE_VERSION='1.8.3'
-PACKAGE_STRING='GStreamer 1.8.3'
+PACKAGE_VERSION='1.9.90'
+PACKAGE_STRING='GStreamer 1.9.90'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
@@ -683,6 +683,8 @@
 GST_LICENSE
 HAVE_CHECK_FALSE
 HAVE_CHECK_TRUE
+UNWIND_LIBS
+UNWIND_CFLAGS
 HAVE_GTK_FALSE
 HAVE_GTK_TRUE
 GTK_LIBS
@@ -803,7 +805,6 @@
 am__fastdepCCAS_TRUE
 CCASDEPMODE
 CCAS
-GST_HAVE_UNALIGNED_ACCESS_DEFINE
 HOST_CPU
 HAVE_CPU_CRISV32_FALSE
 HAVE_CPU_CRISV32_TRUE
@@ -861,6 +862,7 @@
 BASH_COMPLETION_DIR
 BASH_COMPLETION_LIBS
 BASH_COMPLETION_CFLAGS
+GSTCONFIG_BUILT_WITH_MSVC
 GST_PKG_CONFIG_PATH
 GST_PACKAGE_ORIGIN
 GST_PACKAGE_NAME
@@ -884,12 +886,6 @@
 GST_DISABLE_REGISTRY_FALSE
 GST_DISABLE_REGISTRY_TRUE
 GST_DISABLE_REGISTRY_DEFINE
-GST_DISABLE_ALLOC_TRACE_FALSE
-GST_DISABLE_ALLOC_TRACE_TRUE
-GST_DISABLE_ALLOC_TRACE_DEFINE
-GST_DISABLE_TRACE_FALSE
-GST_DISABLE_TRACE_TRUE
-GST_DISABLE_TRACE_DEFINE
 GST_DISABLE_OPTION_PARSING_FALSE
 GST_DISABLE_OPTION_PARSING_TRUE
 GST_DISABLE_OPTION_PARSING_DEFINE
@@ -1087,8 +1083,6 @@
 enable_gst_tracer_hooks
 enable_parse
 enable_option_parsing
-enable_trace
-enable_alloc_trace
 enable_registry
 enable_plugin
 enable_debug
@@ -1151,7 +1145,9 @@
 GIO_CFLAGS
 GIO_LIBS
 GTK_CFLAGS
-GTK_LIBS'
+GTK_LIBS
+UNWIND_CFLAGS
+UNWIND_LIBS'
 
 
 # Initialize some variables set by options.
@@ -1702,7 +1698,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 1.8.3 to adapt to many kinds of systems.
+\`configure' configures GStreamer 1.9.90 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1774,7 +1770,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer 1.8.3:";;
+     short | recursive ) echo "Configuration of GStreamer 1.9.90:";;
    esac
   cat <<\_ACEOF
 
@@ -1807,8 +1803,6 @@
   --disable-parse         disable command-line parser
   --disable-option-parsing
                           disable option parsing when gst_init
-  --disable-trace         disable historic tracing subsystem
-  --disable-alloc-trace   disable allocation tracing
   --disable-registry      disable plugin registry
   --disable-plugin        disable plugin
   --disable-debug         disable addition of -g debugging info
@@ -1915,6 +1909,9 @@
   GIO_LIBS    linker flags for GIO, overriding pkg-config
   GTK_CFLAGS  C compiler flags for GTK, overriding pkg-config
   GTK_LIBS    linker flags for GTK, overriding pkg-config
+  UNWIND_CFLAGS
+              C compiler flags for UNWIND, overriding pkg-config
+  UNWIND_LIBS linker flags for UNWIND, overriding pkg-config
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -1982,7 +1979,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer configure 1.8.3
+GStreamer configure 1.9.90
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2841,7 +2838,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 $as_me 1.8.3, which was
+It was created by GStreamer $as_me 1.9.90, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3822,7 +3819,7 @@
 
 # Define the identity of the package.
  PACKAGE='gstreamer'
- VERSION='1.8.3'
+ VERSION='1.9.90'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4033,9 +4030,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.8.3 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.8.3 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.8.3 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.9.90 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.9.90 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.9.90 | cut -d'.' -f3)
 
 
 
@@ -4046,7 +4043,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.8.3 | cut -d'.' -f4)
+  NANO=$(echo 1.9.90 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -8889,10 +8886,10 @@
 done
 
 
-  GST_CURRENT=803
+  GST_CURRENT=990
   GST_REVISION=0
-  GST_AGE=803
-  GST_LIBVERSION=803:0:803
+  GST_AGE=990
+  GST_LIBVERSION=990:0:990
 
 
 
@@ -15746,74 +15743,6 @@
 
 
 
-  # Check whether --enable-trace was given.
-if test "${enable_trace+set}" = set; then :
-  enableval=$enable_trace;
-      case "${enableval}" in
-        yes) GST_DISABLE_TRACE=no ;;
-        no) GST_DISABLE_TRACE=yes ;;
-        *) as_fn_error $? "bad value ${enableval} for --enable-trace" "$LINENO" 5 ;;
-       esac
-
-else
-  GST_DISABLE_TRACE=no
-fi
-
-  if test x$GST_DISABLE_TRACE = xyes; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: disabled subsystem historic tracing subsystem" >&5
-$as_echo "$as_me: disabled subsystem historic tracing subsystem" >&6;}
-    GST_DISABLE_TRACE_DEFINE="#define GST_DISABLE_TRACE 1"
-  else
-    GST_DISABLE_TRACE_DEFINE="/* #undef GST_DISABLE_TRACE */"
-  fi
-
-
-
- if test "x$GST_DISABLE_TRACE" = "xyes"; then
-  GST_DISABLE_TRACE_TRUE=
-  GST_DISABLE_TRACE_FALSE='#'
-else
-  GST_DISABLE_TRACE_TRUE='#'
-  GST_DISABLE_TRACE_FALSE=
-fi
-
-
-
-
-  # Check whether --enable-alloc-trace was given.
-if test "${enable_alloc_trace+set}" = set; then :
-  enableval=$enable_alloc_trace;
-      case "${enableval}" in
-        yes) GST_DISABLE_ALLOC_TRACE=no ;;
-        no) GST_DISABLE_ALLOC_TRACE=yes ;;
-        *) as_fn_error $? "bad value ${enableval} for --enable-alloc-trace" "$LINENO" 5 ;;
-       esac
-
-else
-  GST_DISABLE_ALLOC_TRACE=no
-fi
-
-  if test x$GST_DISABLE_ALLOC_TRACE = xyes; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: disabled subsystem allocation tracing" >&5
-$as_echo "$as_me: disabled subsystem allocation tracing" >&6;}
-    GST_DISABLE_ALLOC_TRACE_DEFINE="#define GST_DISABLE_ALLOC_TRACE 1"
-  else
-    GST_DISABLE_ALLOC_TRACE_DEFINE="/* #undef GST_DISABLE_ALLOC_TRACE */"
-  fi
-
-
-
- if test "x$GST_DISABLE_ALLOC_TRACE" = "xyes"; then
-  GST_DISABLE_ALLOC_TRACE_TRUE=
-  GST_DISABLE_ALLOC_TRACE_FALSE='#'
-else
-  GST_DISABLE_ALLOC_TRACE_TRUE='#'
-  GST_DISABLE_ALLOC_TRACE_FALSE=
-fi
-
-
-
-
   # Check whether --enable-registry was given.
 if test "${enable_registry+set}" = set; then :
   enableval=$enable_registry;
@@ -16444,6 +16373,11 @@
   fi
 
 
+# We only use this when building with MSVC, which is only done with the
+# alternate Meson build system files
+GSTCONFIG_BUILT_WITH_MSVC=0
+
+
 
 # Check whether --with-bash-completion-dir was given.
 if test "${with_bash_completion_dir+set}" = set; then :
@@ -16656,6 +16590,10 @@
 fi
 
 
+if test x$enable_static = xyes -a x$enable_shared = xno; then
+  GST_OBJ_STATIC_CFLAGS="-DGST_STATIC_COMPILATION"
+fi
+
 # Check whether --enable-tests was given.
 if test "${enable_tests+set}" = set; then :
   enableval=$enable_tests;
@@ -17572,74 +17510,6 @@
 
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if unaligned memory access works correctly" >&5
-$as_echo_n "checking if unaligned memory access works correctly... " >&6; }
-  if test x"$as_cv_unaligned_access" = x ; then
-    case $host in
-      alpha*|arc*|arm*|aarch64*|hp*|mips*|sh*|sparc*|ia64*)
-        $as_echo_n "(blacklisted) " >&6
-        as_cv_unaligned_access=no
-	;;
-      i?86*|x86_64*|amd64*|powerpc*|m68k*|cris*)
-        $as_echo_n "(whitelisted) " >&6
-        as_cv_unaligned_access=yes
-	;;
-    esac
-  else
-    $as_echo_n "(cached) " >&6
-  fi
-  if test x"$as_cv_unaligned_access" = x ; then
-    if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run test program while cross compiling
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int main(int argc, char **argv)
-{
-  char array[] = "ABCDEFGH";
-  unsigned int iarray[2];
-  memcpy(iarray,array,8);
-#define GET(x) (*(unsigned int *)((char *)iarray + (x)))
-  if(GET(0) != 0x41424344 && GET(0) != 0x44434241) return 1;
-  if(GET(1) != 0x42434445 && GET(1) != 0x45444342) return 1;
-  if(GET(2) != 0x43444546 && GET(2) != 0x46454443) return 1;
-  if(GET(3) != 0x44454647 && GET(3) != 0x47464544) return 1;
-  return 0;
-}
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  as_cv_unaligned_access="yes"
-else
-  as_cv_unaligned_access="no"
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-  fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $as_cv_unaligned_access" >&5
-$as_echo "$as_cv_unaligned_access" >&6; }
-  if test "$as_cv_unaligned_access" = "yes"; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_UNALIGNED_ACCESS 1
-_ACEOF
-
-  fi
-
-if test x${as_cv_unaligned_access} = xyes ; then
-  GST_HAVE_UNALIGNED_ACCESS_DEFINE="#define GST_HAVE_UNALIGNED_ACCESS 1"
-else
-  GST_HAVE_UNALIGNED_ACCESS_DEFINE="#define GST_HAVE_UNALIGNED_ACCESS 0"
-fi
-
-
-
 
 
   case $host_os in
@@ -24710,6 +24580,8 @@
 
 
 
+
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24719,19 +24591,23 @@
 ax_pthread_ok=no
 
 # We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
+# requires special compiler flags (e.g. on Tru64 or Sequent).
 # It gets checked for in the link test anyway.
 
 # First of all, check if the user has set any of the PTHREAD_LIBS,
 # etcetera environment variables, and if threads linking works using
 # them:
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
-        save_CFLAGS="$CFLAGS"
+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
+        ax_pthread_save_CC="$CC"
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        if test "x$PTHREAD_CC" != "x"; then :
+  CC="$PTHREAD_CC"
+fi
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-        save_LIBS="$LIBS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
-$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5
+$as_echo_n "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; }
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -24757,12 +24633,13 @@
     conftest$ac_exeext conftest.$ac_ext
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
 $as_echo "$ax_pthread_ok" >&6; }
-        if test x"$ax_pthread_ok" = xno; then
+        if test "x$ax_pthread_ok" = "xno"; then
                 PTHREAD_LIBS=""
                 PTHREAD_CFLAGS=""
         fi
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CC="$ax_pthread_save_CC"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 fi
 
 # We must check for the threads library under a number of different
@@ -24775,7 +24652,7 @@
 # which indicates that we try without any flags at all, and "pthread-config"
 # which is a program returning the flags for the Pth emulation library.
 
-ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
 
 # The ordering *is* (sometimes) important.  Some notes on the
 # individual items follow:
@@ -24784,82 +24661,257 @@
 # none: in case threads are in libc; should be tried before -Kthread and
 #       other compiler flags to prevent continual compiler warnings
 # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
+#           (Note: HP C rejects this with "bad form for `-t' option")
+# -pthreads: Solaris/gcc (Note: HP C also rejects)
 # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-#      doesn't hurt to check since this sometimes defines pthreads too;
-#      also defines -D_REENTRANT)
-#      ... -mt is also the pthreads flag for HP/aCC
+#      doesn't hurt to check since this sometimes defines pthreads and
+#      -D_REENTRANT too), HP C (must be checked before -lpthread, which
+#      is present but should not be used directly; and before -mthreads,
+#      because the compiler interprets this as "-mt" + "-hreads")
+# -mthreads: Mingw32/gcc, Lynx/gcc
 # pthread: Linux, etcetera
 # --thread-safe: KAI C++
 # pthread-config: use pthread-config program (for GNU Pth library)
 
-case ${host_os} in
+case $host_os in
+
+        freebsd*)
+
+        # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+        # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+
+        ax_pthread_flags="-kthread lthread $ax_pthread_flags"
+        ;;
+
+        hpux*)
+
+        # From the cc(1) man page: "[-mt] Sets various -D flags to enable
+        # multi-threading and also sets -lpthread."
+
+        ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
+        ;;
+
+        openedition*)
+
+        # IBM z/OS requires a feature-test macro to be defined in order to
+        # enable POSIX threads at all, so give the user a hint if this is
+        # not set. (We don't define these ourselves, as they can affect
+        # other portions of the system API in unpredictable ways.)
+
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#            if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
+             AX_PTHREAD_ZOS_MISSING
+#            endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5
+$as_echo "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;}
+fi
+rm -f conftest*
+
+        ;;
+
         solaris*)
 
         # On Solaris (at least, for some versions), libc contains stubbed
         # (non-functional) versions of the pthreads routines, so link-based
-        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
-        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
-        # a function called by this macro, so we could check for that, but
-        # who knows whether they'll stub that too in a future libc.)  So,
-        # we'll just look for -pthreads and -lpthread first:
+        # tests will erroneously succeed. (N.B.: The stubs are missing
+        # pthread_cleanup_push, or rather a function called by this macro,
+        # so we could check for that, but who knows whether they'll stub
+        # that too in a future libc.)  So we'll check first for the
+        # standard Solaris way of linking pthreads (-mt -lpthread).
 
-        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
-        ;;
-
-        darwin*)
-        ax_pthread_flags="-pthread $ax_pthread_flags"
+        ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
         ;;
 esac
 
-# Clang doesn't consider unrecognized options an error unless we specify
-# -Werror. We throw in some extra Clang-specific options to ensure that
-# this doesn't happen for GCC, which also accepts -Werror.
+# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler needs -Werror to reject unknown flags" >&5
-$as_echo_n "checking if compiler needs -Werror to reject unknown flags... " >&6; }
-save_CFLAGS="$CFLAGS"
-ax_pthread_extra_flags="-Werror"
-CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-int foo(void);
-int
-main ()
-{
-foo()
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  ax_pthread_extra_flags=
-                   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if test "x$GCC" = "xyes"; then :
+  ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-CFLAGS="$save_CFLAGS"
 
-if test x"$ax_pthread_ok" = xno; then
-for flag in $ax_pthread_flags; do
+# The presence of a feature test macro requesting re-entrant function
+# definitions is, on some systems, a strong hint that pthreads support is
+# correctly enabled
 
-        case $flag in
+case $host_os in
+        darwin* | hpux* | linux* | osf* | solaris*)
+        ax_pthread_check_macro="_REENTRANT"
+        ;;
+
+        aix*)
+        ax_pthread_check_macro="_THREAD_SAFE"
+        ;;
+
+        *)
+        ax_pthread_check_macro="--"
+        ;;
+esac
+if test "x$ax_pthread_check_macro" = "x--"; then :
+  ax_pthread_check_cond=0
+else
+  ax_pthread_check_cond="!defined($ax_pthread_check_macro)"
+fi
+
+# Are we compiling with Clang?
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5
+$as_echo_n "checking whether $CC is Clang... " >&6; }
+if ${ax_cv_PTHREAD_CLANG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_CLANG=no
+     # Note that Autoconf sets GCC=yes for Clang as well as GCC
+     if test "x$GCC" = "xyes"; then
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
+#            if defined(__clang__) && defined(__llvm__)
+             AX_PTHREAD_CC_IS_CLANG
+#            endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1; then :
+  ax_cv_PTHREAD_CLANG=yes
+fi
+rm -f conftest*
+
+     fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5
+$as_echo "$ax_cv_PTHREAD_CLANG" >&6; }
+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
+
+ax_pthread_clang_warning=no
+
+# Clang needs special handling, because older versions handle the -pthread
+# option in a rather... idiosyncratic way
+
+if test "x$ax_pthread_clang" = "xyes"; then
+
+        # Clang takes -pthread; it has never supported any other flag
+
+        # (Note 1: This will need to be revisited if a system that Clang
+        # supports has POSIX threads in a separate library.  This tends not
+        # to be the way of modern systems, but it's conceivable.)
+
+        # (Note 2: On some systems, notably Darwin, -pthread is not needed
+        # to get POSIX threads support; the API is always present and
+        # active.  We could reasonably leave PTHREAD_CFLAGS empty.  But
+        # -pthread does define _REENTRANT, and while the Darwin headers
+        # ignore this macro, third-party headers might not.)
+
+        PTHREAD_CFLAGS="-pthread"
+        PTHREAD_LIBS=
+
+        ax_pthread_ok=yes
+
+        # However, older versions of Clang make a point of warning the user
+        # that, in an invocation where only linking and no compilation is
+        # taking place, the -pthread option has no effect ("argument unused
+        # during compilation").  They expect -pthread to be passed in only
+        # when source code is being compiled.
+        #
+        # Problem is, this is at odds with the way Automake and most other
+        # C build frameworks function, which is that the same flags used in
+        # compilation (CFLAGS) are also used in linking.  Many systems
+        # supported by AX_PTHREAD require exactly this for POSIX threads
+        # support, and in fact it is often not straightforward to specify a
+        # flag that is used only in the compilation phase and not in
+        # linking.  Such a scenario is extremely rare in practice.
+        #
+        # Even though use of the -pthread flag in linking would only print
+        # a warning, this can be a nuisance for well-run software projects
+        # that build with -Werror.  So if the active version of Clang has
+        # this misfeature, we search for an option to squash it.
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5
+$as_echo_n "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; }
+if ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+             # Create an alternate version of $ac_link that compiles and
+             # links in two steps (.c -> .o, .o -> exe) instead of one
+             # (.c -> exe), because the warning occurs only in the second
+             # step
+             ax_pthread_save_ac_link="$ac_link"
+             ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
+             ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
+             ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
+             ax_pthread_save_CFLAGS="$CFLAGS"
+             for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
+                if test "x$ax_pthread_try" = "xunknown"; then :
+  break
+fi
+                CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
+                ac_link="$ax_pthread_save_ac_link"
+                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main(void){return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_link="$ax_pthread_2step_ac_link"
+                     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main(void){return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+             done
+             ac_link="$ax_pthread_save_ac_link"
+             CFLAGS="$ax_pthread_save_CFLAGS"
+             if test "x$ax_pthread_try" = "x"; then :
+  ax_pthread_try=no
+fi
+             ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5
+$as_echo "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; }
+
+        case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
+                no | unknown) ;;
+                *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
+        esac
+
+fi # $ax_pthread_clang = yes
+
+if test "x$ax_pthread_ok" = "xno"; then
+for ax_pthread_try_flag in $ax_pthread_flags; do
+
+        case $ax_pthread_try_flag in
                 none)
                 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
 $as_echo_n "checking whether pthreads work without any flags... " >&6; }
                 ;;
 
+                -mt,pthread)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with -mt -lpthread" >&5
+$as_echo_n "checking whether pthreads work with -mt -lpthread... " >&6; }
+                PTHREAD_CFLAGS="-mt"
+                PTHREAD_LIBS="-lpthread"
+                ;;
+
                 -*)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5
-$as_echo_n "checking whether pthreads work with $flag... " >&6; }
-                PTHREAD_CFLAGS="$flag"
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5
+$as_echo_n "checking whether pthreads work with $ax_pthread_try_flag... " >&6; }
+                PTHREAD_CFLAGS="$ax_pthread_try_flag"
                 ;;
 
                 pthread-config)
@@ -24901,22 +24953,24 @@
 fi
 
 
-                if test x"$ax_pthread_config" = xno; then continue; fi
+                if test "x$ax_pthread_config" = "xno"; then :
+  continue
+fi
                 PTHREAD_CFLAGS="`pthread-config --cflags`"
                 PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
                 ;;
 
                 *)
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5
-$as_echo_n "checking for the pthreads library -l$flag... " >&6; }
-                PTHREAD_LIBS="-l$flag"
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5
+$as_echo_n "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; }
+                PTHREAD_LIBS="-l$ax_pthread_try_flag"
                 ;;
         esac
 
-        save_LIBS="$LIBS"
-        save_CFLAGS="$CFLAGS"
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
         LIBS="$PTHREAD_LIBS $LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
 
         # Check for various functions.  We must include pthread.h,
         # since some functions may be macros.  (On the Sequent, we
@@ -24927,9 +24981,13 @@
         # pthread_cleanup_push because it is one of the few pthread
         # functions on Solaris that doesn't have a non-functional libc stub.
         # We try pthread_create on general principles.
+
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <pthread.h>
+#                       if $ax_pthread_check_cond
+#                        error "$ax_pthread_check_macro must be defined"
+#                       endif
                         static void routine(void *a) { a = 0; }
                         static void *start_routine(void *a) { return a; }
 int
@@ -24951,14 +25009,14 @@
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
 $as_echo "$ax_pthread_ok" >&6; }
-        if test "x$ax_pthread_ok" = xyes; then
-                break;
-        fi
+        if test "x$ax_pthread_ok" = "xyes"; then :
+  break
+fi
 
         PTHREAD_LIBS=""
         PTHREAD_CFLAGS=""
@@ -24966,72 +25024,80 @@
 fi
 
 # Various other checks:
-if test "x$ax_pthread_ok" = xyes; then
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        save_CFLAGS="$CFLAGS"
+if test "x$ax_pthread_ok" = "xyes"; then
+        ax_pthread_save_CFLAGS="$CFLAGS"
+        ax_pthread_save_LIBS="$LIBS"
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
 
         # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
 $as_echo_n "checking for joinable pthread attribute... " >&6; }
-        attr_name=unknown
-        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+if ${ax_cv_PTHREAD_JOINABLE_ATTR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+             for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+                 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <pthread.h>
 int
 main ()
 {
-int attr = $attr; return attr /* ; */
+int attr = $ax_pthread_attr; return attr /* ; */
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  attr_name=$attr; break
+  ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-        done
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5
-$as_echo "$attr_name" >&6; }
-        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+             done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5
+$as_echo "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; }
+        if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
+               test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
+               test "x$ax_pthread_joinable_attr_defined" != "xyes"; then :
 
 cat >>confdefs.h <<_ACEOF
-#define PTHREAD_CREATE_JOINABLE $attr_name
+#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR
 _ACEOF
 
-        fi
+               ax_pthread_joinable_attr_defined=yes
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5
-$as_echo_n "checking if more special flags are required for pthreads... " >&6; }
-        flag=no
-        case ${host_os} in
-            aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
-            osf* | hpux*) flag="-D_REENTRANT";;
-            solaris*)
-            if test "$GCC" = "yes"; then
-                flag="-D_REENTRANT"
-            else
-                # TODO: What about Clang on Solaris?
-                flag="-mt -D_REENTRANT"
-            fi
-            ;;
-        esac
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag" >&5
-$as_echo "$flag" >&6; }
-        if test "x$flag" != xno; then
-            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
-        fi
+fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5
+$as_echo_n "checking whether more special flags are required for pthreads... " >&6; }
+if ${ax_cv_PTHREAD_SPECIAL_FLAGS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_PTHREAD_SPECIAL_FLAGS=no
+             case $host_os in
+             solaris*)
+             ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
+             ;;
+             esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5
+$as_echo "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; }
+        if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
+               test "x$ax_pthread_special_flags_added" != "xyes"; then :
+  PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
+               ax_pthread_special_flags_added=yes
+fi
 
         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5
 $as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; }
 if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
-                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <pthread.h>
 int
@@ -25053,23 +25119,26 @@
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
 $as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
-        if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"; then :
+        if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
+               test "x$ax_pthread_prio_inherit_defined" != "xyes"; then :
 
 $as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h
 
+               ax_pthread_prio_inherit_defined=yes
+
 fi
 
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+        CFLAGS="$ax_pthread_save_CFLAGS"
+        LIBS="$ax_pthread_save_LIBS"
 
         # More AIX lossage: compile with *_r variant
-        if test "x$GCC" != xyes; then
+        if test "x$GCC" != "xyes"; then
             case $host_os in
                 aix*)
                 case "x/$CC" in #(
   x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) :
     #handle absolute path differently from PATH based program lookup
-                   case "x$CC" in #(
+                     case "x$CC" in #(
   x/*) :
     if as_fn_executable_p ${CC}_r; then :
   PTHREAD_CC="${CC}_r"
@@ -25134,7 +25203,7 @@
 
 
 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$ax_pthread_ok" = xyes; then
+if test "x$ax_pthread_ok" = "xyes"; then
 
 $as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
 
@@ -27145,6 +27214,107 @@
 fi
 
 
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for UNWIND" >&5
+$as_echo_n "checking for UNWIND... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$UNWIND_CFLAGS"; then
+        pkg_cv_UNWIND_CFLAGS="$UNWIND_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libunwind\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libunwind") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_UNWIND_CFLAGS=`$PKG_CONFIG --cflags "libunwind" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$UNWIND_LIBS"; then
+        pkg_cv_UNWIND_LIBS="$UNWIND_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libunwind\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libunwind") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_UNWIND_LIBS=`$PKG_CONFIG --libs "libunwind" 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
+	        UNWIND_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libunwind"`
+        else
+	        UNWIND_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libunwind"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$UNWIND_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+                HAVE_UNWIND=no
+elif test $pkg_failed = untried; then
+	HAVE_UNWIND=no
+else
+	UNWIND_CFLAGS=$pkg_cv_UNWIND_CFLAGS
+	UNWIND_LIBS=$pkg_cv_UNWIND_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	HAVE_UNWIND=yes
+fi
+
+ac_fn_c_check_func "$LINENO" "backtrace" "ac_cv_func_backtrace"
+if test "x$ac_cv_func_backtrace" = xyes; then :
+
+  for ac_header in execinfo.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "execinfo.h" "ac_cv_header_execinfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_execinfo_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXECINFO_H 1
+_ACEOF
+
+
+$as_echo "#define HAVE_BACKTRACE 1" >>confdefs.h
+
+
+fi
+
+done
+
+
+fi
+
+
+if test "x$HAVE_UNWIND" = "xyes"; then
+
+$as_echo "#define HAVE_UNWIND 1" >>confdefs.h
+
+fi
+
 # Check whether --enable-check was given.
 if test "${enable_check+set}" = set; then :
   enableval=$enable_check;
@@ -27711,8 +27881,8 @@
 GST_LIB_LDFLAGS="-export-symbols-regex \^_?\(gst_\|Gst\|GST_\).*"
 
 
-GST_OBJ_CFLAGS="\$(GST_ALL_CFLAGS)"
-GST_OBJ_CXXFLAGS="\$(GST_ALL_CXXFLAGS)"
+GST_OBJ_CFLAGS="\$(GST_ALL_CFLAGS) $GST_OBJ_STATIC_CFLAGS"
+GST_OBJ_CXXFLAGS="\$(GST_ALL_CXXFLAGS) $GST_OBJ_STATIC_CFLAGS"
 GST_OBJ_LIBS="\$(top_builddir)/gst/libgstreamer-$GST_API_VERSION.la \$(GST_ALL_LIBS)"
 
 
@@ -28858,14 +29028,6 @@
   as_fn_error $? "conditional \"GST_DISABLE_OPTION_PARSING\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${GST_DISABLE_TRACE_TRUE}" && test -z "${GST_DISABLE_TRACE_FALSE}"; then
-  as_fn_error $? "conditional \"GST_DISABLE_TRACE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${GST_DISABLE_ALLOC_TRACE_TRUE}" && test -z "${GST_DISABLE_ALLOC_TRACE_FALSE}"; then
-  as_fn_error $? "conditional \"GST_DISABLE_ALLOC_TRACE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${GST_DISABLE_REGISTRY_TRUE}" && test -z "${GST_DISABLE_REGISTRY_FALSE}"; then
   as_fn_error $? "conditional \"GST_DISABLE_REGISTRY\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -29500,7 +29662,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GStreamer $as_me 1.8.3, which was
+This file was extended by GStreamer $as_me 1.9.90, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -29566,7 +29728,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 config.status 1.8.3
+GStreamer config.status 1.9.90
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -32192,8 +32354,6 @@
 if test "x${GST_DISABLE_GST_TRACER_HOOKS}" = "xno"; then enable_gst_tracer_hooks="yes"; fi
 if test "x${GST_DISABLE_PARSE}" = "xno"; then enable_parse="yes"; fi
 if test "x${GST_DISABLE_OPTION_PARSING}" = "xno"; then enable_option_parsing="yes"; fi
-if test "x${GST_DISABLE_TRACE}" = "xno"; then enable_trace="yes"; fi
-if test "x${GST_DISABLE_ALLOC_TRACE}" = "xno"; then enable_alloc_trace="yes"; fi
 if test "x${GST_DISABLE_PLUGIN}" = "xno"; then enable_plugin="yes"; fi
 if test "x${GST_DISABLE_REGISTRY}" = "xno"; then enable_registry="yes"; fi
 
@@ -32214,13 +32374,12 @@
 	Tracing subsystem hooks    : ${enable_gst_tracer_hooks}
 	Command-line parser        : ${enable_parse}
 	Option parsing in gst_init : ${enable_option_parsing}
-	Historic tracing subsystem : ${enable_trace}
-	Allocation tracing         : ${enable_alloc_trace}
 	Plugin registry            : ${enable_registry}
 	Plugin support	           : ${enable_plugin}
 	Static plugins             : ${enable_static_plugins}
 	Unit testing support       : ${BUILD_CHECK}
 	PTP clock support          : ${HAVE_PTP}
+	libunwind support          : ${HAVE_UNWIND}
 
 	Debug                      : ${USE_DEBUG}
 	Profiling                  : ${USE_PROFILING}
diff --git a/configure.ac b/configure.ac
index 05ac220..bf14e2b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@
 dnl when going to/from release please set the nano (fourth number) right !
 dnl releases only do Wall, git and prerelease does Werror too
 dnl
-AC_INIT([GStreamer],[1.8.3],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gstreamer])
+AC_INIT([GStreamer],[1.9.90],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gstreamer])
 AG_GST_INIT
 
 dnl initialize automake (we require GNU make)
@@ -62,7 +62,7 @@
 dnl      1.10.9 (who knows) => 1009
 dnl
 dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 803, 0, 803)
+AS_LIBTOOL(GST, 990, 0, 990)
 
 dnl *** autotools stuff ****
 
@@ -101,10 +101,6 @@
   AC_DEFINE(GST_DISABLE_OPTION_PARSING, 1,
     [Define if option parsing is disabled])
 fi
-AG_GST_CHECK_SUBSYSTEM_DISABLE(TRACE,[historic tracing subsystem])
-AM_CONDITIONAL(GST_DISABLE_TRACE, test "x$GST_DISABLE_TRACE" = "xyes")
-AG_GST_CHECK_SUBSYSTEM_DISABLE(ALLOC_TRACE,[allocation tracing])
-AM_CONDITIONAL(GST_DISABLE_ALLOC_TRACE, test "x$GST_DISABLE_ALLOC_TRACE" = "xyes")
 AG_GST_CHECK_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
 AM_CONDITIONAL(GST_DISABLE_REGISTRY, test "x$GST_DISABLE_REGISTRY" = "xyes")
 dnl define a substitution to use in docs/gst/gstreamer.types
@@ -135,6 +131,11 @@
   ["${srcdir}/gstreamer.doap"],
   [$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO])
 
+# We only use this when building with MSVC, which is only done with the
+# alternate Meson build system files
+GSTCONFIG_BUILT_WITH_MSVC=0
+AC_SUBST(GSTCONFIG_BUILT_WITH_MSVC)
+
 dnl check for bash completion
 AC_ARG_WITH([bash-completion-dir],
     AS_HELP_STRING([--with-bash-completion-dir[=PATH]],
@@ -188,6 +189,12 @@
 AC_SUBST(GST_PLUGIN_LIBTOOLFLAGS)
 AM_CONDITIONAL(GST_PLUGIN_BUILD_STATIC, test "x$enable_static_plugins" = "xyes")
 
+dnl If only building static libraries, define GST_STATIC_COMPILATION. This is
+dnl needed only on Windows, but it doesn't hurt to have it everywhere.
+if test x$enable_static = xyes -a x$enable_shared = xno; then
+  GST_OBJ_STATIC_CFLAGS="-DGST_STATIC_COMPILATION"
+fi
+
 dnl building of tests
 AC_ARG_ENABLE(tests,
   AS_HELP_STRING([--disable-tests],[disable building test apps]),
@@ -409,17 +416,6 @@
 HOST_CPU=$host_cpu
 AC_SUBST(HOST_CPU)
 
-dnl common/m4/gst-arch.m4
-dnl check for unaligned access
-AG_GST_UNALIGNED_ACCESS
-dnl create a configure variable for gst/gstconfig.h
-if test x${as_cv_unaligned_access} = xyes ; then
-  GST_HAVE_UNALIGNED_ACCESS_DEFINE="#define GST_HAVE_UNALIGNED_ACCESS 1"
-else
-  GST_HAVE_UNALIGNED_ACCESS_DEFINE="#define GST_HAVE_UNALIGNED_ACCESS 0"
-fi
-AC_SUBST(GST_HAVE_UNALIGNED_ACCESS_DEFINE)
-
 dnl check for platform specific settings
 AG_GST_PLATFORM
 
@@ -791,6 +787,20 @@
 fi
 AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
 
+dnl libunwind is optionally used by the leaks tracer
+PKG_CHECK_MODULES(UNWIND, libunwind, HAVE_UNWIND=yes, HAVE_UNWIND=no)
+
+dnl Check for backtrace() from libc
+AC_CHECK_FUNC(backtrace, [
+  AC_CHECK_HEADERS([execinfo.h], [
+    AC_DEFINE(HAVE_BACKTRACE,1,[Have backtrace])
+  ], [], [])
+])
+
+if test "x$HAVE_UNWIND" = "xyes"; then
+  AC_DEFINE(HAVE_UNWIND, 1, [libunwind available])
+fi
+
 dnl building of unit test libraries
 AC_ARG_ENABLE(check,
   AS_HELP_STRING([--disable-check],[disable building unit test libraries]),
@@ -950,8 +960,8 @@
 dnl GST_OBJ_*
 dnl default vars for all internal objects built on libgstreamer
 dnl includes GST_ALL_*
-GST_OBJ_CFLAGS="\$(GST_ALL_CFLAGS)"
-GST_OBJ_CXXFLAGS="\$(GST_ALL_CXXFLAGS)"
+GST_OBJ_CFLAGS="\$(GST_ALL_CFLAGS) $GST_OBJ_STATIC_CFLAGS"
+GST_OBJ_CXXFLAGS="\$(GST_ALL_CXXFLAGS) $GST_OBJ_STATIC_CFLAGS"
 GST_OBJ_LIBS="\$(top_builddir)/gst/libgstreamer-$GST_API_VERSION.la \$(GST_ALL_LIBS)"
 AC_SUBST(GST_OBJ_CFLAGS)
 AC_SUBST(GST_OBJ_CXXFLAGS)
@@ -976,7 +986,7 @@
 
 dnl things for our internal libcheck (must be called even if building
 dnl libcheck is disabled because it defines conditionals)
-AG_GST_CHECK_CHECKS()
+AG_GST_CHECK_CHECKS
 
 AC_CONFIG_FILES(
 Makefile
@@ -1089,8 +1099,6 @@
 if test "x${GST_DISABLE_GST_TRACER_HOOKS}" = "xno"; then enable_gst_tracer_hooks="yes"; fi
 if test "x${GST_DISABLE_PARSE}" = "xno"; then enable_parse="yes"; fi
 if test "x${GST_DISABLE_OPTION_PARSING}" = "xno"; then enable_option_parsing="yes"; fi
-if test "x${GST_DISABLE_TRACE}" = "xno"; then enable_trace="yes"; fi
-if test "x${GST_DISABLE_ALLOC_TRACE}" = "xno"; then enable_alloc_trace="yes"; fi
 if test "x${GST_DISABLE_PLUGIN}" = "xno"; then enable_plugin="yes"; fi
 if test "x${GST_DISABLE_REGISTRY}" = "xno"; then enable_registry="yes"; fi
 
@@ -1111,13 +1119,12 @@
 	Tracing subsystem hooks    : ${enable_gst_tracer_hooks}
 	Command-line parser        : ${enable_parse}
 	Option parsing in gst_init : ${enable_option_parsing}
-	Historic tracing subsystem : ${enable_trace}
-	Allocation tracing         : ${enable_alloc_trace}
 	Plugin registry            : ${enable_registry}
 	Plugin support	           : ${enable_plugin}
 	Static plugins             : ${enable_static_plugins}
 	Unit testing support       : ${BUILD_CHECK}
 	PTP clock support          : ${HAVE_PTP}
+	libunwind support          : ${HAVE_UNWIND}
 
 	Debug                      : ${USE_DEBUG}
 	Profiling                  : ${USE_PROFILING}
diff --git a/data/Makefile.in b/data/Makefile.in
index ba04dc0..51b6a20 100644
--- a/data/Makefile.in
+++ b/data/Makefile.in
@@ -261,6 +261,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -268,17 +269,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -403,6 +401,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 67e32b7..eb6773b 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -293,6 +293,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -300,17 +301,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -435,6 +433,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/docs/design/Makefile.in b/docs/design/Makefile.in
index 621dd6a..f6f8bfa 100644
--- a/docs/design/Makefile.in
+++ b/docs/design/Makefile.in
@@ -228,6 +228,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -235,17 +236,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -370,6 +368,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/docs/design/part-states.txt b/docs/design/part-states.txt
index 7040d21..6ad300c 100644
--- a/docs/design/part-states.txt
+++ b/docs/design/part-states.txt
@@ -337,7 +337,7 @@
            
 
 
-* Element commiting ASYNC
+* Element committing ASYNC
 
  - STATE_LOCK is taken in set_state
  - change state is called and returns ASYNC
diff --git a/docs/design/part-tracing.txt b/docs/design/part-tracing.txt
index 4c0b4d5..e396474 100644
--- a/docs/design/part-tracing.txt
+++ b/docs/design/part-tracing.txt
@@ -110,7 +110,7 @@
 Here the tracers describe the data the will emit.
 
 instance init
-Tracers attach handlers to one or more hooks using gst_tracer_register_hook().
+Tracers attach handlers to one or more hooks using gst_tracing_register_hook().
 In case the are configurable, they can read the options from the 'params'
 property. This is the extra detail from the environment var.
 
@@ -142,7 +142,7 @@
 
 // the name is the value name + ".class"
 // the content describes a single log record
-gst_structure_new ("thread-rusage.class",
+gst_tracer_record_new ("thread-rusage.class",
     // value in the log record (order does not matter)
     // 'thread-id' is a 'key' to related the record to something as indicated
     // by 'scope' substructure
@@ -180,16 +180,11 @@
     - they add a unique 'ix' to each instance as the memory ptr can be reused
       for new instances, the data is attached to the objects as qdata
     - the latency tracer would like to also reference this metadata
-- enums and flags are logged as comma separated string to not require the front-
-  ends to know the flag values (is that okay?)
 - right now we log the classes as structures
   - this is important so that the log is self contained
   - it would be nice to add them to the registry, so that gst-inspect can show
     them
 
-In addition to the above spec, each log event will contain a "ts" field as a
-G_TYPE_UINT64 to specify the time of the event.
-
 We could also consider to add each value as a READABLE gobject property. The
 property has name/description. We could use qdata for scope and flags (or have
 some new property flags).
@@ -265,6 +260,17 @@
 - use an atexit handler to dump leaked instance
 https://bugzilla.gnome.org/show_bug.cgi?id=756760#c6
 
+leaks
+-----
+- track creation/destruction of GstObject and GstMiniObject
+- log those which are still alive when app is exiting and raise an error if any
+- If the GST_LEAKS_TRACER_SIG env variable is defined:
+  - log alive objects when receiving the SIGUSR1 signal.
+  - create a checkpoint and print a list of objects created and destroyed since
+    the previous checkpoint.
+- If the GST_LEAKS_TRACER_STACK_TRACE env variable is defined log the creation
+  stack trace of leaked objects. This may significantly increase memory
+  consumption.
 
 User interfaces
 ===============
@@ -354,6 +360,12 @@
 GST_DEBUG="GST_TRACER:7" GST_TRACERS=latency gst-launch-1.0 audiotestsrc num-buffers=10 ! audioconvert ! volume volume=0.7 ! autoaudiosink
 - print processing latencies
 
+GST_TRACERS="leaks" gst-launch-1.0 videotestsrc num-buffers=10 ! fakesink
+- Raise a warning if a leak is detected
+
+GST_DEBUG="GST_TRACER:7" GST_TRACERS="leaks(GstEvent,GstMessage)" gst-launch-1.0 videotestsrc num-buffers=10 ! fakesink
+- check if any GstEvent or GstMessage is leaked and raise a warning
+
 Performance
 ===========
 run ./tests/benchmarks/tracing.sh <tracer(s)> <media>
diff --git a/docs/faq/Makefile.in b/docs/faq/Makefile.in
index 8aff779..6943be6 100644
--- a/docs/faq/Makefile.in
+++ b/docs/faq/Makefile.in
@@ -282,6 +282,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -289,17 +290,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -424,6 +422,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/docs/gst/Makefile.in b/docs/gst/Makefile.in
index be9900e..4a04893 100644
--- a/docs/gst/Makefile.in
+++ b/docs/gst/Makefile.in
@@ -251,6 +251,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -258,17 +259,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -393,6 +391,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
@@ -927,7 +927,11 @@
 
 @ENABLE_GTK_DOC_TRUE@sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(expand_content_files)
 @ENABLE_GTK_DOC_TRUE@	@echo '  DOC   Building XML'
-@ENABLE_GTK_DOC_TRUE@	@gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR)  --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
+@ENABLE_GTK_DOC_TRUE@	@_source_dir='' ;						\
+@ENABLE_GTK_DOC_TRUE@	for i in $(DOC_SOURCE_DIR) ; do					\
+@ENABLE_GTK_DOC_TRUE@	    _source_dir="$${_source_dir} --source-dir=$$i" ;	        \
+@ENABLE_GTK_DOC_TRUE@	done ;							        \
+@ENABLE_GTK_DOC_TRUE@	gtkdoc-mkdb --module=$(DOC_MODULE) $${_source_dir}  --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
 @ENABLE_GTK_DOC_TRUE@	@cp ../version.entities xml
 @ENABLE_GTK_DOC_TRUE@	@touch sgml-build.stamp
 
diff --git a/docs/gst/gstreamer-docs.sgml b/docs/gst/gstreamer-docs.sgml
index dfa293b..3d1f6dc 100644
--- a/docs/gst/gstreamer-docs.sgml
+++ b/docs/gst/gstreamer-docs.sgml
@@ -99,6 +99,8 @@
     <xi:include href="xml/gstquery.xml" />
     <xi:include href="xml/gstregistry.xml" />
     <xi:include href="xml/gstsegment.xml" />
+    <xi:include href="xml/gststreams.xml" />
+    <xi:include href="xml/gststreamcollection.xml" />
     <xi:include href="xml/gststructure.xml" />
     <xi:include href="xml/gstsystemclock.xml" />
     <xi:include href="xml/gsttaglist.xml" />
diff --git a/docs/gst/gstreamer-sections.txt b/docs/gst/gstreamer-sections.txt
index e9bd819..9355155 100644
--- a/docs/gst/gstreamer-sections.txt
+++ b/docs/gst/gstreamer-sections.txt
@@ -36,8 +36,6 @@
 GstQuarkId
 GstPluginLoader
 GstPluginLoaderFuncs
-GstAllocTrace
-GstAllocTraceFlags
 </SECTION>
 
 <SECTION>
@@ -260,6 +258,11 @@
 gst_buffer_add_parent_buffer_meta
 gst_buffer_get_parent_buffer_meta
 
+gst_buffer_get_flags
+gst_buffer_set_flags
+gst_buffer_unset_flags
+gst_buffer_has_flags
+
 <SUBSECTION Standard>
 GstBufferClass
 GST_BUFFER
@@ -698,8 +701,6 @@
 <TITLE>GstConfig</TITLE>
 GST_DISABLE_GST_DEBUG
 GST_DISABLE_PARSE
-GST_DISABLE_TRACE
-GST_DISABLE_ALLOC_TRACE
 GST_DISABLE_REGISTRY
 GST_DISABLE_PLUGIN
 <SUBSECTION Private>
@@ -813,8 +814,12 @@
 GST_ELEMENT_PADS
 GST_ELEMENT_START_TIME
 GST_ELEMENT_ERROR
+GST_ELEMENT_ERROR_WITH_DETAILS
+GST_ELEMENT_FLOW_ERROR
 GST_ELEMENT_WARNING
+GST_ELEMENT_WARNING_WITH_DETAILS
 GST_ELEMENT_INFO
+GST_ELEMENT_INFO_WITH_DETAILS
 GST_ELEMENT_IS_LOCKED_STATE
 
 <SUBSECTION element-metadata>
@@ -899,6 +904,8 @@
 
 <SUBSECTION element-messages>
 gst_element_message_full
+gst_element_message_full_with_details
+gst_make_element_message_details
 gst_element_post_message
 
 <SUBSECTION element-query>
@@ -912,6 +919,15 @@
 gst_element_seek_simple
 gst_element_seek
 
+<SUBSECTION element-property-notifications>
+gst_element_add_property_notify_watch
+gst_element_add_property_deep_notify_watch
+gst_element_remove_property_notify_watch
+
+<SUBSECTION element-call-async>
+GstElementCallAsyncFunc
+gst_element_call_async
+
 <SUBSECTION Standard>
 GST_ELEMENT
 GST_IS_ELEMENT
@@ -1114,6 +1130,9 @@
 gst_event_set_group_id
 gst_event_parse_group_id
 
+gst_event_set_stream
+gst_event_parse_stream
+
 gst_event_new_segment
 gst_event_parse_segment
 gst_event_copy_segment
@@ -1160,6 +1179,15 @@
 
 gst_event_new_protection
 gst_event_parse_protection
+
+gst_event_new_select_streams
+gst_event_parse_select_streams
+
+gst_event_new_stream_collection
+gst_event_parse_stream_collection
+
+gst_event_new_stream_group_done
+gst_event_parse_stream_group_done
 <SUBSECTION Standard>
 GstEventClass
 GST_EVENT
@@ -1561,11 +1589,17 @@
 
 gst_message_new_eos
 gst_message_new_error
+gst_message_new_error_with_details
 gst_message_parse_error
+gst_message_parse_error_details
 gst_message_new_warning
+gst_message_new_warning_with_details
 gst_message_parse_warning
+gst_message_parse_warning_details
 gst_message_new_info
+gst_message_new_info_with_details
 gst_message_parse_info
+gst_message_parse_info_details
 gst_message_new_tag
 gst_message_parse_tag
 gst_message_new_buffering
@@ -1612,6 +1646,8 @@
 gst_message_set_group_id
 gst_message_parse_group_id
 
+gst_message_new_stream_collection
+gst_message_parse_stream_collection
 GstStructureChangeType
 gst_message_new_structure_change
 gst_message_parse_structure_change
@@ -1637,6 +1673,21 @@
 gst_message_new_device_removed
 gst_message_parse_device_added
 gst_message_parse_device_removed
+
+gst_message_new_property_notify
+gst_message_parse_property_notify
+
+gst_message_new_streams_selected
+gst_message_parse_streams_selected
+gst_message_streams_selected_add
+gst_message_streams_selected_get_size
+gst_message_streams_selected_get_stream
+
+gst_message_new_redirect
+gst_message_add_redirect_entry
+gst_message_parse_redirect_entry
+gst_message_get_num_redirect_entries
+
 <SUBSECTION Standard>
 GstMessageClass
 GST_MESSAGE
@@ -1819,6 +1870,8 @@
 
 gst_pad_link
 gst_pad_link_full
+gst_pad_link_maybe_ghosting
+gst_pad_link_maybe_ghosting_full
 gst_pad_unlink
 gst_pad_is_linked
 gst_pad_can_link
@@ -1963,6 +2016,7 @@
 gst_pad_create_stream_id_printf_valist
 
 gst_pad_get_stream_id
+gst_pad_get_stream
 
 GstPadForwardFunction
 gst_pad_forward
@@ -2602,6 +2656,60 @@
 <SUBSECTION Private>
 </SECTION>
 
+<SECTION>
+<FILE>gststreams</FILE>
+<TITLE>GstStream</TITLE>
+GstStream
+GstStreamClass
+GstStreamType
+gst_stream_new
+gst_stream_get_caps
+gst_stream_get_stream_flags
+gst_stream_get_stream_id
+gst_stream_get_stream_type
+gst_stream_get_tags
+gst_stream_set_caps
+gst_stream_set_stream_flags
+gst_stream_set_stream_type
+gst_stream_set_tags
+gst_stream_type_get_name
+<SUBSECTION Standard>
+GST_IS_STREAM
+GST_IS_STREAM_CLASS
+GST_STREAM
+GST_STREAM_CAST
+GST_STREAM_CLASS
+GST_STREAM_GET_CLASS
+GST_TYPE_STREAM
+GST_TYPE_STREAM_TYPE
+gst_stream_get_type
+gst_stream_type_get_type
+<SUBSECTION Private>
+GstStreamPrivate
+</SECTION>
+
+<SECTION>
+<FILE>gststreamcollection</FILE>
+<TITLE>GstStreamCollection</TITLE>
+GstStreamCollection
+GstStreamCollectionClass
+gst_stream_collection_new
+gst_stream_collection_add_stream
+gst_stream_collection_get_upstream_id
+gst_stream_collection_get_size
+gst_stream_collection_get_stream
+<SUBSECTION Standard>
+gst_stream_collection_get_type
+GST_IS_STREAM_COLLECTION
+GST_IS_STREAM_COLLECTION_CLASS
+GST_STREAM_COLLECTION
+GST_STREAM_COLLECTION_CAST
+GST_STREAM_COLLECTION_CLASS
+GST_STREAM_COLLECTION_GET_CLASS
+GST_TYPE_STREAM_COLLECTION
+<SUBSECTION Private>
+GstStreamCollectionPrivate
+</SECTION>
 
 <SECTION>
 <FILE>gststructure</FILE>
diff --git a/docs/gst/html/GstBin.html b/docs/gst/html/GstBin.html
index 50e471d..8687f53 100644
--- a/docs/gst/html/GstBin.html
+++ b/docs/gst/html/GstBin.html
@@ -238,6 +238,16 @@
 </colgroup>
 <tbody>
 <tr>
+<td class="signal_type"><span class="returnvalue">void</span></td>
+<td class="signal_name"><a class="link" href="GstBin.html#GstBin-deep-element-added" title="The “deep-element-added” signal">deep-element-added</a></td>
+<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
+</tr>
+<tr>
+<td class="signal_type"><span class="returnvalue">void</span></td>
+<td class="signal_name"><a class="link" href="GstBin.html#GstBin-deep-element-removed" title="The “deep-element-removed” signal">deep-element-removed</a></td>
+<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
+</tr>
+<tr>
 <td class="signal_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a></td>
 <td class="signal_name"><a class="link" href="GstBin.html#GstBin-do-latency" title="The “do-latency” signal">do-latency</a></td>
 <td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></td>
@@ -1237,6 +1247,10 @@
   gboolean (*remove_element) (GstBin *bin, GstElement *element);
 
   void		(*handle_message) (GstBin *bin, GstMessage *message);
+
+  /* signal */
+  void          (*deep_element_added)   (GstBin *bin, GstBin *sub_bin, GstElement *child);
+  void          (*deep_element_removed) (GstBin *bin, GstBin *sub_bin, GstElement *child);
 };
 </pre>
 <p>Subclasses can override the <em class="parameter"><code>add_element</code></em>
@@ -1248,6 +1262,12 @@
 message handling.  <em class="parameter"><code>handle_message</code></em>
  takes ownership of the message, just like
 <a class="link" href="GstElement.html#gst-element-post-message" title="gst_element_post_message ()"><span class="type">gst_element_post_message</span></a>.</p>
+<p>The <em class="parameter"><code>element_added_deep</code></em>
+ vfunc will be called when a new element has been
+added to any bin inside this bin, so it will also be called if a new child
+was added to a sub-bin of this bin. <a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a> implementations that override
+this message should chain up to the parent class implementation so the
+element-added-deep signal is emitted on all parents.</p>
 <div class="refsect3">
 <a name="GstBinClass.members"></a><h4>Members</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1272,6 +1292,16 @@
 <td class="struct_member_description"><p>method to handle a message from the children</p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
+<tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstBinClass.deep-element-added"></a>deep_element_added</code></em> ()</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstBinClass.deep-element-removed"></a>deep_element_removed</code></em> ()</p></td>
+<td> </td>
+<td> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -1341,6 +1371,96 @@
 <div class="refsect1">
 <a name="GstBin.signal-details"></a><h2>Signal Details</h2>
 <div class="refsect2">
+<a name="GstBin-deep-element-added"></a><h3>The <code class="literal">“deep-element-added”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a>     *bin,
+               <a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a>     *sub_bin,
+               <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> *element,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
+<p>Will be emitted after the element was added to sub_bin.</p>
+<div class="refsect3">
+<a name="GstBin-deep-element-added.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>bin</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sub_bin</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a> the element was added to</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>element</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> that was added to <em class="parameter"><code>sub_bin</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstBin-deep-element-removed"></a><h3>The <code class="literal">“deep-element-removed”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a>     *bin,
+               <a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a>     *sub_bin,
+               <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> *element,
+               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>    user_data)</pre>
+<p>Will be emitted after the element was removed from sub_bin.</p>
+<div class="refsect3">
+<a name="GstBin-deep-element-removed.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>bin</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sub_bin</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a> the element was removed from</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>element</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> that was removed from <em class="parameter"><code>sub_bin</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstBin-do-latency"></a><h3>The <code class="literal">“do-latency”</code> signal</h3>
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 user_function (<a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a>  *bin,
diff --git a/docs/gst/html/GstBuffer.html b/docs/gst/html/GstBuffer.html
index feec7a7..e49229c 100644
--- a/docs/gst/html/GstBuffer.html
+++ b/docs/gst/html/GstBuffer.html
@@ -570,6 +570,38 @@
 <a class="link" href="GstBuffer.html#gst-buffer-get-parent-buffer-meta" title="gst_buffer_get_parent_buffer_meta()">gst_buffer_get_parent_buffer_meta</a><span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstBuffer.html#GstBufferFlags" title="enum GstBufferFlags"><span class="returnvalue">GstBufferFlags</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstBuffer.html#gst-buffer-get-flags" title="gst_buffer_get_flags ()">gst_buffer_get_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstBuffer.html#gst-buffer-set-flags" title="gst_buffer_set_flags ()">gst_buffer_set_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstBuffer.html#gst-buffer-unset-flags" title="gst_buffer_unset_flags ()">gst_buffer_unset_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstBuffer.html#gst-buffer-has-flags" title="gst_buffer_has_flags ()">gst_buffer_has_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -1697,8 +1729,7 @@
 </div>
 <div class="refsect3">
 <a name="gst-buffer-n-memory.returns"></a><h4>Returns</h4>
-<p> the amount of memory block in this buffer. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+<p> the number of memory blocks this buffer is made of.</p>
 </div>
 </div>
 <hr>
@@ -3477,6 +3508,112 @@
 </table></div>
 </div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gst-buffer-get-flags"></a><h3>gst_buffer_get_flags ()</h3>
+<pre class="programlisting"><a class="link" href="GstBuffer.html#GstBufferFlags" title="enum GstBufferFlags"><span class="returnvalue">GstBufferFlags</span></a>
+gst_buffer_get_flags (<em class="parameter"><code><a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> *buffer</code></em>);</pre>
+<p>Get the <a class="link" href="GstBuffer.html#GstBufferFlags" title="enum GstBufferFlags"><span class="type">GstBufferFlags</span></a> flags set on this buffer.</p>
+<div class="refsect3">
+<a name="gst-buffer-get-flags.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-buffer-get-flags.returns"></a><h4>Returns</h4>
+<p> the flags set on this buffer.</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-buffer-set-flags"></a><h3>gst_buffer_set_flags ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_buffer_set_flags (<em class="parameter"><code><a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> *buffer</code></em>,
+                      <em class="parameter"><code><a class="link" href="GstBuffer.html#GstBufferFlags" title="enum GstBufferFlags"><span class="type">GstBufferFlags</span></a> flags</code></em>);</pre>
+<p>Sets one or more buffer flags on a buffer.</p>
+<div class="refsect3">
+<a name="gst-buffer-set-flags.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>flags</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstBuffer.html#GstBufferFlags" title="enum GstBufferFlags"><span class="type">GstBufferFlags</span></a> to set.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-buffer-set-flags.returns"></a><h4>Returns</h4>
+<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>flags</code></em>
+were successfully set on buffer.</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-buffer-unset-flags"></a><h3>gst_buffer_unset_flags ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_buffer_unset_flags (<em class="parameter"><code><a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> *buffer</code></em>,
+                        <em class="parameter"><code><a class="link" href="GstBuffer.html#GstBufferFlags" title="enum GstBufferFlags"><span class="type">GstBufferFlags</span></a> flags</code></em>);</pre>
+<p>Clears one or more buffer flags.</p>
+<div class="refsect3">
+<a name="gst-buffer-unset-flags.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>buffer</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>flags</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstBuffer.html#GstBufferFlags" title="enum GstBufferFlags"><span class="type">GstBufferFlags</span></a> to clear</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-buffer-unset-flags.returns"></a><h4>Returns</h4>
+<p> true if <em class="parameter"><code>flags</code></em>
+is successfully cleared from buffer.</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-buffer-has-flags"></a><h3>gst_buffer_has_flags ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_buffer_has_flags (<em class="parameter"><code><a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a> *buffer</code></em>,
+                      <em class="parameter"><code><a class="link" href="GstBuffer.html#GstBufferFlags" title="enum GstBufferFlags"><span class="type">GstBufferFlags</span></a> flags</code></em>);</pre>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstBuffer.other_details"></a><h2>Types and Values</h2>
diff --git a/docs/gst/html/GstElement.html b/docs/gst/html/GstElement.html
index bd67947..474298a 100644
--- a/docs/gst/html/GstElement.html
+++ b/docs/gst/html/GstElement.html
@@ -153,18 +153,42 @@
 <tr>
 <td class="define_keyword">#define</td>
 <td class="function_name">
+<a class="link" href="GstElement.html#GST-ELEMENT-ERROR-WITH-DETAILS:CAPS" title="GST_ELEMENT_ERROR_WITH_DETAILS()">GST_ELEMENT_ERROR_WITH_DETAILS</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="GstElement.html#GST-ELEMENT-FLOW-ERROR:CAPS" title="GST_ELEMENT_FLOW_ERROR()">GST_ELEMENT_FLOW_ERROR</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
 <a class="link" href="GstElement.html#GST-ELEMENT-WARNING:CAPS" title="GST_ELEMENT_WARNING()">GST_ELEMENT_WARNING</a><span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
 <td class="function_name">
+<a class="link" href="GstElement.html#GST-ELEMENT-WARNING-WITH-DETAILS:CAPS" title="GST_ELEMENT_WARNING_WITH_DETAILS()">GST_ELEMENT_WARNING_WITH_DETAILS</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
 <a class="link" href="GstElement.html#GST-ELEMENT-INFO:CAPS" title="GST_ELEMENT_INFO()">GST_ELEMENT_INFO</a><span class="c_punctuation">()</span>
 </td>
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
 <td class="function_name">
+<a class="link" href="GstElement.html#GST-ELEMENT-INFO-WITH-DETAILS:CAPS" title="GST_ELEMENT_INFO_WITH_DETAILS()">GST_ELEMENT_INFO_WITH_DETAILS</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
 <a class="link" href="GstElement.html#GST-ELEMENT-IS-LOCKED-STATE:CAPS" title="GST_ELEMENT_IS_LOCKED_STATE()">GST_ELEMENT_IS_LOCKED_STATE</a><span class="c_punctuation">()</span>
 </td>
 </tr>
@@ -647,6 +671,22 @@
 </tr>
 <tr>
 <td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstElement.html#gst-element-message-full-with-details" title="gst_element_message_full_with_details ()">gst_element_message_full_with_details</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstStructure.html" title="GstStructure"><span class="returnvalue">GstStructure</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstElement.html#gst-make-element-message-details" title="gst_make_element_message_details ()">gst_make_element_message_details</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
@@ -709,6 +749,46 @@
 <a class="link" href="GstElement.html#gst-element-seek" title="gst_element_seek ()">gst_element_seek</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gulong"><span class="returnvalue">gulong</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstElement.html#gst-element-add-property-notify-watch" title="gst_element_add_property_notify_watch ()">gst_element_add_property_notify_watch</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gulong"><span class="returnvalue">gulong</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstElement.html#gst-element-add-property-deep-notify-watch" title="gst_element_add_property_deep_notify_watch ()">gst_element_add_property_deep_notify_watch</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstElement.html#gst-element-remove-property-notify-watch" title="gst_element_remove_property_notify_watch ()">gst_element_remove_property_notify_watch</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="GstElement.html#GstElementCallAsyncFunc" title="GstElementCallAsyncFunc ()">*GstElementCallAsyncFunc</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstElement.html#gst-element-call-async" title="gst_element_call_async ()">gst_element_call_async</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -1276,7 +1356,7 @@
 <hr>
 <div class="refsect2">
 <a name="GST-ELEMENT-ERROR:CAPS"></a><h3>GST_ELEMENT_ERROR()</h3>
-<pre class="programlisting">#define             GST_ELEMENT_ERROR(el, domain, code, text, debug)</pre>
+<pre class="programlisting">#define             GST_ELEMENT_ERROR(el,domain,code,text,debug)</pre>
 <p>Utility function that elements can use in case they encountered a fatal
 data processing error. The pipeline will post an error message and the
 application will be requested to stop further media processing.</p>
@@ -1322,6 +1402,88 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GST-ELEMENT-ERROR-WITH-DETAILS:CAPS"></a><h3>GST_ELEMENT_ERROR_WITH_DETAILS()</h3>
+<pre class="programlisting">#define             GST_ELEMENT_ERROR_WITH_DETAILS(el,domain,code,text,debug,args)</pre>
+<p>Utility function that elements can use in case they encountered a fatal
+data processing error. The pipeline will post an error message and the
+application will be requested to stop further media processing.</p>
+<div class="refsect3">
+<a name="GST-ELEMENT-ERROR-WITH-DETAILS.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>el</p></td>
+<td class="parameter_description"><p>the element that generates the error</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>domain</p></td>
+<td class="parameter_description"><p>like CORE, LIBRARY, RESOURCE or STREAM (see <a class="link" href="gstreamer-GstGError.html" title="GstGError"><span class="type">gstreamer-GstGError</span></a>)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>code</p></td>
+<td class="parameter_description"><p>error code defined for that domain (see <a class="link" href="gstreamer-GstGError.html" title="GstGError"><span class="type">gstreamer-GstGError</span></a>)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>text</p></td>
+<td class="parameter_description"><p>the message to display (format string and args enclosed in
+parentheses)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>debug</p></td>
+<td class="parameter_description"><p>debugging information for the message (format string and args
+enclosed in parentheses)
+<em class="parameter"><code>args</code></em>
+optional name, type, value triplets, which will be stored
+in the associated GstStructure. NULL terminator required.
+Must be enclosed within parentheses.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-ELEMENT-FLOW-ERROR:CAPS"></a><h3>GST_ELEMENT_FLOW_ERROR()</h3>
+<pre class="programlisting">#define             GST_ELEMENT_FLOW_ERROR(el,flow_return)</pre>
+<p>Utility function that elements can use in case they encountered a fatal
+data processing error due to wrong flow processing.</p>
+<div class="refsect3">
+<a name="GST-ELEMENT-FLOW-ERROR.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>el</p></td>
+<td class="parameter_description"><p>the element that generates the error</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>flow_return</p></td>
+<td class="parameter_description"><p>the GstFlowReturn leading to that ERROR message</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GST-ELEMENT-WARNING:CAPS"></a><h3>GST_ELEMENT_WARNING()</h3>
 <pre class="programlisting">#define             GST_ELEMENT_WARNING(el, domain, code, text, debug)</pre>
 <p>Utility function that elements can use in case they encountered a non-fatal
@@ -1369,6 +1531,58 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GST-ELEMENT-WARNING-WITH-DETAILS:CAPS"></a><h3>GST_ELEMENT_WARNING_WITH_DETAILS()</h3>
+<pre class="programlisting">#define             GST_ELEMENT_WARNING_WITH_DETAILS(el, domain, code, text, debug, args)</pre>
+<p>Utility function that elements can use in case they encountered a non-fatal
+data processing problem. The pipeline will post a warning message and the
+application will be informed.</p>
+<div class="refsect3">
+<a name="GST-ELEMENT-WARNING-WITH-DETAILS.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>el</p></td>
+<td class="parameter_description"><p>the element that generates the warning</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>domain</p></td>
+<td class="parameter_description"><p>like CORE, LIBRARY, RESOURCE or STREAM (see <a class="link" href="gstreamer-GstGError.html" title="GstGError"><span class="type">gstreamer-GstGError</span></a>)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>code</p></td>
+<td class="parameter_description"><p>error code defined for that domain (see <a class="link" href="gstreamer-GstGError.html" title="GstGError"><span class="type">gstreamer-GstGError</span></a>)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>text</p></td>
+<td class="parameter_description"><p>the message to display (format string and args enclosed in
+parentheses)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>debug</p></td>
+<td class="parameter_description"><p>debugging information for the message (format string and args
+enclosed in parentheses)
+<em class="parameter"><code>args</code></em>
+optional name, type, value triplets, which will be stored
+in the associated GstStructure. NULL terminator required.
+Must be enclosed within parentheses.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GST-ELEMENT-INFO:CAPS"></a><h3>GST_ELEMENT_INFO()</h3>
 <pre class="programlisting">#define             GST_ELEMENT_INFO(el, domain, code, text, debug)</pre>
 <p>Utility function that elements can use in case they want to inform
@@ -1417,6 +1631,61 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="GST-ELEMENT-INFO-WITH-DETAILS:CAPS"></a><h3>GST_ELEMENT_INFO_WITH_DETAILS()</h3>
+<pre class="programlisting">#define             GST_ELEMENT_INFO_WITH_DETAILS(el, domain, code, text, debug, args)</pre>
+<p>Utility function that elements can use in case they want to inform
+the application of something noteworthy that is not an error.
+The pipeline will post a info message and the
+application will be informed.
+Optional name, type, value triplets may be supplied, and will be stored
+in the associated GstStructure. NULL terminator required.</p>
+<div class="refsect3">
+<a name="GST-ELEMENT-INFO-WITH-DETAILS.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>el</p></td>
+<td class="parameter_description"><p>the element that generates the information</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>domain</p></td>
+<td class="parameter_description"><p>like CORE, LIBRARY, RESOURCE or STREAM (see <a class="link" href="gstreamer-GstGError.html" title="GstGError"><span class="type">gstreamer-GstGError</span></a>)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>code</p></td>
+<td class="parameter_description"><p>error code defined for that domain (see <a class="link" href="gstreamer-GstGError.html" title="GstGError"><span class="type">gstreamer-GstGError</span></a>)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>text</p></td>
+<td class="parameter_description"><p>the message to display (format string and args enclosed in
+parentheses)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>debug</p></td>
+<td class="parameter_description"><p>debugging information for the message (format string and args
+enclosed in parentheses)
+<em class="parameter"><code>args</code></em>
+optional name, type, value triplets, which will be stored
+in the associated GstStructure. NULL terminator required.
+Must be enclosed within parentheses.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GST-ELEMENT-IS-LOCKED-STATE:CAPS"></a><h3>GST_ELEMENT_IS_LOCKED_STATE()</h3>
 <pre class="programlisting">#define GST_ELEMENT_IS_LOCKED_STATE(elem)        (GST_OBJECT_FLAG_IS_SET(elem,GST_ELEMENT_FLAG_LOCKED_STATE))
 </pre>
@@ -3801,6 +4070,99 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-element-message-full-with-details"></a><h3>gst_element_message_full_with_details ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_element_message_full_with_details (<em class="parameter"><code><a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> *element</code></em>,
+                                       <em class="parameter"><code><a class="link" href="GstMessage.html#GstMessageType" title="enum GstMessageType"><span class="type">GstMessageType</span></a> type</code></em>,
+                                       <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Quarks.html#GQuark"><span class="type">GQuark</span></a> domain</code></em>,
+                                       <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> code</code></em>,
+                                       <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *text</code></em>,
+                                       <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *debug</code></em>,
+                                       <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *file</code></em>,
+                                       <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *function</code></em>,
+                                       <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> line</code></em>,
+                                       <em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>);</pre>
+<p>Post an error, warning or info message on the bus from inside an element.</p>
+<p><em class="parameter"><code>type</code></em>
+ must be of <a class="link" href="GstMessage.html#GST-MESSAGE-ERROR:CAPS"><span class="type">GST_MESSAGE_ERROR</span></a>, <a class="link" href="GstMessage.html#GST-MESSAGE-WARNING:CAPS"><span class="type">GST_MESSAGE_WARNING</span></a> or
+<a class="link" href="GstMessage.html#GST-MESSAGE-INFO:CAPS"><span class="type">GST_MESSAGE_INFO</span></a>.</p>
+<div class="refsect3">
+<a name="gst-element-message-full-with-details.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>element</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> to send message from</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstMessage.html#GstMessageType" title="enum GstMessageType"><span class="type">GstMessageType</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>domain</p></td>
+<td class="parameter_description"><p>the GStreamer GError domain this message belongs to</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>code</p></td>
+<td class="parameter_description"><p>the GError code belonging to the domain</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>text</p></td>
+<td class="parameter_description"><p> an allocated text string to be used
+as a replacement for the default message connected to code,
+or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>debug</p></td>
+<td class="parameter_description"><p> an allocated debug message to be
+used as a replacement for the default debugging information,
+or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>file</p></td>
+<td class="parameter_description"><p>the source code file where the error was generated</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>function</p></td>
+<td class="parameter_description"><p>the source code function where the error was generated</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>line</p></td>
+<td class="parameter_description"><p>the source code line where the error was generated</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>structure</p></td>
+<td class="parameter_description"><p> optional details structure. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-make-element-message-details"></a><h3>gst_make_element_message_details ()</h3>
+<pre class="programlisting"><a class="link" href="GstStructure.html" title="GstStructure"><span class="returnvalue">GstStructure</span></a> *
+gst_make_element_message_details (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>,
+                                  <em class="parameter"><code>...</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-element-post-message"></a><h3>gst_element_post_message ()</h3>
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_element_post_message (<em class="parameter"><code><a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> *element</code></em>,
@@ -4201,6 +4563,183 @@
 preroll, which will emit <a class="link" href="GstMessage.html#GST-MESSAGE-ASYNC-DONE:CAPS"><code class="literal">GST_MESSAGE_ASYNC_DONE</code></a>.</p>
 </div>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gst-element-add-property-notify-watch"></a><h3>gst_element_add_property_notify_watch ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gulong"><span class="returnvalue">gulong</span></a>
+gst_element_add_property_notify_watch (<em class="parameter"><code><a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> *element</code></em>,
+                                       <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property_name</code></em>,
+                                       <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> include_value</code></em>);</pre>
+<div class="refsect3">
+<a name="gst-element-add-property-notify-watch.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>element</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> to watch for property changes</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>property_name</p></td>
+<td class="parameter_description"><p> name of property to watch for changes, or
+NULL to watch all properties. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>include_value</p></td>
+<td class="parameter_description"><p>whether to include the new property value in the message</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-element-add-property-notify-watch.returns"></a><h4>Returns</h4>
+<p> a watch id, which can be used in connection with
+<a class="link" href="GstElement.html#gst-element-remove-property-notify-watch" title="gst_element_remove_property_notify_watch ()"><code class="function">gst_element_remove_property_notify_watch()</code></a> to remove the watch again.</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-element-add-property-deep-notify-watch"></a><h3>gst_element_add_property_deep_notify_watch ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gulong"><span class="returnvalue">gulong</span></a>
+gst_element_add_property_deep_notify_watch
+                               (<em class="parameter"><code><a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> *element</code></em>,
+                                <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property_name</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> include_value</code></em>);</pre>
+<div class="refsect3">
+<a name="gst-element-add-property-deep-notify-watch.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>element</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> to watch (recursively) for property changes</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>property_name</p></td>
+<td class="parameter_description"><p> name of property to watch for changes, or
+NULL to watch all properties. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>include_value</p></td>
+<td class="parameter_description"><p>whether to include the new property value in the message</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-element-add-property-deep-notify-watch.returns"></a><h4>Returns</h4>
+<p> a watch id, which can be used in connection with
+<a class="link" href="GstElement.html#gst-element-remove-property-notify-watch" title="gst_element_remove_property_notify_watch ()"><code class="function">gst_element_remove_property_notify_watch()</code></a> to remove the watch again.</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-element-remove-property-notify-watch"></a><h3>gst_element_remove_property_notify_watch ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_element_remove_property_notify_watch
+                               (<em class="parameter"><code><a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> *element</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gulong"><span class="type">gulong</span></a> watch_id</code></em>);</pre>
+<div class="refsect3">
+<a name="gst-element-remove-property-notify-watch.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>element</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> being watched for property changes</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>watch_id</p></td>
+<td class="parameter_description"><p>watch id to remove</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstElementCallAsyncFunc"></a><h3>GstElementCallAsyncFunc ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+<span class="c_punctuation">(</span>*GstElementCallAsyncFunc<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> *element</code></em>,
+                            <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-element-call-async"></a><h3>gst_element_call_async ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_element_call_async (<em class="parameter"><code><a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a> *element</code></em>,
+                        <em class="parameter"><code><a class="link" href="GstElement.html#GstElementCallAsyncFunc" title="GstElementCallAsyncFunc ()"><span class="type">GstElementCallAsyncFunc</span></a> func</code></em>,
+                        <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
+                        <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> destroy_notify</code></em>);</pre>
+<p>Calls <em class="parameter"><code>func</code></em>
+ from another thread and passes <em class="parameter"><code>user_data</code></em>
+ to it. This is to be
+used for cases when a state change has to be performed from a streaming
+thread, directly via <a class="link" href="GstElement.html#gst-element-set-state" title="gst_element_set_state ()"><code class="function">gst_element_set_state()</code></a> or indirectly e.g. via SEEK
+events.</p>
+<p>Calling those functions directly from the streaming thread will cause
+deadlocks in many situations, as they might involve waiting for the
+streaming thread to shut down from this very streaming thread.</p>
+<p>MT safe.</p>
+<div class="refsect3">
+<a name="gst-element-call-async.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>element</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>func</p></td>
+<td class="parameter_description"><p>Function to call asynchronously from another thread</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>Data to pass to <em class="parameter"><code>func</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>destroy_notify</p></td>
+<td class="parameter_description"><p>GDestroyNotify for <em class="parameter"><code>user_data</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstElement.other_details"></a><h2>Types and Values</h2>
diff --git a/docs/gst/html/GstEvent.html b/docs/gst/html/GstEvent.html
index e53ea46..89e3e69 100644
--- a/docs/gst/html/GstEvent.html
+++ b/docs/gst/html/GstEvent.html
@@ -339,6 +339,22 @@
 </tr>
 <tr>
 <td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstEvent.html#gst-event-set-stream" title="gst_event_set_stream ()">gst_event_set_stream</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstEvent.html#gst-event-parse-stream" title="gst_event_parse_stream ()">gst_event_parse_stream</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a class="link" href="GstEvent.html" title="GstEvent"><span class="returnvalue">GstEvent</span></a> *
 </td>
 <td class="function_name">
@@ -569,6 +585,54 @@
 <a class="link" href="GstEvent.html#gst-event-parse-protection" title="gst_event_parse_protection ()">gst_event_parse_protection</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstEvent.html" title="GstEvent"><span class="returnvalue">GstEvent</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstEvent.html#gst-event-new-select-streams" title="gst_event_new_select_streams ()">gst_event_new_select_streams</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstEvent.html#gst-event-parse-select-streams" title="gst_event_parse_select_streams ()">gst_event_parse_select_streams</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstEvent.html" title="GstEvent"><span class="returnvalue">GstEvent</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstEvent.html#gst-event-new-stream-collection" title="gst_event_new_stream_collection ()">gst_event_new_stream_collection</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstEvent.html#gst-event-parse-stream-collection" title="gst_event_parse_stream_collection ()">gst_event_parse_stream_collection</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstEvent.html" title="GstEvent"><span class="returnvalue">GstEvent</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstEvent.html#gst-event-new-stream-group-done" title="gst_event_new_stream_group_done ()">gst_event_new_stream_group_done</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstEvent.html#gst-event-parse-stream-group-done" title="gst_event_parse_stream_group_done ()">gst_event_parse_stream_group_done</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -1907,6 +1971,71 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-event-set-stream"></a><h3>gst_event_set_stream ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_event_set_stream (<em class="parameter"><code><a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a> *event</code></em>,
+                      <em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> *stream</code></em>);</pre>
+<p>Set the <em class="parameter"><code>stream</code></em>
+ on the stream-start <em class="parameter"><code>event</code></em>
+</p>
+<div class="refsect3">
+<a name="gst-event-set-stream.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>event</p></td>
+<td class="parameter_description"><p>a stream-start event</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>stream</p></td>
+<td class="parameter_description"><p> the stream object to set. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-event-parse-stream"></a><h3>gst_event_parse_stream ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_event_parse_stream (<em class="parameter"><code><a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a> *event</code></em>,
+                        <em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> **stream</code></em>);</pre>
+<p>Parse a stream-start <em class="parameter"><code>event</code></em>
+ and extract the <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> from it.</p>
+<div class="refsect3">
+<a name="gst-event-parse-stream.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>event</p></td>
+<td class="parameter_description"><p>a stream-start event</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>stream</p></td>
+<td class="parameter_description"><p> adress of variable to store the stream. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-event-new-segment"></a><h3>gst_event_new_segment ()</h3>
 <pre class="programlisting"><a class="link" href="GstEvent.html" title="GstEvent"><span class="returnvalue">GstEvent</span></a> *
 gst_event_new_segment (<em class="parameter"><code>const <a class="link" href="GstSegment.html" title="GstSegment"><span class="type">GstSegment</span></a> *segment</code></em>);</pre>
@@ -3227,6 +3356,208 @@
 </div>
 <p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gst-event-new-select-streams"></a><h3>gst_event_new_select_streams ()</h3>
+<pre class="programlisting"><a class="link" href="GstEvent.html" title="GstEvent"><span class="returnvalue">GstEvent</span></a> *
+gst_event_new_select_streams (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> *streams</code></em>);</pre>
+<p>Allocate a new select-streams event.</p>
+<p>The select-streams event requests the specified <em class="parameter"><code>streams</code></em>
+ to be activated.</p>
+<p>The list of <em class="parameter"><code>streams</code></em>
+ corresponds to the "Stream ID" of each stream to be
+activated. Those ID can be obtained via the <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> objects present
+in <a class="link" href="GstEvent.html#GST-EVENT-STREAM-START:CAPS"><span class="type">GST_EVENT_STREAM_START</span></a>, <a class="link" href="GstEvent.html#GST-EVENT-STREAM-COLLECTION:CAPS"><span class="type">GST_EVENT_STREAM_COLLECTION</span></a> or 
+<span class="type">GST_MESSSAGE_STREAM_COLLECTION</span>.</p>
+<div class="refsect3">
+<a name="gst-event-new-select-streams.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>streams</p></td>
+<td class="parameter_description"><p> the list of streams to
+activate. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> gchar][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-event-new-select-streams.returns"></a><h4>Returns</h4>
+<p> a new select-streams event. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-event-parse-select-streams"></a><h3>gst_event_parse_select_streams ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_event_parse_select_streams (<em class="parameter"><code><a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a> *event</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> **streams</code></em>);</pre>
+<p>Parse the SELECT_STREAMS event and retrieve the contained streams.</p>
+<div class="refsect3">
+<a name="gst-event-parse-select-streams.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>event</p></td>
+<td class="parameter_description"><p>The event to parse</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>streams</p></td>
+<td class="parameter_description"><p> the streams. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> gchar][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-event-new-stream-collection"></a><h3>gst_event_new_stream_collection ()</h3>
+<pre class="programlisting"><a class="link" href="GstEvent.html" title="GstEvent"><span class="returnvalue">GstEvent</span></a> *
+gst_event_new_stream_collection (<em class="parameter"><code><a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> *collection</code></em>);</pre>
+<p>Create a new STREAM_COLLECTION event. The stream collection event can only
+travel downstream synchronized with the buffer flow.</p>
+<p>Source elements, demuxers and other elements that manage collections
+of streams and post <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> messages on the bus also send
+this event downstream on each pad involved in the collection, so that
+activation of a new collection can be tracked through the downstream
+data flow.</p>
+<div class="refsect3">
+<a name="gst-event-new-stream-collection.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>collection</p></td>
+<td class="parameter_description"><p>Active collection for this data flow</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-event-new-stream-collection.returns"></a><h4>Returns</h4>
+<p> the new STREAM_COLLECTION event. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-event-parse-stream-collection"></a><h3>gst_event_parse_stream_collection ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_event_parse_stream_collection (<em class="parameter"><code><a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a> *event</code></em>,
+                                   <em class="parameter"><code><a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> **collection</code></em>);</pre>
+<p>Retrieve new <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> from STREAM_COLLECTION event <em class="parameter"><code>event</code></em>
+.</p>
+<div class="refsect3">
+<a name="gst-event-parse-stream-collection.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>event</p></td>
+<td class="parameter_description"><p>a stream-collection event</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>collection</p></td>
+<td class="parameter_description"><p> pointer to store the collection. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-event-new-stream-group-done"></a><h3>gst_event_new_stream_group_done ()</h3>
+<pre class="programlisting"><a class="link" href="GstEvent.html" title="GstEvent"><span class="returnvalue">GstEvent</span></a> *
+gst_event_new_stream_group_done (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> group_id</code></em>);</pre>
+<p>Create a new Stream Group Done event. The stream-group-done event can
+only travel downstream synchronized with the buffer flow. Elements
+that receive the event on a pad should handle it mostly like EOS,
+and emit any data or pending buffers that would depend on more data
+arriving and unblock, since there won't be any more data.</p>
+<p>This event is followed by EOS at some point in the future, and is
+generally used when switching pads - to unblock downstream so that
+new pads can be exposed before sending EOS on the existing pads.</p>
+<div class="refsect3">
+<a name="gst-event-new-stream-group-done.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>group_id</p></td>
+<td class="parameter_description"><p>the group id of the stream group which is ending</p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-event-new-stream-group-done.returns"></a><h4>Returns</h4>
+<p> the new stream-group-done event. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-event-parse-stream-group-done"></a><h3>gst_event_parse_stream_group_done ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_event_parse_stream_group_done (<em class="parameter"><code><a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a> *event</code></em>,
+                                   <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> *group_id</code></em>);</pre>
+<p>Parse a stream-group-done <em class="parameter"><code>event</code></em>
+ and store the result in the given
+<em class="parameter"><code>group_id</code></em>
+ location.</p>
+<div class="refsect3">
+<a name="gst-event-parse-stream-group-done.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>event</p></td>
+<td class="parameter_description"><p>a stream-group-done event.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>group_id</p></td>
+<td class="parameter_description"><p> address of variable to store the group id into. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstEvent.other_details"></a><h2>Types and Values</h2>
@@ -3404,6 +3735,13 @@
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-EVENT-STREAM-COLLECTION:CAPS"></a>GST_EVENT_STREAM_COLLECTION</p></td>
+<td class="enum_member_description">
+<p>A new <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> is available (Since 1.10)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-EVENT-TAG:CAPS"></a>GST_EVENT_TAG</p></td>
 <td class="enum_member_description">
 <p>A new set of metadata tags has been found in the stream.</p>
@@ -3428,10 +3766,20 @@
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-EVENT-STREAM-GROUP-DONE:CAPS"></a>GST_EVENT_STREAM_GROUP_DONE</p></td>
+<td class="enum_member_description">
+<p>Indicates that there is no more data for
+                the stream group ID in the message. Sent before EOS
+                in some instances and should be handled mostly the same. (Since 1.10)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-EVENT-EOS:CAPS"></a>GST_EVENT_EOS</p></td>
 <td class="enum_member_description">
 <p>End-Of-Stream. No more data is to be expected to follow
-                without a SEGMENT event.</p>
+                without either a STREAM_START event, or a FLUSH_STOP and a SEGMENT
+                event.</p>
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
@@ -3522,6 +3870,13 @@
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-EVENT-SELECT-STREAMS:CAPS"></a>GST_EVENT_SELECT_STREAMS</p></td>
+<td class="enum_member_description">
+<p>A request to select one or more streams (Since 1.10)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-EVENT-CUSTOM-UPSTREAM:CAPS"></a>GST_EVENT_CUSTOM_UPSTREAM</p></td>
 <td class="enum_member_description">
 <p>Upstream custom event</p>
diff --git a/docs/gst/html/GstGhostPad.html b/docs/gst/html/GstGhostPad.html
index fe7fdf2..a0fab25 100644
--- a/docs/gst/html/GstGhostPad.html
+++ b/docs/gst/html/GstGhostPad.html
@@ -405,8 +405,7 @@
 <div class="refsect3">
 <a name="gst-ghost-pad-set-target.returns"></a><h4>Returns</h4>
 <p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the new target could be set. This function
-can return <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when the internal pads could not be linked. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+can return <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when the internal pads could not be linked.</p>
 </div>
 </div>
 <hr>
diff --git a/docs/gst/html/GstMemory.html b/docs/gst/html/GstMemory.html
index ca30a6c..45337a5 100644
--- a/docs/gst/html/GstMemory.html
+++ b/docs/gst/html/GstMemory.html
@@ -1655,7 +1655,7 @@
 <hr>
 <div class="refsect2">
 <a name="GST-MAP-INFO-INIT:CAPS"></a><h3>GST_MAP_INFO_INIT</h3>
-<pre class="programlisting">#define GST_MAP_INFO_INIT { NULL, 0, NULL, 0, 0, {0, }, {0, }}
+<pre class="programlisting">#define GST_MAP_INFO_INIT { NULL, (GstMapFlags) 0, NULL, 0, 0, { NULL, NULL, NULL, NULL}, {NULL, NULL, NULL, NULL}}
 </pre>
 <p>Initializer for <a class="link" href="GstMemory.html#GstMapInfo" title="GstMapInfo"><span class="type">GstMapInfo</span></a></p>
 </div>
diff --git a/docs/gst/html/GstMessage.html b/docs/gst/html/GstMessage.html
index 0934663..0b0e6f0 100644
--- a/docs/gst/html/GstMessage.html
+++ b/docs/gst/html/GstMessage.html
@@ -191,6 +191,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-new-error-with-details" title="gst_message_new_error_with_details ()">gst_message_new_error_with_details</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
@@ -199,6 +207,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-parse-error-details" title="gst_message_parse_error_details ()">gst_message_parse_error_details</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
 </td>
 <td class="function_name">
@@ -207,6 +223,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-new-warning-with-details" title="gst_message_new_warning_with_details ()">gst_message_new_warning_with_details</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
@@ -215,6 +239,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-parse-warning-details" title="gst_message_parse_warning_details ()">gst_message_parse_warning_details</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
 </td>
 <td class="function_name">
@@ -223,6 +255,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-new-info-with-details" title="gst_message_new_info_with_details ()">gst_message_new_info_with_details</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <span class="returnvalue">void</span>
 </td>
 <td class="function_name">
@@ -231,6 +271,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-parse-info-details" title="gst_message_parse_info_details ()">gst_message_parse_info_details</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
 </td>
 <td class="function_name">
@@ -586,6 +634,22 @@
 <a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
 </td>
 <td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-new-stream-collection" title="gst_message_new_stream_collection ()">gst_message_new_stream_collection</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-parse-stream-collection" title="gst_message_parse_stream_collection ()">gst_message_parse_stream_collection</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+</td>
+<td class="function_name">
 <a class="link" href="GstMessage.html#gst-message-new-structure-change" title="gst_message_new_structure_change ()">gst_message_new_structure_change</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
@@ -724,6 +788,94 @@
 <a class="link" href="GstMessage.html#gst-message-parse-device-removed" title="gst_message_parse_device_removed ()">gst_message_parse_device_removed</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-new-property-notify" title="gst_message_new_property_notify ()">gst_message_new_property_notify</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-parse-property-notify" title="gst_message_parse_property_notify ()">gst_message_parse_property_notify</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-new-streams-selected" title="gst_message_new_streams_selected ()">gst_message_new_streams_selected</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-parse-streams-selected" title="gst_message_parse_streams_selected ()">gst_message_parse_streams_selected</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-streams-selected-add" title="gst_message_streams_selected_add ()">gst_message_streams_selected_add</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-streams-selected-get-size" title="gst_message_streams_selected_get_size ()">gst_message_streams_selected_get_size</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="returnvalue">GstStream</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-streams-selected-get-stream" title="gst_message_streams_selected_get_stream ()">gst_message_streams_selected_get_stream</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-new-redirect" title="gst_message_new_redirect ()">gst_message_new_redirect</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-add-redirect-entry" title="gst_message_add_redirect_entry ()">gst_message_add_redirect_entry</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-parse-redirect-entry" title="gst_message_parse_redirect_entry ()">gst_message_parse_redirect_entry</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="returnvalue">gsize</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstMessage.html#gst-message-get-num-redirect-entries" title="gst_message_get_num_redirect_entries ()">gst_message_get_num_redirect_entries</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -1401,6 +1553,59 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-message-new-error-with-details"></a><h3>gst_message_new_error_with_details ()</h3>
+<pre class="programlisting"><a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+gst_message_new_error_with_details (<em class="parameter"><code><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *src</code></em>,
+                                    <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>,
+                                    <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *debug</code></em>,
+                                    <em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *details</code></em>);</pre>
+<p>Create a new error message. The message will copy <em class="parameter"><code>error</code></em>
+ and
+<em class="parameter"><code>debug</code></em>
+. This message is posted by element when a fatal event
+occurred. The pipeline will probably (partially) stop. The application
+receiving this message should stop the pipeline.</p>
+<div class="refsect3">
+<a name="gst-message-new-error-with-details.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p> The object originating the message. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>error</p></td>
+<td class="parameter_description"><p> The GError for this message. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>debug</p></td>
+<td class="parameter_description"><p>A debugging string.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>details</p></td>
+<td class="parameter_description"><p> (allow-none): A GstStructure with details. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-message-new-error-with-details.returns"></a><h4>Returns</h4>
+<p> the new error message. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-message-parse-error"></a><h3>gst_message_parse_error ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_message_parse_error (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>,
@@ -1485,6 +1690,38 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-message-parse-error-details"></a><h3>gst_message_parse_error_details ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_message_parse_error_details (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>,
+                                 <em class="parameter"><code>const <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> **structure</code></em>);</pre>
+<p>Returns the optional details structure, may be NULL if none.
+The returned structure must not be freed.</p>
+<div class="refsect3">
+<a name="gst-message-parse-error-details.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>message</p></td>
+<td class="parameter_description"><p>The message object</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>structure</p></td>
+<td class="parameter_description"><p> A pointer to the returned details. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-message-new-warning"></a><h3>gst_message_new_warning ()</h3>
 <pre class="programlisting"><a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
 gst_message_new_warning (<em class="parameter"><code><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *src</code></em>,
@@ -1523,13 +1760,64 @@
 </div>
 <div class="refsect3">
 <a name="gst-message-new-warning.returns"></a><h4>Returns</h4>
-<p> The new warning message.</p>
+<p> the new warning message.</p>
 <p>MT safe. </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-message-new-warning-with-details"></a><h3>gst_message_new_warning_with_details ()</h3>
+<pre class="programlisting"><a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+gst_message_new_warning_with_details (<em class="parameter"><code><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *src</code></em>,
+                                      <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>,
+                                      <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *debug</code></em>,
+                                      <em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *details</code></em>);</pre>
+<p>Create a new warning message. The message will make copies of <em class="parameter"><code>error</code></em>
+ and
+<em class="parameter"><code>debug</code></em>
+.</p>
+<div class="refsect3">
+<a name="gst-message-new-warning-with-details.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p> The object originating the message. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>error</p></td>
+<td class="parameter_description"><p> The GError for this message. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>debug</p></td>
+<td class="parameter_description"><p>A debugging string.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>details</p></td>
+<td class="parameter_description"><p> (allow-none): A GstStructure with details. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-message-new-warning-with-details.returns"></a><h4>Returns</h4>
+<p> the new warning message. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-message-parse-warning"></a><h3>gst_message_parse_warning ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_message_parse_warning (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>,
@@ -1569,6 +1857,38 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-message-parse-warning-details"></a><h3>gst_message_parse_warning_details ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_message_parse_warning_details (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>,
+                                   <em class="parameter"><code>const <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> **structure</code></em>);</pre>
+<p>Returns the optional details structure, may be NULL if none
+The returned structure must not be freed.</p>
+<div class="refsect3">
+<a name="gst-message-parse-warning-details.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>message</p></td>
+<td class="parameter_description"><p>The message object</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>structure</p></td>
+<td class="parameter_description"><p> A pointer to the returned details structure. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-message-new-info"></a><h3>gst_message_new_info ()</h3>
 <pre class="programlisting"><a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
 gst_message_new_info (<em class="parameter"><code><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *src</code></em>,
@@ -1578,7 +1898,6 @@
  and
 <em class="parameter"><code>debug</code></em>
 .</p>
-<p>MT safe.</p>
 <div class="refsect3">
 <a name="gst-message-new-info.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1608,12 +1927,64 @@
 </div>
 <div class="refsect3">
 <a name="gst-message-new-info.returns"></a><h4>Returns</h4>
-<p> the new info message. </p>
+<p> the new info message.</p>
+<p>MT safe. </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-message-new-info-with-details"></a><h3>gst_message_new_info_with_details ()</h3>
+<pre class="programlisting"><a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+gst_message_new_info_with_details (<em class="parameter"><code><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *src</code></em>,
+                                   <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>,
+                                   <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *debug</code></em>,
+                                   <em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *details</code></em>);</pre>
+<p>Create a new info message. The message will make copies of <em class="parameter"><code>error</code></em>
+ and
+<em class="parameter"><code>debug</code></em>
+.</p>
+<div class="refsect3">
+<a name="gst-message-new-info-with-details.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p> The object originating the message. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>error</p></td>
+<td class="parameter_description"><p> The GError for this message. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>debug</p></td>
+<td class="parameter_description"><p>A debugging string.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>details</p></td>
+<td class="parameter_description"><p> (allow-none): A GstStructure with details. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-message-new-info-with-details.returns"></a><h4>Returns</h4>
+<p> the new warning message. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-message-parse-info"></a><h3>gst_message_parse_info ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_message_parse_info (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>,
@@ -1653,6 +2024,38 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-message-parse-info-details"></a><h3>gst_message_parse_info_details ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_message_parse_info_details (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>,
+                                <em class="parameter"><code>const <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> **structure</code></em>);</pre>
+<p>Returns the optional details structure, may be NULL if none
+The returned structure must not be freed.</p>
+<div class="refsect3">
+<a name="gst-message-parse-info-details.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>message</p></td>
+<td class="parameter_description"><p>The message object</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>structure</p></td>
+<td class="parameter_description"><p> A pointer to the returned details structure. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-message-new-tag"></a><h3>gst_message_new_tag ()</h3>
 <pre class="programlisting"><a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
 gst_message_new_tag (<em class="parameter"><code><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *src</code></em>,
@@ -2770,10 +3173,7 @@
 <p>Create a new duration changed message. This message is posted by elements
 that know the duration of a stream when the duration changes. This message
 is received by bins and is used to calculate the total duration of a
-pipeline. Elements may post a duration message with a duration of
-GST_CLOCK_TIME_NONE to indicate that the duration has changed and the 
-cached duration should be discarded. The new duration can then be 
-retrieved via a query.</p>
+pipeline.</p>
 <div class="refsect3">
 <a name="gst-message-new-duration-changed.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -3664,6 +4064,74 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-message-new-stream-collection"></a><h3>gst_message_new_stream_collection ()</h3>
+<pre class="programlisting"><a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+gst_message_new_stream_collection (<em class="parameter"><code><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *src</code></em>,
+                                   <em class="parameter"><code><a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> *collection</code></em>);</pre>
+<p>Creates a new stream-collection message. The message is used to announce new
+<a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a></p>
+<div class="refsect3">
+<a name="gst-message-new-stream-collection.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>The <a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> that created the message</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>collection</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-message-new-stream-collection.returns"></a><h4>Returns</h4>
+<p> a newly allocated <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-parse-stream-collection"></a><h3>gst_message_parse_stream_collection ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_message_parse_stream_collection (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>,
+                                     <em class="parameter"><code><a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> **collection</code></em>);</pre>
+<p>Parses a stream-collection message.</p>
+<div class="refsect3">
+<a name="gst-message-parse-stream-collection.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>message</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> of type <a class="link" href="GstMessage.html#GST-MESSAGE-STREAM-COLLECTION:CAPS"><code class="literal">GST_MESSAGE_STREAM_COLLECTION</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>collection</p></td>
+<td class="parameter_description"><p> A location where to store a
+pointer to the <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a>, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-message-new-structure-change"></a><h3>gst_message_new_structure_change ()</h3>
 <pre class="programlisting"><a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
 gst_message_new_structure_change (<em class="parameter"><code><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *src</code></em>,
@@ -4314,7 +4782,7 @@
 <td class="parameter_name"><p>device</p></td>
 <td class="parameter_description"><p> A location where to store a
 pointer to the new <a class="link" href="gstreamer-GstDevice.html#GstDevice" title="struct GstDevice"><span class="type">GstDevice</span></a>, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
@@ -4348,13 +4816,469 @@
 <td class="parameter_name"><p>device</p></td>
 <td class="parameter_description"><p> A location where to store a
 pointer to the removed <a class="link" href="gstreamer-GstDevice.html#GstDevice" title="struct GstDevice"><span class="type">GstDevice</span></a>, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
 </div>
 <p class="since">Since: <a class="link" href="ix04.html#api-index-1.4">1.4</a></p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-new-property-notify"></a><h3>gst_message_new_property_notify ()</h3>
+<pre class="programlisting"><a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+gst_message_new_property_notify (<em class="parameter"><code><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *src</code></em>,
+                                 <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *property_name</code></em>,
+                                 <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gobjectgobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *val</code></em>);</pre>
+<div class="refsect3">
+<a name="gst-message-new-property-notify.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>The <a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> whose property changed (may or may not be a <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a>)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>property_name</p></td>
+<td class="parameter_description"><p>name of the property that changed</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>val</p></td>
+<td class="parameter_description"><p> new property value, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-message-new-property-notify.returns"></a><h4>Returns</h4>
+<p> a newly allocated <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-parse-property-notify"></a><h3>gst_message_parse_property_notify ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_message_parse_property_notify (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>,
+                                   <em class="parameter"><code><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> **object</code></em>,
+                                   <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **property_name</code></em>,
+                                   <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/gobjectgobject-Generic-values.html#GValue"><span class="type">GValue</span></a> **property_value</code></em>);</pre>
+<p>Parses a property-notify message. These will be posted on the bus only
+when set up with <a class="link" href="GstElement.html#gst-element-add-property-notify-watch" title="gst_element_add_property_notify_watch ()"><code class="function">gst_element_add_property_notify_watch()</code></a> or
+<a class="link" href="GstElement.html#gst-element-add-property-deep-notify-watch" title="gst_element_add_property_deep_notify_watch ()"><code class="function">gst_element_add_property_deep_notify_watch()</code></a>.</p>
+<div class="refsect3">
+<a name="gst-message-parse-property-notify.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>message</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> of type <a class="link" href="GstMessage.html#GST-MESSAGE-PROPERTY-NOTIFY:CAPS"><code class="literal">GST_MESSAGE_PROPERTY_NOTIFY</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>object</p></td>
+<td class="parameter_description"><p> location where to store a
+pointer to the object whose property got changed, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>property_name</p></td>
+<td class="parameter_description"><p> return location for the name of the
+property that got changed, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>property_value</p></td>
+<td class="parameter_description"><p> return location for the new value of
+the property that got changed, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. This will only be set if the
+property notify watch was told to include the value when it was set up. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-new-streams-selected"></a><h3>gst_message_new_streams_selected ()</h3>
+<pre class="programlisting"><a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+gst_message_new_streams_selected (<em class="parameter"><code><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *src</code></em>,
+                                  <em class="parameter"><code><a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> *collection</code></em>);</pre>
+<p>Creates a new steams-selected message. The message is used to announce
+that an array of streams has been selected. This is generally in response
+to a <a class="link" href="GstEvent.html#GST-EVENT-SELECT-STREAMS:CAPS"><span class="type">GST_EVENT_SELECT_STREAMS</span></a> event, or when an element (such as decodebin3)
+makes an initial selection of streams.</p>
+<p>The message also contains the <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> to which the various streams
+belong to.</p>
+<p>Users of <a class="link" href="GstMessage.html#gst-message-new-streams-selected" title="gst_message_new_streams_selected ()"><code class="function">gst_message_new_streams_selected()</code></a> can add the selected streams with
+<a class="link" href="GstMessage.html#gst-message-streams-selected-add" title="gst_message_streams_selected_add ()"><code class="function">gst_message_streams_selected_add()</code></a>.</p>
+<div class="refsect3">
+<a name="gst-message-new-streams-selected.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>The <a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> that created the message</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>collection</p></td>
+<td class="parameter_description"><p> The <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-message-new-streams-selected.returns"></a><h4>Returns</h4>
+<p> a newly allocated <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-parse-streams-selected"></a><h3>gst_message_parse_streams_selected ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_message_parse_streams_selected (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>,
+                                    <em class="parameter"><code><a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> **collection</code></em>);</pre>
+<p>Parses a streams-selected message.</p>
+<div class="refsect3">
+<a name="gst-message-parse-streams-selected.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>message</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> of type <a class="link" href="GstMessage.html#GST-MESSAGE-STREAMS-SELECTED:CAPS"><code class="literal">GST_MESSAGE_STREAMS_SELECTED</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>collection</p></td>
+<td class="parameter_description"><p> A location where to store a
+pointer to the <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a>, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-streams-selected-add"></a><h3>gst_message_streams_selected_add ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_message_streams_selected_add (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>,
+                                  <em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> *stream</code></em>);</pre>
+<p>Adds the <em class="parameter"><code>stream</code></em>
+ to the <em class="parameter"><code>message</code></em>
+.</p>
+<div class="refsect3">
+<a name="gst-message-streams-selected-add.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>message</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> of type <a class="link" href="GstMessage.html#GST-MESSAGE-STREAMS-SELECTED:CAPS"><code class="literal">GST_MESSAGE_STREAMS_SELECTED</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>stream</p></td>
+<td class="parameter_description"><p> a <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> to add to <em class="parameter"><code>message</code></em>
+. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-streams-selected-get-size"></a><h3>gst_message_streams_selected_get_size ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_message_streams_selected_get_size (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>);</pre>
+<p>Returns the number of streams contained in the <em class="parameter"><code>message</code></em>
+.</p>
+<div class="refsect3">
+<a name="gst-message-streams-selected-get-size.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>message</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> of type <a class="link" href="GstMessage.html#GST-MESSAGE-STREAMS-SELECTED:CAPS"><code class="literal">GST_MESSAGE_STREAMS_SELECTED</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-message-streams-selected-get-size.returns"></a><h4>Returns</h4>
+<p> The number of streams contained within.</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-streams-selected-get-stream"></a><h3>gst_message_streams_selected_get_stream ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="returnvalue">GstStream</span></a> *
+gst_message_streams_selected_get_stream
+                               (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>,
+                                <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>);</pre>
+<p>Retrieves the <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> with index <em class="parameter"><code>index</code></em>
+ from the <em class="parameter"><code>message</code></em>
+.</p>
+<div class="refsect3">
+<a name="gst-message-streams-selected-get-stream.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>message</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> of type <a class="link" href="GstMessage.html#GST-MESSAGE-STREAMS-SELECTED:CAPS"><code class="literal">GST_MESSAGE_STREAMS_SELECTED</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>idx</p></td>
+<td class="parameter_description"><p>Index of the stream to retrieve</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-message-streams-selected-get-stream.returns"></a><h4>Returns</h4>
+<p> A <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></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>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-new-redirect"></a><h3>gst_message_new_redirect ()</h3>
+<pre class="programlisting"><a class="link" href="GstMessage.html" title="GstMessage"><span class="returnvalue">GstMessage</span></a> *
+gst_message_new_redirect (<em class="parameter"><code><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> *src</code></em>,
+                          <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *location</code></em>,
+                          <em class="parameter"><code><a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> *tag_list</code></em>,
+                          <em class="parameter"><code>const <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *entry_struct</code></em>);</pre>
+<p>Creates a new redirect message and adds a new entry to it. Redirect messages
+are posted when an element detects that the actual data has to be retrieved
+from a different location. This is useful if such a redirection cannot be
+handled inside a source element, for example when HTTP 302/303 redirects
+return a non-HTTP URL.</p>
+<p>The redirect message can hold multiple entries. The first one is added
+when the redirect message is created, with the given location, tag_list,
+entry_struct arguments. Use <a class="link" href="GstMessage.html#gst-message-add-redirect-entry" title="gst_message_add_redirect_entry ()"><code class="function">gst_message_add_redirect_entry()</code></a> to add more
+entries.</p>
+<p>Each entry has a location, a tag list, and a structure. All of these are
+optional. The tag list and structure are useful for additional metadata,
+such as bitrate statistics for the given location.</p>
+<p>By default, message recipients should treat entries in the order they are
+stored. The recipient should therefore try entry #0 first, and if this
+entry is not acceptable or working, try entry #1 etc. Senders must make
+sure that they add entries in this order. However, recipients are free to
+ignore the order and pick an entry that is "best" for them. One example
+would be a recipient that scans the entries for the one with the highest
+bitrate tag.</p>
+<p>The specified location string is copied. However, ownership over the tag
+list and structure are transferred to the message.</p>
+<div class="refsect3">
+<a name="gst-message-new-redirect.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>The <a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> whose property changed (may or may not be a <a class="link" href="GstElement.html" title="GstElement"><span class="type">GstElement</span></a>)</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>location</p></td>
+<td class="parameter_description"><p> location string for the new entry. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>tag_list</p></td>
+<td class="parameter_description"><p> tag list for the new entry. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>entry_struct</p></td>
+<td class="parameter_description"><p> structure for the new entry. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-message-new-redirect.returns"></a><h4>Returns</h4>
+<p> a newly allocated <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-add-redirect-entry"></a><h3>gst_message_add_redirect_entry ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_message_add_redirect_entry (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>,
+                                <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *location</code></em>,
+                                <em class="parameter"><code><a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> *tag_list</code></em>,
+                                <em class="parameter"><code>const <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *entry_struct</code></em>);</pre>
+<p>Creates and appends a new entry.</p>
+<p>The specified location string is copied. However, ownership over the tag
+list and structure are transferred to the message.</p>
+<div class="refsect3">
+<a name="gst-message-add-redirect-entry.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>message</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> of type <a class="link" href="GstMessage.html#GST-MESSAGE-REDIRECT:CAPS"><code class="literal">GST_MESSAGE_REDIRECT</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>location</p></td>
+<td class="parameter_description"><p> location string for the new entry. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>tag_list</p></td>
+<td class="parameter_description"><p> tag list for the new entry. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>entry_struct</p></td>
+<td class="parameter_description"><p> structure for the new entry. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-parse-redirect-entry"></a><h3>gst_message_parse_redirect_entry ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_message_parse_redirect_entry (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>,
+                                  <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> entry_index</code></em>,
+                                  <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **location</code></em>,
+                                  <em class="parameter"><code><a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> **tag_list</code></em>,
+                                  <em class="parameter"><code>const <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> **entry_struct</code></em>);</pre>
+<p>Parses the location and/or structure from the entry with the given index.
+The index must be between 0 and <a class="link" href="GstMessage.html#gst-message-get-num-redirect-entries" title="gst_message_get_num_redirect_entries ()"><code class="function">gst_message_get_num_redirect_entries()</code></a> - 1.
+Returned pointers are valid for as long as this message exists.</p>
+<div class="refsect3">
+<a name="gst-message-parse-redirect-entry.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>message</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> of type <a class="link" href="GstMessage.html#GST-MESSAGE-REDIRECT:CAPS"><code class="literal">GST_MESSAGE_REDIRECT</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>entry_index</p></td>
+<td class="parameter_description"><p>index of the entry to parse</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>location</p></td>
+<td class="parameter_description"><p> return location for
+the pointer to the entry's location string, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>tag_list</p></td>
+<td class="parameter_description"><p> return location for
+the pointer to the entry's tag list, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>entry_struct</p></td>
+<td class="parameter_description"><p> return location
+for the pointer to the entry's structure, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-get-num-redirect-entries"></a><h3>gst_message_get_num_redirect_entries ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="returnvalue">gsize</span></a>
+gst_message_get_num_redirect_entries (<em class="parameter"><code><a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> *message</code></em>);</pre>
+<div class="refsect3">
+<a name="gst-message-get-num-redirect-entries.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>message</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a> of type <a class="link" href="GstMessage.html#GST-MESSAGE-REDIRECT:CAPS"><code class="literal">GST_MESSAGE_REDIRECT</code></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-message-get-num-redirect-entries.returns"></a><h4>Returns</h4>
+<p> the number of entries stored in the message</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
 </div>
 <div class="refsect1">
 <a name="GstMessage.other_details"></a><h2>Types and Values</h2>
@@ -4713,6 +5637,39 @@
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-MESSAGE-PROPERTY-NOTIFY:CAPS"></a>GST_MESSAGE_PROPERTY_NOTIFY</p></td>
+<td class="enum_member_description">
+<p>Message indicating a <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> property has
+    changed (Since 1.10)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MESSAGE-STREAM-COLLECTION:CAPS"></a>GST_MESSAGE_STREAM_COLLECTION</p></td>
+<td class="enum_member_description">
+<p>Message indicating a new <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a>
+    is available (Since 1.10)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MESSAGE-STREAMS-SELECTED:CAPS"></a>GST_MESSAGE_STREAMS_SELECTED</p></td>
+<td class="enum_member_description">
+<p>Message indicating the active selection of
+    <a href="gstreamer-GstStream.html#GstStream"><span class="type">GstStreams</span></a> has changed (Since 1.10)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MESSAGE-REDIRECT:CAPS"></a>GST_MESSAGE_REDIRECT</p></td>
+<td class="enum_member_description">
+<p>Message indicating to request the application to
+    try to play the given URL(s). Useful if for example a HTTP 302/303
+    response is received with a non-HTTP URL inside. (Since 1.10)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-MESSAGE-ANY:CAPS"></a>GST_MESSAGE_ANY</p></td>
 <td class="enum_member_description">
 <p>mask for all of the above messages.</p>
diff --git a/docs/gst/html/GstObject.html b/docs/gst/html/GstObject.html
index c490f83..f623d80 100644
--- a/docs/gst/html/GstObject.html
+++ b/docs/gst/html/GstObject.html
@@ -2040,13 +2040,24 @@
 <col class="enum_members_description">
 <col width="200px" class="enum_members_annotations">
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-OBJECT-FLAG-MAY-BE-LEAKED:CAPS"></a>GST_OBJECT_FLAG_MAY_BE_LEAKED</p></td>
+<td class="enum_member_description">
+<p>the object is expected to stay alive even
+after <a class="link" href="gstreamer-Gst.html#gst-deinit" title="gst_deinit ()"><code class="function">gst_deinit()</code></a> has been called and so should be ignored by leak
+detection tools. (Since 1.10)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-OBJECT-FLAG-LAST:CAPS"></a>GST_OBJECT_FLAG_LAST</p></td>
 <td class="enum_member_description">
 <p>subclasses can add additional flags starting from this flag</p>
 </td>
 <td class="enum_member_annotations"> </td>
-</tr></tbody>
+</tr>
+</tbody>
 </table></div>
 </div>
 </div>
diff --git a/docs/gst/html/GstPad.html b/docs/gst/html/GstPad.html
index b182ead..867a3cb 100644
--- a/docs/gst/html/GstPad.html
+++ b/docs/gst/html/GstPad.html
@@ -149,6 +149,22 @@
 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
+<a class="link" href="GstPad.html#gst-pad-link-maybe-ghosting" title="gst_pad_link_maybe_ghosting ()">gst_pad_link_maybe_ghosting</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstPad.html#gst-pad-link-maybe-ghosting-full" title="gst_pad_link_maybe_ghosting_full ()">gst_pad_link_maybe_ghosting_full</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
 <a class="link" href="GstPad.html#gst-pad-unlink" title="gst_pad_unlink ()">gst_pad_unlink</a> <span class="c_punctuation">()</span>
 </td>
 </tr>
@@ -944,6 +960,14 @@
 </tr>
 <tr>
 <td class="function_type">
+<a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="returnvalue">GstStream</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="GstPad.html#gst-pad-get-stream" title="gst_pad_get_stream ()">gst_pad_get_stream</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 </td>
 <td class="function_name">
@@ -1676,8 +1700,8 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>event</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a></p></td>
-<td class="parameter_annotations"> </td>
+<td class="parameter_description"><p> a <a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
 </tr>
 </tbody>
 </table></div>
@@ -1920,6 +1944,102 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-pad-link-maybe-ghosting"></a><h3>gst_pad_link_maybe_ghosting ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_pad_link_maybe_ghosting (<em class="parameter"><code><a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a> *src</code></em>,
+                             <em class="parameter"><code><a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a> *sink</code></em>);</pre>
+<p>Links <em class="parameter"><code>src</code></em>
+ to <em class="parameter"><code>sink</code></em>
+, creating any <a class="link" href="GstGhostPad.html" title="GstGhostPad"><span class="type">GstGhostPad</span></a>'s in between as necessary.</p>
+<p>This is a convenience function to save having to create and add intermediate
+<a class="link" href="GstGhostPad.html" title="GstGhostPad"><span class="type">GstGhostPad</span></a>'s as required for linking across <a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a> boundaries.</p>
+<p>If <em class="parameter"><code>src</code></em>
+ or <em class="parameter"><code>sink</code></em>
+ pads don't have parent elements or do not share a common
+ancestor, the link will fail.</p>
+<div class="refsect3">
+<a name="gst-pad-link-maybe-ghosting.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sink</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-pad-link-maybe-ghosting.returns"></a><h4>Returns</h4>
+<p> whether the link succeeded.</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-pad-link-maybe-ghosting-full"></a><h3>gst_pad_link_maybe_ghosting_full ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_pad_link_maybe_ghosting_full (<em class="parameter"><code><a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a> *src</code></em>,
+                                  <em class="parameter"><code><a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a> *sink</code></em>,
+                                  <em class="parameter"><code><a class="link" href="GstPad.html#GstPadLinkCheck" title="enum GstPadLinkCheck"><span class="type">GstPadLinkCheck</span></a> flags</code></em>);</pre>
+<p>Links <em class="parameter"><code>src</code></em>
+ to <em class="parameter"><code>sink</code></em>
+, creating any <a class="link" href="GstGhostPad.html" title="GstGhostPad"><span class="type">GstGhostPad</span></a>'s in between as necessary.</p>
+<p>This is a convenience function to save having to create and add intermediate
+<a class="link" href="GstGhostPad.html" title="GstGhostPad"><span class="type">GstGhostPad</span></a>'s as required for linking across <a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a> boundaries.</p>
+<p>If <em class="parameter"><code>src</code></em>
+ or <em class="parameter"><code>sink</code></em>
+ pads don't have parent elements or do not share a common
+ancestor, the link will fail.</p>
+<p>Calling <a class="link" href="GstPad.html#gst-pad-link-maybe-ghosting-full" title="gst_pad_link_maybe_ghosting_full ()"><code class="function">gst_pad_link_maybe_ghosting_full()</code></a> with
+<em class="parameter"><code>flags</code></em>
+ == <a class="link" href="GstPad.html#GST-PAD-LINK-CHECK-DEFAULT:CAPS"><code class="literal">GST_PAD_LINK_CHECK_DEFAULT</code></a> is the recommended way of linking
+pads with safety checks applied.</p>
+<div class="refsect3">
+<a name="gst-pad-link-maybe-ghosting-full.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>src</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>sink</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>flags</p></td>
+<td class="parameter_description"><p>some <a class="link" href="GstPad.html#GstPadLinkCheck" title="enum GstPadLinkCheck"><span class="type">GstPadLinkCheck</span></a> flags</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-pad-link-maybe-ghosting-full.returns"></a><h4>Returns</h4>
+<p> whether the link succeeded.</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-pad-unlink"></a><h3>gst_pad_unlink ()</h3>
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_pad_unlink (<em class="parameter"><code><a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a> *srcpad</code></em>,
@@ -5864,6 +5984,40 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-pad-get-stream"></a><h3>gst_pad_get_stream ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="returnvalue">GstStream</span></a> *
+gst_pad_get_stream (<em class="parameter"><code><a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a> *pad</code></em>);</pre>
+<p>Returns the current <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> for the <em class="parameter"><code>pad</code></em>
+, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if none has been
+set yet, i.e. the pad has not received a stream-start event yet.</p>
+<p>This is a convenience wrapper around <a class="link" href="GstPad.html#gst-pad-get-sticky-event" title="gst_pad_get_sticky_event ()"><code class="function">gst_pad_get_sticky_event()</code></a> and
+<a class="link" href="GstEvent.html#gst-event-parse-stream" title="gst_event_parse_stream ()"><code class="function">gst_event_parse_stream()</code></a>.</p>
+<div class="refsect3">
+<a name="gst-pad-get-stream.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>pad</p></td>
+<td class="parameter_description"><p>A source <a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-pad-get-stream.returns"></a><h4>Returns</h4>
+<p> the current <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> for <em class="parameter"><code>pad</code></em>
+, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.
+unref the returned stream when no longer needed. </p>
+<p><span class="annotation">[<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstPadForwardFunction"></a><h3>GstPadForwardFunction ()</h3>
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 <span class="c_punctuation">(</span>*GstPadForwardFunction<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a> *pad</code></em>,
diff --git a/docs/gst/html/GstPadTemplate.html b/docs/gst/html/GstPadTemplate.html
index c3845bc..7e27b86 100644
--- a/docs/gst/html/GstPadTemplate.html
+++ b/docs/gst/html/GstPadTemplate.html
@@ -225,7 +225,7 @@
 convenient <a class="link" href="GstPadTemplate.html#GST-STATIC-PAD-TEMPLATE:CAPS" title="GST_STATIC_PAD_TEMPLATE()"><code class="function">GST_STATIC_PAD_TEMPLATE()</code></a> macro.</p>
 <p>A padtemplate can be used to create a pad (see <a class="link" href="GstPad.html#gst-pad-new-from-template" title="gst_pad_new_from_template ()"><code class="function">gst_pad_new_from_template()</code></a>
 or <a class="link" href="GstPad.html#gst-pad-new-from-static-template" title="gst_pad_new_from_static_template ()"><code class="function">gst_pad_new_from_static_template()</code></a>) or to add to an element class
-(see <a class="link" href="GstElement.html#gst-element-class-add-pad-template" title="gst_element_class_add_pad_template ()"><code class="function">gst_element_class_add_pad_template()</code></a>).</p>
+(see <a class="link" href="GstElement.html#gst-element-class-add-static-pad-template" title="gst_element_class_add_static_pad_template ()"><code class="function">gst_element_class_add_static_pad_template()</code></a>).</p>
 <p>The following code example shows the code to create a pad from a padtemplate.</p>
 <div class="informalexample">
   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
@@ -283,15 +283,13 @@
 4
 5
 6
-7
-8</pre></td>
+7</pre></td>
         <td class="listing_code"><pre class="programlisting"><span class="gtkdoc kwb">static void</span>
 <span class="function">my_element_class_init</span> <span class="gtkdoc opt">(</span>GstMyElementClass <span class="gtkdoc opt">*</span>klass<span class="gtkdoc opt">)</span>
 <span class="gtkdoc opt">{</span>
   GstElementClass <span class="gtkdoc opt">*</span>gstelement_class <span class="gtkdoc opt">=</span> <span class="function">GST_ELEMENT_CLASS</span> <span class="gtkdoc opt">(</span>klass<span class="gtkdoc opt">);</span>
 
-  <span class="function"><a href="GstElement.html#gst-element-class-add-pad-template">gst_element_class_add_pad_template</a></span> <span class="gtkdoc opt">(</span>gstelement_class<span class="gtkdoc opt">,</span>
-      <span class="function"><a href="GstPadTemplate.html#gst-static-pad-template-get">gst_static_pad_template_get</a></span> <span class="gtkdoc opt">(&amp;</span>my_template<span class="gtkdoc opt">));</span>
+  <span class="function"><a href="GstElement.html#gst-element-class-add-static-pad-template">gst_element_class_add_static_pad_template</a></span> <span class="gtkdoc opt">(</span>gstelement_class<span class="gtkdoc opt">, &amp;</span>my_template<span class="gtkdoc opt">);</span>
 <span class="gtkdoc opt">}</span></pre></td>
       </tr>
     </tbody>
diff --git a/docs/gst/html/GstQuery.html b/docs/gst/html/GstQuery.html
index 4cc558c..2323332 100644
--- a/docs/gst/html/GstQuery.html
+++ b/docs/gst/html/GstQuery.html
@@ -1316,7 +1316,7 @@
                       <em class="parameter"><code><a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a> *structure</code></em>);</pre>
 <p>Constructs a new custom query object. Use <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a>
 when done with it.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-custom.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1384,7 +1384,7 @@
 <p>Constructs a new convert query object. Use <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a>
 when done with it. A convert query is used to ask for a conversion between
 one format and another.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-convert.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1530,7 +1530,7 @@
 <p>Constructs a new query stream position query object. Use <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a>
 when done with it. A position query is used to query the current position
 of playback in the streams, in some format.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-position.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1636,7 +1636,7 @@
 <p>Constructs a new stream duration query object to query in the given format.
 Use <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a> when done with it. A duration query will give the
 total length of the stream.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-duration.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1743,7 +1743,7 @@
 Use <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a> when done with it. A latency query is usually performed
 by sinks to compensate for additional latency introduced by elements in the
 pipeline.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-latency.returns"></a><h4>Returns</h4>
 <p> a <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</span></a>. </p>
@@ -1841,7 +1841,7 @@
 gst_query_new_seeking (<em class="parameter"><code><a class="link" href="gstreamer-GstFormat.html#GstFormat" title="enum GstFormat"><span class="type">GstFormat</span></a> format</code></em>);</pre>
 <p>Constructs a new query object for querying seeking properties of
 the stream.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-seeking.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1974,7 +1974,7 @@
 gst_query_new_formats (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
 <p>Constructs a new query object for querying formats of
 the stream.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-formats.returns"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</span></a>. </p>
@@ -2145,7 +2145,7 @@
 <p>Constructs a new segment query object. Use <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a>
 when done with it. A segment query is used to discover information about the
 currently configured segment for playback.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-segment.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2311,7 +2311,7 @@
 <em class="parameter"><code>filter</code></em>
  should be returned from the CAPS query. Specifying a filter might
 greatly reduce the amount of processing an element needs to do.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-caps.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2438,7 +2438,7 @@
 gst_query_new_accept_caps (<em class="parameter"><code><a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> *caps</code></em>);</pre>
 <p>Constructs a new query object for querying if <em class="parameter"><code>caps</code></em>
  are accepted.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-accept-caps.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2564,7 +2564,7 @@
 gst_query_new_buffering (<em class="parameter"><code><a class="link" href="gstreamer-GstFormat.html#GstFormat" title="enum GstFormat"><span class="type">GstFormat</span></a> format</code></em>);</pre>
 <p>Constructs a new query object for querying the buffering status of
 a stream.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-buffering.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2993,7 +2993,7 @@
 <p>Constructs a new query URI query object. Use <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a>
 when done with it. An URI query is used to query the current URI
 that is used by the source or sink.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-uri.returns"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</span></a>. </p>
@@ -3207,7 +3207,7 @@
 gst_query_new_allocation (<em class="parameter"><code><a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> *caps</code></em>,
                           <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> need_pool</code></em>);</pre>
 <p>Constructs a new query object for querying the allocation properties.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-allocation.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -3248,6 +3248,8 @@
 whether a pool is needed in <em class="parameter"><code>need_pool</code></em>
 , if the respective parameters
 are non-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
+<p>Pool details can be retrieved using <a class="link" href="GstQuery.html#gst-query-get-n-allocation-pools" title="gst_query_get_n_allocation_pools ()"><code class="function">gst_query_get_n_allocation_pools()</code></a> and
+<a class="link" href="GstQuery.html#gst-query-parse-nth-allocation-pool" title="gst_query_parse_nth_allocation_pool ()"><code class="function">gst_query_parse_nth_allocation_pool()</code></a>.</p>
 <div class="refsect3">
 <a name="gst-query-parse-allocation.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -3308,7 +3310,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the size</p></td>
+<td class="parameter_description"><p>the buffer size</p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -3392,7 +3394,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p> the size. </p></td>
+<td class="parameter_description"><p> the buffer size. </p></td>
 <td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
 </tr>
 <tr>
@@ -3877,7 +3879,7 @@
 <pre class="programlisting"><a class="link" href="GstQuery.html" title="GstQuery"><span class="returnvalue">GstQuery</span></a> *
 gst_query_new_scheduling (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
 <p>Constructs a new query object for querying the scheduling properties.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-scheduling.returns"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</span></a>. </p>
@@ -4172,7 +4174,7 @@
 <pre class="programlisting"><a class="link" href="GstQuery.html" title="GstQuery"><span class="returnvalue">GstQuery</span></a> *
 gst_query_new_drain (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
 <p>Constructs a new query object for querying the drain state.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-drain.returns"></a><h4>Returns</h4>
 <p> a new <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</span></a>. </p>
@@ -4185,7 +4187,7 @@
 <pre class="programlisting"><a class="link" href="GstQuery.html" title="GstQuery"><span class="returnvalue">GstQuery</span></a> *
 gst_query_new_context (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *context_type</code></em>);</pre>
 <p>Constructs a new query object for querying the pipeline-local context.</p>
-<p>Free-function: gst_query_unref</p>
+<p>Free-function: <a class="link" href="GstQuery.html#gst-query-unref" title="gst_query_unref ()"><code class="function">gst_query_unref()</code></a></p>
 <div class="refsect3">
 <a name="gst-query-new-context.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
diff --git a/docs/gst/html/GstSegment.html b/docs/gst/html/GstSegment.html
index 7c67cb5..9ed1936 100644
--- a/docs/gst/html/GstSegment.html
+++ b/docs/gst/html/GstSegment.html
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="libgstreamer.html" title="GStreamer Core Library">
 <link rel="prev" href="GstRegistry.html" title="GstRegistry">
-<link rel="next" href="GstStructure.html" title="GstStructure">
+<link rel="next" href="gstreamer-GstStream.html" title="GstStream">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
@@ -21,7 +21,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="libgstreamer.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
 <td><a accesskey="p" href="GstRegistry.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="GstStructure.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gstreamer-GstStream.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
 <a name="GstSegment"></a><div class="titlepage"></div>
diff --git a/docs/gst/html/GstStructure.html b/docs/gst/html/GstStructure.html
index 9bfe24c..dba48e7 100644
--- a/docs/gst/html/GstStructure.html
+++ b/docs/gst/html/GstStructure.html
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
 <link rel="up" href="libgstreamer.html" title="GStreamer Core Library">
-<link rel="prev" href="GstSegment.html" title="GstSegment">
+<link rel="prev" href="gstreamer-GstStreamCollection.html" title="GstStreamCollection">
 <link rel="next" href="GstSystemClock.html" title="GstSystemClock">
 <meta name="generator" content="GTK-Doc V1.25 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
@@ -20,7 +20,7 @@
 </td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
 <td><a accesskey="u" href="libgstreamer.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="GstSegment.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gstreamer-GstStreamCollection.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
 <td><a accesskey="n" href="GstSystemClock.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
 </tr></table>
 <div class="refentry">
diff --git a/docs/gst/html/GstTagList.html b/docs/gst/html/GstTagList.html
index 24b5eb2..f728191 100644
--- a/docs/gst/html/GstTagList.html
+++ b/docs/gst/html/GstTagList.html
@@ -3510,7 +3510,7 @@
 In the table below this is shown for the cases that a tag exists in the list
 (A) or does not exists (!A) and combinations thereof.</p>
 <div class="table">
-<a name="id-1.3.48.9.3.4"></a><p class="title"><b>Table 1. merge mode</b></p>
+<a name="id-1.3.50.9.3.4"></a><p class="title"><b>Table 1. merge mode</b></p>
 <div class="table-contents"><table class="table" summary="merge mode" border="1">
 <colgroup>
 <col>
diff --git a/docs/gst/html/gstreamer-1.0.devhelp2 b/docs/gst/html/gstreamer-1.0.devhelp2
index a1848af..e141252 100644
--- a/docs/gst/html/gstreamer-1.0.devhelp2
+++ b/docs/gst/html/gstreamer-1.0.devhelp2
@@ -49,6 +49,8 @@
       <sub name="GstQuery" link="GstQuery.html"/>
       <sub name="GstRegistry" link="GstRegistry.html"/>
       <sub name="GstSegment" link="GstSegment.html"/>
+      <sub name="GstStream" link="gstreamer-GstStream.html"/>
+      <sub name="GstStreamCollection" link="gstreamer-GstStreamCollection.html"/>
       <sub name="GstStructure" link="GstStructure.html"/>
       <sub name="GstSystemClock" link="GstSystemClock.html"/>
       <sub name="GstTagList" link="GstTagList.html"/>
@@ -150,6 +152,8 @@
     <keyword type="enum" name="enum GstBinFlags" link="GstBin.html#GstBinFlags"/>
     <keyword type="property" name="The “async-handling” property" link="GstBin.html#GstBin--async-handling"/>
     <keyword type="property" name="The “message-forward” property" link="GstBin.html#GstBin--message-forward"/>
+    <keyword type="signal" name="The “deep-element-added” signal" link="GstBin.html#GstBin-deep-element-added"/>
+    <keyword type="signal" name="The “deep-element-removed” signal" link="GstBin.html#GstBin-deep-element-removed"/>
     <keyword type="signal" name="The “do-latency” signal" link="GstBin.html#GstBin-do-latency"/>
     <keyword type="signal" name="The “element-added” signal" link="GstBin.html#GstBin-element-added"/>
     <keyword type="signal" name="The “element-removed” signal" link="GstBin.html#GstBin-element-removed"/>
@@ -224,6 +228,10 @@
     <keyword type="function" name="gst_buffer_foreach_meta ()" link="GstBuffer.html#gst-buffer-foreach-meta"/>
     <keyword type="function" name="gst_buffer_add_parent_buffer_meta ()" link="GstBuffer.html#gst-buffer-add-parent-buffer-meta" since="1.6"/>
     <keyword type="macro" name="gst_buffer_get_parent_buffer_meta()" link="GstBuffer.html#gst-buffer-get-parent-buffer-meta"/>
+    <keyword type="function" name="gst_buffer_get_flags ()" link="GstBuffer.html#gst-buffer-get-flags" since="1.10"/>
+    <keyword type="function" name="gst_buffer_set_flags ()" link="GstBuffer.html#gst-buffer-set-flags" since="1.10"/>
+    <keyword type="function" name="gst_buffer_unset_flags ()" link="GstBuffer.html#gst-buffer-unset-flags" since="1.10"/>
+    <keyword type="function" name="gst_buffer_has_flags ()" link="GstBuffer.html#gst-buffer-has-flags"/>
     <keyword type="struct" name="struct GstBuffer" link="GstBuffer.html#GstBuffer-struct"/>
     <keyword type="enum" name="enum GstBufferFlags" link="GstBuffer.html#GstBufferFlags"/>
     <keyword type="macro" name="GST_BUFFER_OFFSET_NONE" link="GstBuffer.html#GST-BUFFER-OFFSET-NONE:CAPS"/>
@@ -497,8 +505,6 @@
     <keyword type="signal" name="The “synced” signal" link="GstClock.html#GstClock-synced"/>
     <keyword type="macro" name="GST_DISABLE_GST_DEBUG" link="gstreamer-GstConfig.html#GST-DISABLE-GST-DEBUG:CAPS"/>
     <keyword type="macro" name="GST_DISABLE_PARSE" link="gstreamer-GstConfig.html#GST-DISABLE-PARSE:CAPS"/>
-    <keyword type="macro" name="GST_DISABLE_TRACE" link="gstreamer-GstConfig.html#GST-DISABLE-TRACE:CAPS"/>
-    <keyword type="macro" name="GST_DISABLE_ALLOC_TRACE" link="gstreamer-GstConfig.html#GST-DISABLE-ALLOC-TRACE:CAPS"/>
     <keyword type="macro" name="GST_DISABLE_REGISTRY" link="gstreamer-GstConfig.html#GST-DISABLE-REGISTRY:CAPS"/>
     <keyword type="macro" name="GST_DISABLE_PLUGIN" link="gstreamer-GstConfig.html#GST-DISABLE-PLUGIN:CAPS"/>
     <keyword type="function" name="gst_context_new ()" link="GstContext.html#gst-context-new" since="1.2"/>
@@ -580,8 +586,12 @@
     <keyword type="macro" name="GST_ELEMENT_PADS()" link="GstElement.html#GST-ELEMENT-PADS:CAPS"/>
     <keyword type="macro" name="GST_ELEMENT_START_TIME()" link="GstElement.html#GST-ELEMENT-START-TIME:CAPS"/>
     <keyword type="macro" name="GST_ELEMENT_ERROR()" link="GstElement.html#GST-ELEMENT-ERROR:CAPS"/>
+    <keyword type="macro" name="GST_ELEMENT_ERROR_WITH_DETAILS()" link="GstElement.html#GST-ELEMENT-ERROR-WITH-DETAILS:CAPS" since="1.10"/>
+    <keyword type="macro" name="GST_ELEMENT_FLOW_ERROR()" link="GstElement.html#GST-ELEMENT-FLOW-ERROR:CAPS" since="1.10"/>
     <keyword type="macro" name="GST_ELEMENT_WARNING()" link="GstElement.html#GST-ELEMENT-WARNING:CAPS"/>
+    <keyword type="macro" name="GST_ELEMENT_WARNING_WITH_DETAILS()" link="GstElement.html#GST-ELEMENT-WARNING-WITH-DETAILS:CAPS" since="1.10"/>
     <keyword type="macro" name="GST_ELEMENT_INFO()" link="GstElement.html#GST-ELEMENT-INFO:CAPS"/>
+    <keyword type="macro" name="GST_ELEMENT_INFO_WITH_DETAILS()" link="GstElement.html#GST-ELEMENT-INFO-WITH-DETAILS:CAPS" since="1.10"/>
     <keyword type="macro" name="GST_ELEMENT_IS_LOCKED_STATE()" link="GstElement.html#GST-ELEMENT-IS-LOCKED-STATE:CAPS"/>
     <keyword type="function" name="gst_element_class_add_pad_template ()" link="GstElement.html#gst-element-class-add-pad-template"/>
     <keyword type="function" name="gst_element_class_add_static_pad_template ()" link="GstElement.html#gst-element-class-add-static-pad-template" since="1.8"/>
@@ -644,6 +654,8 @@
     <keyword type="function" name="gst_element_sync_state_with_parent ()" link="GstElement.html#gst-element-sync-state-with-parent"/>
     <keyword type="function" name="gst_element_change_state ()" link="GstElement.html#gst-element-change-state"/>
     <keyword type="function" name="gst_element_message_full ()" link="GstElement.html#gst-element-message-full"/>
+    <keyword type="function" name="gst_element_message_full_with_details ()" link="GstElement.html#gst-element-message-full-with-details" since="1.10"/>
+    <keyword type="function" name="gst_make_element_message_details ()" link="GstElement.html#gst-make-element-message-details"/>
     <keyword type="function" name="gst_element_post_message ()" link="GstElement.html#gst-element-post-message"/>
     <keyword type="function" name="gst_element_query ()" link="GstElement.html#gst-element-query"/>
     <keyword type="function" name="gst_element_query_convert ()" link="GstElement.html#gst-element-query-convert"/>
@@ -652,6 +664,11 @@
     <keyword type="function" name="gst_element_send_event ()" link="GstElement.html#gst-element-send-event"/>
     <keyword type="function" name="gst_element_seek_simple ()" link="GstElement.html#gst-element-seek-simple"/>
     <keyword type="function" name="gst_element_seek ()" link="GstElement.html#gst-element-seek"/>
+    <keyword type="function" name="gst_element_add_property_notify_watch ()" link="GstElement.html#gst-element-add-property-notify-watch" since="1.10"/>
+    <keyword type="function" name="gst_element_add_property_deep_notify_watch ()" link="GstElement.html#gst-element-add-property-deep-notify-watch" since="1.10"/>
+    <keyword type="function" name="gst_element_remove_property_notify_watch ()" link="GstElement.html#gst-element-remove-property-notify-watch" since="1.10"/>
+    <keyword type="function" name="GstElementCallAsyncFunc ()" link="GstElement.html#GstElementCallAsyncFunc"/>
+    <keyword type="function" name="gst_element_call_async ()" link="GstElement.html#gst-element-call-async" since="1.10"/>
     <keyword type="struct" name="struct GstElement" link="GstElement.html#GstElement-struct"/>
     <keyword type="struct" name="struct GstElementClass" link="GstElement.html#GstElementClass"/>
     <keyword type="enum" name="enum GstElementFlags" link="GstElement.html#GstElementFlags"/>
@@ -762,6 +779,8 @@
     <keyword type="function" name="gst_event_parse_stream_flags ()" link="GstEvent.html#gst-event-parse-stream-flags" since="1.2"/>
     <keyword type="function" name="gst_event_set_group_id ()" link="GstEvent.html#gst-event-set-group-id" since="1.2"/>
     <keyword type="function" name="gst_event_parse_group_id ()" link="GstEvent.html#gst-event-parse-group-id" since="1.2"/>
+    <keyword type="function" name="gst_event_set_stream ()" link="GstEvent.html#gst-event-set-stream" since="1.10"/>
+    <keyword type="function" name="gst_event_parse_stream ()" link="GstEvent.html#gst-event-parse-stream" since="1.10"/>
     <keyword type="function" name="gst_event_new_segment ()" link="GstEvent.html#gst-event-new-segment"/>
     <keyword type="function" name="gst_event_parse_segment ()" link="GstEvent.html#gst-event-parse-segment"/>
     <keyword type="function" name="gst_event_copy_segment ()" link="GstEvent.html#gst-event-copy-segment"/>
@@ -791,6 +810,12 @@
     <keyword type="function" name="gst_event_parse_segment_done ()" link="GstEvent.html#gst-event-parse-segment-done"/>
     <keyword type="function" name="gst_event_new_protection ()" link="GstEvent.html#gst-event-new-protection" since="1.6"/>
     <keyword type="function" name="gst_event_parse_protection ()" link="GstEvent.html#gst-event-parse-protection" since="1.6"/>
+    <keyword type="function" name="gst_event_new_select_streams ()" link="GstEvent.html#gst-event-new-select-streams" since="1.10"/>
+    <keyword type="function" name="gst_event_parse_select_streams ()" link="GstEvent.html#gst-event-parse-select-streams" since="1.10"/>
+    <keyword type="function" name="gst_event_new_stream_collection ()" link="GstEvent.html#gst-event-new-stream-collection" since="1.10"/>
+    <keyword type="function" name="gst_event_parse_stream_collection ()" link="GstEvent.html#gst-event-parse-stream-collection" since="1.10"/>
+    <keyword type="function" name="gst_event_new_stream_group_done ()" link="GstEvent.html#gst-event-new-stream-group-done" since="1.10"/>
+    <keyword type="function" name="gst_event_parse_stream_group_done ()" link="GstEvent.html#gst-event-parse-stream-group-done" since="1.10"/>
     <keyword type="struct" name="struct GstEvent" link="GstEvent.html#GstEvent-struct"/>
     <keyword type="enum" name="enum GstEventTypeFlags" link="GstEvent.html#GstEventTypeFlags"/>
     <keyword type="macro" name="GST_EVENT_TYPE_BOTH" link="GstEvent.html#GST-EVENT-TYPE-BOTH:CAPS"/>
@@ -911,11 +936,17 @@
     <keyword type="function" name="gst_message_replace ()" link="GstMessage.html#gst-message-replace"/>
     <keyword type="function" name="gst_message_new_eos ()" link="GstMessage.html#gst-message-new-eos"/>
     <keyword type="function" name="gst_message_new_error ()" link="GstMessage.html#gst-message-new-error"/>
+    <keyword type="function" name="gst_message_new_error_with_details ()" link="GstMessage.html#gst-message-new-error-with-details" since="1.10"/>
     <keyword type="function" name="gst_message_parse_error ()" link="GstMessage.html#gst-message-parse-error"/>
+    <keyword type="function" name="gst_message_parse_error_details ()" link="GstMessage.html#gst-message-parse-error-details" since="1.10"/>
     <keyword type="function" name="gst_message_new_warning ()" link="GstMessage.html#gst-message-new-warning"/>
+    <keyword type="function" name="gst_message_new_warning_with_details ()" link="GstMessage.html#gst-message-new-warning-with-details" since="1.10"/>
     <keyword type="function" name="gst_message_parse_warning ()" link="GstMessage.html#gst-message-parse-warning"/>
+    <keyword type="function" name="gst_message_parse_warning_details ()" link="GstMessage.html#gst-message-parse-warning-details" since="1.10"/>
     <keyword type="function" name="gst_message_new_info ()" link="GstMessage.html#gst-message-new-info"/>
+    <keyword type="function" name="gst_message_new_info_with_details ()" link="GstMessage.html#gst-message-new-info-with-details" since="1.10"/>
     <keyword type="function" name="gst_message_parse_info ()" link="GstMessage.html#gst-message-parse-info"/>
+    <keyword type="function" name="gst_message_parse_info_details ()" link="GstMessage.html#gst-message-parse-info-details" since="1.10"/>
     <keyword type="function" name="gst_message_new_tag ()" link="GstMessage.html#gst-message-new-tag"/>
     <keyword type="function" name="gst_message_parse_tag ()" link="GstMessage.html#gst-message-parse-tag"/>
     <keyword type="function" name="gst_message_new_buffering ()" link="GstMessage.html#gst-message-new-buffering"/>
@@ -960,6 +991,8 @@
     <keyword type="function" name="gst_message_new_stream_start ()" link="GstMessage.html#gst-message-new-stream-start"/>
     <keyword type="function" name="gst_message_set_group_id ()" link="GstMessage.html#gst-message-set-group-id" since="1.2"/>
     <keyword type="function" name="gst_message_parse_group_id ()" link="GstMessage.html#gst-message-parse-group-id" since="1.2"/>
+    <keyword type="function" name="gst_message_new_stream_collection ()" link="GstMessage.html#gst-message-new-stream-collection" since="1.10"/>
+    <keyword type="function" name="gst_message_parse_stream_collection ()" link="GstMessage.html#gst-message-parse-stream-collection" since="1.10"/>
     <keyword type="function" name="gst_message_new_structure_change ()" link="GstMessage.html#gst-message-new-structure-change"/>
     <keyword type="function" name="gst_message_parse_structure_change ()" link="GstMessage.html#gst-message-parse-structure-change"/>
     <keyword type="function" name="gst_message_new_request_state ()" link="GstMessage.html#gst-message-new-request-state"/>
@@ -978,6 +1011,17 @@
     <keyword type="function" name="gst_message_new_device_removed ()" link="GstMessage.html#gst-message-new-device-removed" since="1.4"/>
     <keyword type="function" name="gst_message_parse_device_added ()" link="GstMessage.html#gst-message-parse-device-added" since="1.4"/>
     <keyword type="function" name="gst_message_parse_device_removed ()" link="GstMessage.html#gst-message-parse-device-removed" since="1.4"/>
+    <keyword type="function" name="gst_message_new_property_notify ()" link="GstMessage.html#gst-message-new-property-notify" since="1.10"/>
+    <keyword type="function" name="gst_message_parse_property_notify ()" link="GstMessage.html#gst-message-parse-property-notify" since="1.10"/>
+    <keyword type="function" name="gst_message_new_streams_selected ()" link="GstMessage.html#gst-message-new-streams-selected" since="1.10"/>
+    <keyword type="function" name="gst_message_parse_streams_selected ()" link="GstMessage.html#gst-message-parse-streams-selected" since="1.10"/>
+    <keyword type="function" name="gst_message_streams_selected_add ()" link="GstMessage.html#gst-message-streams-selected-add" since="1.10"/>
+    <keyword type="function" name="gst_message_streams_selected_get_size ()" link="GstMessage.html#gst-message-streams-selected-get-size" since="1.10"/>
+    <keyword type="function" name="gst_message_streams_selected_get_stream ()" link="GstMessage.html#gst-message-streams-selected-get-stream" since="1.10"/>
+    <keyword type="function" name="gst_message_new_redirect ()" link="GstMessage.html#gst-message-new-redirect" since="1.10"/>
+    <keyword type="function" name="gst_message_add_redirect_entry ()" link="GstMessage.html#gst-message-add-redirect-entry" since="1.10"/>
+    <keyword type="function" name="gst_message_parse_redirect_entry ()" link="GstMessage.html#gst-message-parse-redirect-entry" since="1.10"/>
+    <keyword type="function" name="gst_message_get_num_redirect_entries ()" link="GstMessage.html#gst-message-get-num-redirect-entries" since="1.10"/>
     <keyword type="struct" name="struct GstMessage" link="GstMessage.html#GstMessage-struct"/>
     <keyword type="enum" name="enum GstMessageType" link="GstMessage.html#GstMessageType"/>
     <keyword type="enum" name="enum GstStructureChangeType" link="GstMessage.html#GstStructureChangeType"/>
@@ -1096,6 +1140,8 @@
     <keyword type="function" name="gst_pad_get_pad_template ()" link="GstPad.html#gst-pad-get-pad-template"/>
     <keyword type="function" name="gst_pad_link ()" link="GstPad.html#gst-pad-link"/>
     <keyword type="function" name="gst_pad_link_full ()" link="GstPad.html#gst-pad-link-full"/>
+    <keyword type="function" name="gst_pad_link_maybe_ghosting ()" link="GstPad.html#gst-pad-link-maybe-ghosting" since="1.10"/>
+    <keyword type="function" name="gst_pad_link_maybe_ghosting_full ()" link="GstPad.html#gst-pad-link-maybe-ghosting-full" since="1.10"/>
     <keyword type="function" name="gst_pad_unlink ()" link="GstPad.html#gst-pad-unlink"/>
     <keyword type="function" name="gst_pad_is_linked ()" link="GstPad.html#gst-pad-is-linked"/>
     <keyword type="function" name="gst_pad_can_link ()" link="GstPad.html#gst-pad-can-link"/>
@@ -1201,6 +1247,7 @@
     <keyword type="function" name="gst_pad_create_stream_id_printf ()" link="GstPad.html#gst-pad-create-stream-id-printf"/>
     <keyword type="function" name="gst_pad_create_stream_id_printf_valist ()" link="GstPad.html#gst-pad-create-stream-id-printf-valist"/>
     <keyword type="function" name="gst_pad_get_stream_id ()" link="GstPad.html#gst-pad-get-stream-id" since="1.2"/>
+    <keyword type="function" name="gst_pad_get_stream ()" link="GstPad.html#gst-pad-get-stream" since="1.10"/>
     <keyword type="function" name="GstPadForwardFunction ()" link="GstPad.html#GstPadForwardFunction"/>
     <keyword type="function" name="gst_pad_forward ()" link="GstPad.html#gst-pad-forward"/>
     <keyword type="function" name="gst_pad_chain ()" link="GstPad.html#gst-pad-chain"/>
@@ -1571,6 +1618,27 @@
     <keyword type="function" name="gst_segment_is_equal ()" link="GstSegment.html#gst-segment-is-equal" since="1.6"/>
     <keyword type="struct" name="struct GstSegment" link="GstSegment.html#GstSegment-struct"/>
     <keyword type="enum" name="enum GstSegmentFlags" link="GstSegment.html#GstSegmentFlags"/>
+    <keyword type="function" name="gst_stream_new ()" link="gstreamer-GstStream.html#gst-stream-new" since="1.10"/>
+    <keyword type="function" name="gst_stream_get_caps ()" link="gstreamer-GstStream.html#gst-stream-get-caps" since="1.10"/>
+    <keyword type="function" name="gst_stream_get_stream_flags ()" link="gstreamer-GstStream.html#gst-stream-get-stream-flags" since="1.10"/>
+    <keyword type="function" name="gst_stream_get_stream_id ()" link="gstreamer-GstStream.html#gst-stream-get-stream-id" since="1.10"/>
+    <keyword type="function" name="gst_stream_get_stream_type ()" link="gstreamer-GstStream.html#gst-stream-get-stream-type" since="1.10"/>
+    <keyword type="function" name="gst_stream_get_tags ()" link="gstreamer-GstStream.html#gst-stream-get-tags" since="1.10"/>
+    <keyword type="function" name="gst_stream_set_caps ()" link="gstreamer-GstStream.html#gst-stream-set-caps" since="1.10"/>
+    <keyword type="function" name="gst_stream_set_stream_flags ()" link="gstreamer-GstStream.html#gst-stream-set-stream-flags" since="1.10"/>
+    <keyword type="function" name="gst_stream_set_stream_type ()" link="gstreamer-GstStream.html#gst-stream-set-stream-type" since="1.10"/>
+    <keyword type="function" name="gst_stream_set_tags ()" link="gstreamer-GstStream.html#gst-stream-set-tags" since="1.10"/>
+    <keyword type="function" name="gst_stream_type_get_name ()" link="gstreamer-GstStream.html#gst-stream-type-get-name" since="1.10"/>
+    <keyword type="struct" name="struct GstStream" link="gstreamer-GstStream.html#GstStream"/>
+    <keyword type="struct" name="struct GstStreamClass" link="gstreamer-GstStream.html#GstStreamClass"/>
+    <keyword type="enum" name="enum GstStreamType" link="gstreamer-GstStream.html#GstStreamType"/>
+    <keyword type="function" name="gst_stream_collection_new ()" link="gstreamer-GstStreamCollection.html#gst-stream-collection-new" since="1.10"/>
+    <keyword type="function" name="gst_stream_collection_add_stream ()" link="gstreamer-GstStreamCollection.html#gst-stream-collection-add-stream" since="1.10"/>
+    <keyword type="function" name="gst_stream_collection_get_upstream_id ()" link="gstreamer-GstStreamCollection.html#gst-stream-collection-get-upstream-id" since="1.10"/>
+    <keyword type="function" name="gst_stream_collection_get_size ()" link="gstreamer-GstStreamCollection.html#gst-stream-collection-get-size" since="1.10"/>
+    <keyword type="function" name="gst_stream_collection_get_stream ()" link="gstreamer-GstStreamCollection.html#gst-stream-collection-get-stream" since="1.10"/>
+    <keyword type="struct" name="struct GstStreamCollection" link="gstreamer-GstStreamCollection.html#GstStreamCollection" since="1.10"/>
+    <keyword type="struct" name="struct GstStreamCollectionClass" link="gstreamer-GstStreamCollection.html#GstStreamCollectionClass"/>
     <keyword type="function" name="GstStructureForeachFunc ()" link="GstStructure.html#GstStructureForeachFunc"/>
     <keyword type="function" name="GstStructureMapFunc ()" link="GstStructure.html#GstStructureMapFunc"/>
     <keyword type="function" name="GstStructureFilterMapFunc ()" link="GstStructure.html#GstStructureFilterMapFunc"/>
@@ -2485,9 +2553,11 @@
     <keyword type="constant" name="GST_EVENT_STREAM_START" link="GstEvent.html#GST-EVENT-STREAM-START:CAPS"/>
     <keyword type="constant" name="GST_EVENT_CAPS" link="GstEvent.html#GST-EVENT-CAPS"/>
     <keyword type="constant" name="GST_EVENT_SEGMENT" link="GstEvent.html#GST-EVENT-SEGMENT:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_STREAM_COLLECTION" link="GstEvent.html#GST-EVENT-STREAM-COLLECTION:CAPS"/>
     <keyword type="constant" name="GST_EVENT_TAG" link="GstEvent.html#GST-EVENT-TAG:CAPS"/>
     <keyword type="constant" name="GST_EVENT_BUFFERSIZE" link="GstEvent.html#GST-EVENT-BUFFERSIZE:CAPS"/>
     <keyword type="constant" name="GST_EVENT_SINK_MESSAGE" link="GstEvent.html#GST-EVENT-SINK-MESSAGE:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_STREAM_GROUP_DONE" link="GstEvent.html#GST-EVENT-STREAM-GROUP-DONE:CAPS"/>
     <keyword type="constant" name="GST_EVENT_EOS" link="GstEvent.html#GST-EVENT-EOS:CAPS"/>
     <keyword type="constant" name="GST_EVENT_TOC" link="GstEvent.html#GST-EVENT-TOC:CAPS"/>
     <keyword type="constant" name="GST_EVENT_PROTECTION" link="GstEvent.html#GST-EVENT-PROTECTION:CAPS"/>
@@ -2500,6 +2570,7 @@
     <keyword type="constant" name="GST_EVENT_STEP" link="GstEvent.html#GST-EVENT-STEP:CAPS"/>
     <keyword type="constant" name="GST_EVENT_RECONFIGURE" link="GstEvent.html#GST-EVENT-RECONFIGURE:CAPS"/>
     <keyword type="constant" name="GST_EVENT_TOC_SELECT" link="GstEvent.html#GST-EVENT-TOC-SELECT:CAPS"/>
+    <keyword type="constant" name="GST_EVENT_SELECT_STREAMS" link="GstEvent.html#GST-EVENT-SELECT-STREAMS:CAPS"/>
     <keyword type="constant" name="GST_EVENT_CUSTOM_UPSTREAM" link="GstEvent.html#GST-EVENT-CUSTOM-UPSTREAM:CAPS"/>
     <keyword type="constant" name="GST_EVENT_CUSTOM_DOWNSTREAM" link="GstEvent.html#GST-EVENT-CUSTOM-DOWNSTREAM:CAPS"/>
     <keyword type="constant" name="GST_EVENT_CUSTOM_DOWNSTREAM_OOB" link="GstEvent.html#GST-EVENT-CUSTOM-DOWNSTREAM-OOB:CAPS"/>
@@ -2586,6 +2657,10 @@
     <keyword type="constant" name="GST_MESSAGE_EXTENDED" link="GstMessage.html#GST-MESSAGE-EXTENDED:CAPS"/>
     <keyword type="constant" name="GST_MESSAGE_DEVICE_ADDED" link="GstMessage.html#GST-MESSAGE-DEVICE-ADDED:CAPS"/>
     <keyword type="constant" name="GST_MESSAGE_DEVICE_REMOVED" link="GstMessage.html#GST-MESSAGE-DEVICE-REMOVED:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_PROPERTY_NOTIFY" link="GstMessage.html#GST-MESSAGE-PROPERTY-NOTIFY:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_STREAM_COLLECTION" link="GstMessage.html#GST-MESSAGE-STREAM-COLLECTION:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_STREAMS_SELECTED" link="GstMessage.html#GST-MESSAGE-STREAMS-SELECTED:CAPS"/>
+    <keyword type="constant" name="GST_MESSAGE_REDIRECT" link="GstMessage.html#GST-MESSAGE-REDIRECT:CAPS"/>
     <keyword type="constant" name="GST_MESSAGE_ANY" link="GstMessage.html#GST-MESSAGE-ANY:CAPS"/>
     <keyword type="constant" name="GST_STRUCTURE_CHANGE_TYPE_PAD_LINK" link="GstMessage.html#GST-STRUCTURE-CHANGE-TYPE-PAD-LINK:CAPS"/>
     <keyword type="constant" name="GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK" link="GstMessage.html#GST-STRUCTURE-CHANGE-TYPE-PAD-UNLINK:CAPS"/>
@@ -2608,11 +2683,13 @@
     <keyword type="constant" name="GST_META_FLAG_LAST" link="gstreamer-GstMeta.html#GST-META-FLAG-LAST:CAPS"/>
     <keyword type="constant" name="GST_MINI_OBJECT_FLAG_LOCKABLE" link="gstreamer-GstMiniObject.html#GST-MINI-OBJECT-FLAG-LOCKABLE:CAPS"/>
     <keyword type="constant" name="GST_MINI_OBJECT_FLAG_LOCK_READONLY" link="gstreamer-GstMiniObject.html#GST-MINI-OBJECT-FLAG-LOCK-READONLY:CAPS"/>
+    <keyword type="constant" name="GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED" link="gstreamer-GstMiniObject.html#GST-MINI-OBJECT-FLAG-MAY-BE-LEAKED:CAPS"/>
     <keyword type="constant" name="GST_MINI_OBJECT_FLAG_LAST" link="gstreamer-GstMiniObject.html#GST-MINI-OBJECT-FLAG-LAST:CAPS"/>
     <keyword type="constant" name="GST_LOCK_FLAG_READ" link="gstreamer-GstMiniObject.html#GST-LOCK-FLAG-READ:CAPS"/>
     <keyword type="constant" name="GST_LOCK_FLAG_WRITE" link="gstreamer-GstMiniObject.html#GST-LOCK-FLAG-WRITE:CAPS"/>
     <keyword type="constant" name="GST_LOCK_FLAG_EXCLUSIVE" link="gstreamer-GstMiniObject.html#GST-LOCK-FLAG-EXCLUSIVE:CAPS"/>
     <keyword type="constant" name="GST_LOCK_FLAG_LAST" link="gstreamer-GstMiniObject.html#GST-LOCK-FLAG-LAST:CAPS"/>
+    <keyword type="constant" name="GST_OBJECT_FLAG_MAY_BE_LEAKED" link="GstObject.html#GST-OBJECT-FLAG-MAY-BE-LEAKED:CAPS"/>
     <keyword type="constant" name="GST_OBJECT_FLAG_LAST" link="GstObject.html#GST-OBJECT-FLAG-LAST:CAPS"/>
     <keyword type="constant" name="GST_PAD_UNKNOWN" link="GstPad.html#GST-PAD-UNKNOWN:CAPS"/>
     <keyword type="constant" name="GST_PAD_SRC" link="GstPad.html#GST-PAD-SRC:CAPS"/>
@@ -2701,6 +2778,7 @@
     <keyword type="constant" name="GST_PARSE_FLAG_NONE" link="gstreamer-GstParse.html#GST-PARSE-FLAG-NONE:CAPS"/>
     <keyword type="constant" name="GST_PARSE_FLAG_FATAL_ERRORS" link="gstreamer-GstParse.html#GST-PARSE-FLAG-FATAL-ERRORS:CAPS"/>
     <keyword type="constant" name="GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS" link="gstreamer-GstParse.html#GST-PARSE-FLAG-NO-SINGLE-ELEMENT-BINS:CAPS"/>
+    <keyword type="constant" name="GST_PARSE_FLAG_PLACE_IN_BIN" link="gstreamer-GstParse.html#GST-PARSE-FLAG-PLACE-IN-BIN:CAPS"/>
     <keyword type="constant" name="GST_PIPELINE_FLAG_FIXED_CLOCK" link="GstPipeline.html#GST-PIPELINE-FLAG-FIXED-CLOCK:CAPS"/>
     <keyword type="constant" name="GST_PIPELINE_FLAG_LAST" link="GstPipeline.html#GST-PIPELINE-FLAG-LAST:CAPS"/>
     <keyword type="constant" name="GST_PLUGIN_ERROR_MODULE" link="GstPlugin.html#GST-PLUGIN-ERROR-MODULE:CAPS"/>
@@ -2753,6 +2831,11 @@
     <keyword type="constant" name="GST_SEGMENT_FLAG_SEGMENT" link="GstSegment.html#GST-SEGMENT-FLAG-SEGMENT:CAPS"/>
     <keyword type="constant" name="GST_SEGMENT_FLAG_TRICKMODE_KEY_UNITS" link="GstSegment.html#GST-SEGMENT-FLAG-TRICKMODE-KEY-UNITS:CAPS"/>
     <keyword type="constant" name="GST_SEGMENT_FLAG_TRICKMODE_NO_AUDIO" link="GstSegment.html#GST-SEGMENT-FLAG-TRICKMODE-NO-AUDIO:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_TYPE_UNKNOWN" link="gstreamer-GstStream.html#GST-STREAM-TYPE-UNKNOWN:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_TYPE_AUDIO" link="gstreamer-GstStream.html#GST-STREAM-TYPE-AUDIO:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_TYPE_VIDEO" link="gstreamer-GstStream.html#GST-STREAM-TYPE-VIDEO:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_TYPE_CONTAINER" link="gstreamer-GstStream.html#GST-STREAM-TYPE-CONTAINER:CAPS"/>
+    <keyword type="constant" name="GST_STREAM_TYPE_TEXT" link="gstreamer-GstStream.html#GST-STREAM-TYPE-TEXT:CAPS"/>
     <keyword type="constant" name="GST_CLOCK_TYPE_REALTIME" link="GstSystemClock.html#GST-CLOCK-TYPE-REALTIME:CAPS"/>
     <keyword type="constant" name="GST_CLOCK_TYPE_MONOTONIC" link="GstSystemClock.html#GST-CLOCK-TYPE-MONOTONIC:CAPS"/>
     <keyword type="constant" name="GST_CLOCK_TYPE_OTHER" link="GstSystemClock.html#GST-CLOCK-TYPE-OTHER:CAPS"/>
@@ -2875,6 +2958,8 @@
     <keyword type="member" name="GstBinClass.add-element" link="GstBin.html#GstBinClass.add-element"/>
     <keyword type="member" name="GstBinClass.remove-element" link="GstBin.html#GstBinClass.remove-element"/>
     <keyword type="member" name="GstBinClass.handle-message" link="GstBin.html#GstBinClass.handle-message"/>
+    <keyword type="member" name="GstBinClass.deep-element-added" link="GstBin.html#GstBinClass.deep-element-added"/>
+    <keyword type="member" name="GstBinClass.deep-element-removed" link="GstBin.html#GstBinClass.deep-element-removed"/>
     <keyword type="member" name="GstBuffer-struct.mini-object" link="GstBuffer.html#GstBuffer-struct.mini-object"/>
     <keyword type="member" name="GstBuffer-struct.pool" link="GstBuffer.html#GstBuffer-struct.pool"/>
     <keyword type="member" name="GstBuffer-struct.pts" link="GstBuffer.html#GstBuffer-struct.pts"/>
@@ -3068,6 +3153,9 @@
     <keyword type="member" name="GstSegment-struct.time" link="GstSegment.html#GstSegment-struct.time"/>
     <keyword type="member" name="GstSegment-struct.position" link="GstSegment.html#GstSegment-struct.position"/>
     <keyword type="member" name="GstSegment-struct.duration" link="GstSegment.html#GstSegment-struct.duration"/>
+    <keyword type="member" name="GstStream.object" link="gstreamer-GstStream.html#GstStream.object"/>
+    <keyword type="member" name="GstStream.stream-id" link="gstreamer-GstStream.html#GstStream.stream-id"/>
+    <keyword type="member" name="GstStreamCollectionClass.stream-notify" link="gstreamer-GstStreamCollection.html#GstStreamCollectionClass.stream-notify"/>
     <keyword type="member" name="GstStructure-struct.type" link="GstStructure.html#GstStructure-struct.type"/>
     <keyword type="member" name="GstTagList-struct.mini-object" link="GstTagList.html#GstTagList-struct.mini-object"/>
     <keyword type="member" name="GstTask-struct.state" link="GstTask.html#GstTask-struct.state"/>
diff --git a/docs/gst/html/gstreamer-GstConfig.html b/docs/gst/html/gstreamer-GstConfig.html
index 709e232..1fd8118 100644
--- a/docs/gst/html/gstreamer-GstConfig.html
+++ b/docs/gst/html/gstreamer-GstConfig.html
@@ -49,14 +49,6 @@
 </tr>
 <tr>
 <td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="gstreamer-GstConfig.html#GST-DISABLE-TRACE:CAPS" title="GST_DISABLE_TRACE">GST_DISABLE_TRACE</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="gstreamer-GstConfig.html#GST-DISABLE-ALLOC-TRACE:CAPS" title="GST_DISABLE_ALLOC_TRACE">GST_DISABLE_ALLOC_TRACE</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
 <td class="function_name"><a class="link" href="gstreamer-GstConfig.html#GST-DISABLE-REGISTRY:CAPS" title="GST_DISABLE_REGISTRY">GST_DISABLE_REGISTRY</a></td>
 </tr>
 <tr>
@@ -125,22 +117,6 @@
 </div>
 <hr>
 <div class="refsect2">
-<a name="GST-DISABLE-TRACE:CAPS"></a><h3>GST_DISABLE_TRACE</h3>
-<pre class="programlisting">#define GST_DISABLE_TRACE 1
-</pre>
-<p>Configures the inclusion of a resource tracing facility
-(seems to be unused)</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GST-DISABLE-ALLOC-TRACE:CAPS"></a><h3>GST_DISABLE_ALLOC_TRACE</h3>
-<pre class="programlisting">#define GST_DISABLE_ALLOC_TRACE 1
-</pre>
-<p>Configures the use of a memory tracer based on the resource tracer
-if TRACE is disabled, ALLOC_TRACE is disabled as well</p>
-</div>
-<hr>
-<div class="refsect2">
 <a name="GST-DISABLE-REGISTRY:CAPS"></a><h3>GST_DISABLE_REGISTRY</h3>
 <pre class="programlisting">#define GST_DISABLE_REGISTRY 1
 </pre>
diff --git a/docs/gst/html/gstreamer-GstDevice.html b/docs/gst/html/gstreamer-GstDevice.html
index 0ccc7a2..f86397c 100644
--- a/docs/gst/html/gstreamer-GstDevice.html
+++ b/docs/gst/html/gstreamer-GstDevice.html
@@ -145,7 +145,7 @@
 <pre class="programlisting"><a class="link" href="GstElement.html" title="GstElement"><span class="returnvalue">GstElement</span></a> *
 gst_device_create_element (<em class="parameter"><code><a class="link" href="gstreamer-GstDevice.html#GstDevice" title="struct GstDevice"><span class="type">GstDevice</span></a> *device</code></em>,
                            <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>);</pre>
-<p>Creates the element with all of the required paramaters set to use
+<p>Creates the element with all of the required parameters set to use
 this device.</p>
 <div class="refsect3">
 <a name="gst-device-create-element.parameters"></a><h4>Parameters</h4>
diff --git a/docs/gst/html/gstreamer-GstDeviceMonitor.html b/docs/gst/html/gstreamer-GstDeviceMonitor.html
index bf3c8bd..e2e88dc 100644
--- a/docs/gst/html/gstreamer-GstDeviceMonitor.html
+++ b/docs/gst/html/gstreamer-GstDeviceMonitor.html
@@ -230,7 +230,9 @@
 43
 44
 45
-46</pre></td>
+46
+47
+48</pre></td>
         <td class="listing_code"><pre class="programlisting"><span class="gtkdoc kwb">static</span> gboolean
 <span class="function">my_bus_func</span> <span class="gtkdoc opt">(</span>GstBus <span class="gtkdoc opt">*</span> bus<span class="gtkdoc opt">,</span> GstMessage <span class="gtkdoc opt">*</span> message<span class="gtkdoc opt">,</span> gpointer user_data<span class="gtkdoc opt">)</span>
 <span class="gtkdoc opt">{</span>
@@ -243,12 +245,14 @@
        name <span class="gtkdoc opt">=</span> <span class="function"><a href="gstreamer-GstDevice.html#gst-device-get-display-name">gst_device_get_display_name</a></span> <span class="gtkdoc opt">(</span>device<span class="gtkdoc opt">);</span>
        <span class="function"><a href="/usr/share/gtk-doc/html/glibglib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="gtkdoc opt">(</span><span class="string">&quot;Device added: %s</span><span class="gtkdoc esc">\n</span><span class="string">&quot;</span><span class="gtkdoc opt">,</span> name<span class="gtkdoc opt">);</span>
        <span class="function"><a href="/usr/share/gtk-doc/html/glibglib-Memory-Allocation.html#g-free">g_free</a></span> <span class="gtkdoc opt">(</span>name<span class="gtkdoc opt">);</span>
+       <span class="function"><a href="GstObject.html#gst-object-unref">gst_object_unref</a></span> <span class="gtkdoc opt">(</span>device<span class="gtkdoc opt">);</span>
        <span class="keyword">break</span><span class="gtkdoc opt">;</span>
      <span class="keyword">case</span> GST_MESSAGE_DEVICE_REMOVED<span class="gtkdoc opt">:</span>
        <span class="function"><a href="GstMessage.html#gst-message-parse-device-removed">gst_message_parse_device_removed</a></span> <span class="gtkdoc opt">(</span>message<span class="gtkdoc opt">, &amp;</span>device<span class="gtkdoc opt">);</span>
        name <span class="gtkdoc opt">=</span> <span class="function"><a href="gstreamer-GstDevice.html#gst-device-get-display-name">gst_device_get_display_name</a></span> <span class="gtkdoc opt">(</span>device<span class="gtkdoc opt">);</span>
        <span class="function"><a href="/usr/share/gtk-doc/html/glibglib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="gtkdoc opt">(</span><span class="string">&quot;Device removed: %s</span><span class="gtkdoc esc">\n</span><span class="string">&quot;</span><span class="gtkdoc opt">,</span> name<span class="gtkdoc opt">);</span>
        <span class="function"><a href="/usr/share/gtk-doc/html/glibglib-Memory-Allocation.html#g-free">g_free</a></span> <span class="gtkdoc opt">(</span>name<span class="gtkdoc opt">);</span>
+       <span class="function"><a href="GstObject.html#gst-object-unref">gst_object_unref</a></span> <span class="gtkdoc opt">(</span>device<span class="gtkdoc opt">);</span>
        <span class="keyword">break</span><span class="gtkdoc opt">;</span>
      <span class="keyword">default</span><span class="gtkdoc opt">:</span>
        <span class="keyword">break</span><span class="gtkdoc opt">;</span>
diff --git a/docs/gst/html/gstreamer-GstInfo.html b/docs/gst/html/gstreamer-GstInfo.html
index fb6694c..1f15cf1 100644
--- a/docs/gst/html/gstreamer-GstInfo.html
+++ b/docs/gst/html/gstreamer-GstInfo.html
@@ -1195,8 +1195,9 @@
 </colgroup>
 <tbody><tr>
 <td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p> the log function to remove. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="The callback is valid only during the call to the method."><span class="acronym">scope call</span></acronym>]</span></td>
+<td class="parameter_description"><p> the log function to remove, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to
+remove the default log function. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="The callback is valid only during the call to the method."><span class="acronym">scope call</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
 </tr></tbody>
 </table></div>
 </div>
@@ -3792,15 +3793,25 @@
 <a name="GST-PTR-FORMAT:CAPS"></a><h3>GST_PTR_FORMAT</h3>
 <pre class="programlisting">#define GST_PTR_FORMAT     "p\aA"
 </pre>
-<p>printf format type used to debug GStreamer types.
-This can only be used on types whose size is &gt;= sizeof(gpointer).</p>
+<p>printf format type used to debug GStreamer types. You can use this in
+combination with GStreamer's debug logging system as well as the functions
+<a class="link" href="gstreamer-GstInfo.html#gst-info-vasprintf" title="gst_info_vasprintf ()"><code class="function">gst_info_vasprintf()</code></a>, <a class="link" href="gstreamer-GstInfo.html#gst-info-strdup-vprintf" title="gst_info_strdup_vprintf ()"><code class="function">gst_info_strdup_vprintf()</code></a> and <a class="link" href="gstreamer-GstInfo.html#gst-info-strdup-printf" title="gst_info_strdup_printf ()"><code class="function">gst_info_strdup_printf()</code></a>
+to pretty-print the following types: <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a>, <a class="link" href="GstStructure.html" title="GstStructure"><span class="type">GstStructure</span></a>,
+<a class="link" href="GstCapsFeatures.html" title="GstCapsFeatures"><span class="type">GstCapsFeatures</span></a>, <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a>, <a class="link" href="GstDateTime.html" title="GstDateTime"><span class="type">GstDateTime</span></a>, <a class="link" href="GstBuffer.html" title="GstBuffer"><span class="type">GstBuffer</span></a>, <a class="link" href="GstBufferList.html" title="GstBufferList"><span class="type">GstBufferList</span></a>,
+<a class="link" href="GstMessage.html" title="GstMessage"><span class="type">GstMessage</span></a>, <a class="link" href="GstEvent.html" title="GstEvent"><span class="type">GstEvent</span></a>, <a class="link" href="GstQuery.html" title="GstQuery"><span class="type">GstQuery</span></a>, <a class="link" href="GstContext.html" title="GstContext"><span class="type">GstContext</span></a>, <a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a>, <a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a>. All
+<a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> types will be printed as typename plus pointer, and everything
+else will simply be printed as pointer address.</p>
+<p>This can only be used on types whose size is &gt;= sizeof(gpointer).</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="GST-SEGMENT-FORMAT:CAPS"></a><h3>GST_SEGMENT_FORMAT</h3>
 <pre class="programlisting">#define GST_SEGMENT_FORMAT "p\aB"
 </pre>
-<p>printf format type used to debug GStreamer segments.
+<p>printf format type used to debug GStreamer segments. You can use this in
+combination with GStreamer's debug logging system as well as the functions
+<a class="link" href="gstreamer-GstInfo.html#gst-info-vasprintf" title="gst_info_vasprintf ()"><code class="function">gst_info_vasprintf()</code></a>, <a class="link" href="gstreamer-GstInfo.html#gst-info-strdup-vprintf" title="gst_info_strdup_vprintf ()"><code class="function">gst_info_strdup_vprintf()</code></a> and <a class="link" href="gstreamer-GstInfo.html#gst-info-strdup-printf" title="gst_info_strdup_printf ()"><code class="function">gst_info_strdup_printf()</code></a>
+to pretty-print <a class="link" href="GstSegment.html" title="GstSegment"><span class="type">GstSegment</span></a> structures.
 This can only be used on pointers to GstSegment structures.</p>
 </div>
 </div>
diff --git a/docs/gst/html/gstreamer-GstMiniObject.html b/docs/gst/html/gstreamer-GstMiniObject.html
index e5170c1..34999bc 100644
--- a/docs/gst/html/gstreamer-GstMiniObject.html
+++ b/docs/gst/html/gstreamer-GstMiniObject.html
@@ -1360,6 +1360,15 @@
 <td class="enum_member_annotations"> </td>
 </tr>
 <tr>
+<td class="enum_member_name"><p><a name="GST-MINI-OBJECT-FLAG-MAY-BE-LEAKED:CAPS"></a>GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED</p></td>
+<td class="enum_member_description">
+<p>the object is expected to stay alive
+even after <a class="link" href="gstreamer-Gst.html#gst-deinit" title="gst_deinit ()"><code class="function">gst_deinit()</code></a> has been called and so should be ignored by leak
+detection tools. (Since 1.10)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
 <td class="enum_member_name"><p><a name="GST-MINI-OBJECT-FLAG-LAST:CAPS"></a>GST_MINI_OBJECT_FLAG_LAST</p></td>
 <td class="enum_member_description">
 <p>first flag that can be used by subclasses.</p>
diff --git a/docs/gst/html/gstreamer-GstParse.html b/docs/gst/html/gstreamer-GstParse.html
index a099992..a4d7080 100644
--- a/docs/gst/html/gstreamer-GstParse.html
+++ b/docs/gst/html/gstreamer-GstParse.html
@@ -274,7 +274,9 @@
 <p> a new element on success, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on failure. If
 more than one toplevel element is specified by the <em class="parameter"><code>pipeline_description</code></em>
 ,
-all elements are put into a <a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a>, which then is returned. </p>
+all elements are put into a <a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a>, which then is returned (unless
+the GST_PARSE_FLAG_PLACE_IN_BIN flag is set, in which case they are put
+in a <a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a> instead). </p>
 <p><span class="annotation">[<acronym title="Alias for transfer none, used for objects with floating refs."><span class="acronym">transfer floating</span></acronym>]</span></p>
 </div>
 </div>
@@ -683,6 +685,15 @@
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-PARSE-FLAG-PLACE-IN-BIN:CAPS"></a>GST_PARSE_FLAG_PLACE_IN_BIN</p></td>
+<td class="enum_member_description">
+<p>If more than one toplevel element is described
+    by the pipeline description string, put them in a <a class="link" href="GstBin.html" title="GstBin"><span class="type">GstBin</span></a> instead of a
+    <a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a>. (Since 1.10)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
diff --git a/docs/gst/html/gstreamer-GstPoll.html b/docs/gst/html/gstreamer-GstPoll.html
index 5b7ba83..a2a08db 100644
--- a/docs/gst/html/gstreamer-GstPoll.html
+++ b/docs/gst/html/gstreamer-GstPoll.html
@@ -731,6 +731,8 @@
 .</p>
 <p>If <em class="parameter"><code>set</code></em>
  is not controllable, then this call will have no effect.</p>
+<p>This function only works for non-timer <a class="link" href="gstreamer-GstPoll.html#GstPoll" title="GstPoll"><span class="type">GstPoll</span></a> objects created with
+<a class="link" href="gstreamer-GstPoll.html#gst-poll-new" title="gst_poll_new ()"><code class="function">gst_poll_new()</code></a>.</p>
 <div class="refsect3">
 <a name="gst-poll-restart.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -757,6 +759,8 @@
  is <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, this function ensures that future calls to
 <a class="link" href="gstreamer-GstPoll.html#gst-poll-wait" title="gst_poll_wait ()"><code class="function">gst_poll_wait()</code></a> will be affected by <a class="link" href="gstreamer-GstPoll.html#gst-poll-restart" title="gst_poll_restart ()"><code class="function">gst_poll_restart()</code></a> and
 <a class="link" href="gstreamer-GstPoll.html#gst-poll-set-flushing" title="gst_poll_set_flushing ()"><code class="function">gst_poll_set_flushing()</code></a>.</p>
+<p>This function only works for non-timer <a class="link" href="gstreamer-GstPoll.html#GstPoll" title="GstPoll"><span class="type">GstPoll</span></a> objects created with
+<a class="link" href="gstreamer-GstPoll.html#gst-poll-new" title="gst_poll_new ()"><code class="function">gst_poll_new()</code></a>.</p>
 <div class="refsect3">
 <a name="gst-poll-set-controllable.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -796,6 +800,8 @@
 to <a class="link" href="gstreamer-GstPoll.html#gst-poll-wait" title="gst_poll_wait ()"><code class="function">gst_poll_wait()</code></a> will return -1, with errno set to EBUSY.</p>
 <p>Unsetting the flushing state will restore normal operation of <em class="parameter"><code>set</code></em>
 .</p>
+<p>This function only works for non-timer <a class="link" href="gstreamer-GstPoll.html#GstPoll" title="GstPoll"><span class="type">GstPoll</span></a> objects created with
+<a class="link" href="gstreamer-GstPoll.html#gst-poll-new" title="gst_poll_new ()"><code class="function">gst_poll_new()</code></a>.</p>
 <div class="refsect3">
 <a name="gst-poll-set-flushing.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -872,8 +878,8 @@
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
 gst_poll_read_control (<em class="parameter"><code><a class="link" href="gstreamer-GstPoll.html#GstPoll" title="GstPoll"><span class="type">GstPoll</span></a> *set</code></em>);</pre>
 <p>Read a byte from the control socket of the controllable <em class="parameter"><code>set</code></em>
-.
-This function is mostly useful for timer <a class="link" href="gstreamer-GstPoll.html#GstPoll" title="GstPoll"><span class="type">GstPoll</span></a> objects created with
+.</p>
+<p>This function only works for timer <a class="link" href="gstreamer-GstPoll.html#GstPoll" title="GstPoll"><span class="type">GstPoll</span></a> objects created with
 <a class="link" href="gstreamer-GstPoll.html#gst-poll-new-timer" title="gst_poll_new_timer ()"><code class="function">gst_poll_new_timer()</code></a>.</p>
 <div class="refsect3">
 <a name="gst-poll-read-control.parameters"></a><h4>Parameters</h4>
@@ -892,9 +898,10 @@
 </div>
 <div class="refsect3">
 <a name="gst-poll-read-control.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success. <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when <em class="parameter"><code>set</code></em>
-is not controllable or when there
-was no byte to read.</p>
+<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success. <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when when there was no byte to read or
+reading the byte failed. If there was no byte to read, and only then, errno
+will contain EWOULDBLOCK or EAGAIN. For all other values of errno this always signals a
+critical error.</p>
 </div>
 </div>
 <hr>
@@ -910,6 +917,8 @@
 1, meaning the control socket is set. After an equal amount of calls to
 <a class="link" href="gstreamer-GstPoll.html#gst-poll-read-control" title="gst_poll_read_control ()"><code class="function">gst_poll_read_control()</code></a> have been performed, calls to <a class="link" href="gstreamer-GstPoll.html#gst-poll-wait" title="gst_poll_wait ()"><code class="function">gst_poll_wait()</code></a> will
 block again until their timeout expired.</p>
+<p>This function only works for timer <a class="link" href="gstreamer-GstPoll.html#GstPoll" title="GstPoll"><span class="type">GstPoll</span></a> objects created with
+<a class="link" href="gstreamer-GstPoll.html#gst-poll-new-timer" title="gst_poll_new_timer ()"><code class="function">gst_poll_new_timer()</code></a>.</p>
 <div class="refsect3">
 <a name="gst-poll-write-control.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -927,9 +936,9 @@
 </div>
 <div class="refsect3">
 <a name="gst-poll-write-control.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success. <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when <em class="parameter"><code>set</code></em>
-is not controllable or when the
-byte could not be written.</p>
+<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> on success. <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> when when the byte could not be written.
+errno contains the detailed error code but will never be EAGAIN, EINTR or
+EWOULDBLOCK. <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> always signals a critical error.</p>
 </div>
 </div>
 </div>
diff --git a/docs/gst/html/gstreamer-GstStream.html b/docs/gst/html/gstreamer-GstStream.html
new file mode 100644
index 0000000..7aa66a9
--- /dev/null
+++ b/docs/gst/html/gstreamer-GstStream.html
@@ -0,0 +1,653 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GstStream: GStreamer 1.0 Core Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="up" href="libgstreamer.html" title="GStreamer Core Library">
+<link rel="prev" href="GstSegment.html" title="GstSegment">
+<link rel="next" href="gstreamer-GstStreamCollection.html" title="GstStreamCollection">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gstreamer-GstStream.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="libgstreamer.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="GstSegment.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gstreamer-GstStreamCollection.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gstreamer-GstStream"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gstreamer-GstStream.top_of_page"></a>GstStream</span></h2>
+<p>GstStream — Base class for stream objects</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gstreamer-GstStream.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="returnvalue">GstStream</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStream.html#gst-stream-new" title="gst_stream_new ()">gst_stream_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstCaps.html" title="GstCaps"><span class="returnvalue">GstCaps</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStream.html#gst-stream-get-caps" title="gst_stream_get_caps ()">gst_stream_get_caps</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstEvent.html#GstStreamFlags" title="enum GstStreamFlags"><span class="returnvalue">GstStreamFlags</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStream.html#gst-stream-get-stream-flags" title="gst_stream_get_stream_flags ()">gst_stream_get_stream_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStream.html#gst-stream-get-stream-id" title="gst_stream_get_stream_id ()">gst_stream_get_stream_id</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-GstStream.html#GstStreamType" title="enum GstStreamType"><span class="returnvalue">GstStreamType</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStream.html#gst-stream-get-stream-type" title="gst_stream_get_stream_type ()">gst_stream_get_stream_type</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="GstTagList.html" title="GstTagList"><span class="returnvalue">GstTagList</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStream.html#gst-stream-get-tags" title="gst_stream_get_tags ()">gst_stream_get_tags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStream.html#gst-stream-set-caps" title="gst_stream_set_caps ()">gst_stream_set_caps</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStream.html#gst-stream-set-stream-flags" title="gst_stream_set_stream_flags ()">gst_stream_set_stream_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStream.html#gst-stream-set-stream-type" title="gst_stream_set_stream_type ()">gst_stream_set_stream_type</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStream.html#gst-stream-set-tags" title="gst_stream_set_tags ()">gst_stream_set_tags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStream.html#gst-stream-type-get-name" title="gst_stream_type_get_name ()">gst_stream_type_get_name</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstStream.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream">GstStream</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gstreamer-GstStream.html#GstStreamClass" title="struct GstStreamClass">GstStreamClass</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gstreamer-GstStream.html#GstStreamType" title="enum GstStreamType">GstStreamType</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstStream.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;gst/gst.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstStream.description"></a><h2>Description</h2>
+<p>A <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> is a high-level object defining a stream of data which is, or
+can be, present in a <a class="link" href="GstPipeline.html" title="GstPipeline"><span class="type">GstPipeline</span></a>.</p>
+<p>It is defined by a unique identifier, a "Stream ID". A <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> does not
+automatically imply the stream is present within a pipeline or element.</p>
+<p>Any element that can introduce new streams in a pipeline should create the
+appropriate <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> object, and can convey that object via the
+<a class="link" href="GstEvent.html#GST-EVENT-STREAM-START:CAPS"><code class="literal">GST_EVENT_STREAM_START</code></a> event and/or the <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a>.</p>
+<p>Elements that do not modify the nature of the stream can add extra information
+on it (such as enrich the <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a>, or <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a>). This is typically done
+by parsing elements.</p>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstStream.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="gst-stream-new"></a><h3>gst_stream_new ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="returnvalue">GstStream</span></a> *
+gst_stream_new (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *stream_id</code></em>,
+                <em class="parameter"><code><a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> *caps</code></em>,
+                <em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStreamType" title="enum GstStreamType"><span class="type">GstStreamType</span></a> type</code></em>,
+                <em class="parameter"><code><a class="link" href="GstEvent.html#GstStreamFlags" title="enum GstStreamFlags"><span class="type">GstStreamFlags</span></a> flags</code></em>);</pre>
+<p>Create a new <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> for the given <em class="parameter"><code>stream_id</code></em>
+, <em class="parameter"><code>caps</code></em>
+, <em class="parameter"><code>type</code></em>
+
+and <em class="parameter"><code>flags</code></em>
+</p>
+<div class="refsect3">
+<a name="gst-stream-new.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>stream_id</p></td>
+<td class="parameter_description"><p> the id for the new stream. If <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>,
+a new one will be automatically generated. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>caps</p></td>
+<td class="parameter_description"><p> the <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> of the stream. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+</tr>
+<tr>
+<td class="parameter_name"><p>type</p></td>
+<td class="parameter_description"><p>the <a class="link" href="gstreamer-GstStream.html#GstStreamType" title="enum GstStreamType"><span class="type">GstStreamType</span></a> of the stream</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>flags</p></td>
+<td class="parameter_description"><p>the <a class="link" href="GstEvent.html#GstStreamFlags" title="enum GstStreamFlags"><span class="type">GstStreamFlags</span></a> of the stream</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-stream-new.returns"></a><h4>Returns</h4>
+<p> The new <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-get-caps"></a><h3>gst_stream_get_caps ()</h3>
+<pre class="programlisting"><a class="link" href="GstCaps.html" title="GstCaps"><span class="returnvalue">GstCaps</span></a> *
+gst_stream_get_caps (<em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> *stream</code></em>);</pre>
+<p>Retrieve the caps for <em class="parameter"><code>stream</code></em>
+, if any</p>
+<div class="refsect3">
+<a name="gst-stream-get-caps.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>stream</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-stream-get-caps.returns"></a><h4>Returns</h4>
+<p> The <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> for <em class="parameter"><code>stream</code></em>
+. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-get-stream-flags"></a><h3>gst_stream_get_stream_flags ()</h3>
+<pre class="programlisting"><a class="link" href="GstEvent.html#GstStreamFlags" title="enum GstStreamFlags"><span class="returnvalue">GstStreamFlags</span></a>
+gst_stream_get_stream_flags (<em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> *stream</code></em>);</pre>
+<p>Retrieve the current stream flags for <em class="parameter"><code>stream</code></em>
+</p>
+<div class="refsect3">
+<a name="gst-stream-get-stream-flags.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>stream</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-stream-get-stream-flags.returns"></a><h4>Returns</h4>
+<p> The <a class="link" href="GstEvent.html#GstStreamFlags" title="enum GstStreamFlags"><span class="type">GstStreamFlags</span></a> for <em class="parameter"><code>stream</code></em>
+</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-get-stream-id"></a><h3>gst_stream_get_stream_id ()</h3>
+<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_stream_get_stream_id (<em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> *stream</code></em>);</pre>
+<p>Returns the stream ID of <em class="parameter"><code>stream</code></em>
+.</p>
+<div class="refsect3">
+<a name="gst-stream-get-stream-id.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>stream</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-stream-get-stream-id.returns"></a><h4>Returns</h4>
+<p> the stream ID of <em class="parameter"><code>stream</code></em>
+. Only valid
+during the lifetime of <em class="parameter"><code>stream</code></em>
+. </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="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-get-stream-type"></a><h3>gst_stream_get_stream_type ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstStream.html#GstStreamType" title="enum GstStreamType"><span class="returnvalue">GstStreamType</span></a>
+gst_stream_get_stream_type (<em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> *stream</code></em>);</pre>
+<p>Retrieve the stream type for <em class="parameter"><code>stream</code></em>
+</p>
+<div class="refsect3">
+<a name="gst-stream-get-stream-type.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>stream</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-stream-get-stream-type.returns"></a><h4>Returns</h4>
+<p> The <a class="link" href="gstreamer-GstStream.html#GstStreamType" title="enum GstStreamType"><span class="type">GstStreamType</span></a> for <em class="parameter"><code>stream</code></em>
+</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-get-tags"></a><h3>gst_stream_get_tags ()</h3>
+<pre class="programlisting"><a class="link" href="GstTagList.html" title="GstTagList"><span class="returnvalue">GstTagList</span></a> *
+gst_stream_get_tags (<em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> *stream</code></em>);</pre>
+<p>Retrieve the tags for <em class="parameter"><code>stream</code></em>
+, if any</p>
+<div class="refsect3">
+<a name="gst-stream-get-tags.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>stream</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-stream-get-tags.returns"></a><h4>Returns</h4>
+<p> The <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> for <em class="parameter"><code>stream</code></em>
+. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-set-caps"></a><h3>gst_stream_set_caps ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_stream_set_caps (<em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> *stream</code></em>,
+                     <em class="parameter"><code><a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a> *caps</code></em>);</pre>
+<p>Set the caps for the <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p>
+<div class="refsect3">
+<a name="gst-stream-set-caps.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>stream</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>caps</p></td>
+<td class="parameter_description"><p> a <a class="link" href="GstCaps.html" title="GstCaps"><span class="type">GstCaps</span></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-set-stream-flags"></a><h3>gst_stream_set_stream_flags ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_stream_set_stream_flags (<em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> *stream</code></em>,
+                             <em class="parameter"><code><a class="link" href="GstEvent.html#GstStreamFlags" title="enum GstStreamFlags"><span class="type">GstStreamFlags</span></a> flags</code></em>);</pre>
+<p>Set the <em class="parameter"><code>flags</code></em>
+ for the <em class="parameter"><code>stream</code></em>
+.</p>
+<div class="refsect3">
+<a name="gst-stream-set-stream-flags.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>stream</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>flags</p></td>
+<td class="parameter_description"><p>the flags to set on <em class="parameter"><code>stream</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-set-stream-type"></a><h3>gst_stream_set_stream_type ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_stream_set_stream_type (<em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> *stream</code></em>,
+                            <em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStreamType" title="enum GstStreamType"><span class="type">GstStreamType</span></a> stream_type</code></em>);</pre>
+<p>Set the stream type of <em class="parameter"><code>stream</code></em>
+</p>
+<div class="refsect3">
+<a name="gst-stream-set-stream-type.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>stream</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>stream_type</p></td>
+<td class="parameter_description"><p>the type to set on <em class="parameter"><code>stream</code></em>
+</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-set-tags"></a><h3>gst_stream_set_tags ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_stream_set_tags (<em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> *stream</code></em>,
+                     <em class="parameter"><code><a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a> *tags</code></em>);</pre>
+<p>Set the tags for the <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p>
+<div class="refsect3">
+<a name="gst-stream-set-tags.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>stream</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>tags</p></td>
+<td class="parameter_description"><p> a <a class="link" href="GstTagList.html" title="GstTagList"><span class="type">GstTagList</span></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-type-get-name"></a><h3>gst_stream_type_get_name ()</h3>
+<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_stream_type_get_name (<em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStreamType" title="enum GstStreamType"><span class="type">GstStreamType</span></a> stype</code></em>);</pre>
+<p>Get a descriptive string for a given <a class="link" href="gstreamer-GstStream.html#GstStreamType" title="enum GstStreamType"><span class="type">GstStreamType</span></a></p>
+<div class="refsect3">
+<a name="gst-stream-type-get-name.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>stype</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStream.html#GstStreamType" title="enum GstStreamType"><span class="type">GstStreamType</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-stream-type-get-name.returns"></a><h4>Returns</h4>
+<p> A string describing the stream type</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstStream.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstStream"></a><h3>struct GstStream</h3>
+<pre class="programlisting">struct GstStream {
+  GstObject object;
+
+  const gchar *stream_id;
+};
+</pre>
+<p>A high-level object representing a single stream. It might be backed, or
+not, by an actual flow of data in a pipeline (<a class="link" href="GstPad.html" title="GstPad"><span class="type">GstPad</span></a>).</p>
+<p>A <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> does not care about data changes (such as decoding, encoding,
+parsing,...) as long as the underlying data flow corresponds to the same
+high-level flow (ex: a certain audio track).</p>
+<p>A <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> contains all the information pertinent to a stream, such as
+stream-id, tags, caps, type, ...</p>
+<p>Elements can subclass a <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> for internal usage (to contain information
+pertinent to streams of data).</p>
+<div class="refsect3">
+<a name="GstStream.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="struct_members_name">
+<col class="struct_members_description">
+<col width="200px" class="struct_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="struct_member_name"><p><a class="link" href="GstObject.html" title="GstObject"><span class="type">GstObject</span></a> <em class="structfield"><code><a name="GstStream.object"></a>object</code></em>;</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="struct_member_name"><p>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstStream.stream-id"></a>stream_id</code></em>;</p></td>
+<td class="struct_member_description"><p>The Stream Identifier for this <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p></td>
+<td class="struct_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstStreamClass"></a><h3>struct GstStreamClass</h3>
+<pre class="programlisting">struct GstStreamClass {
+  GstObjectClass parent_class;
+};
+</pre>
+<p>GstStream class structure</p>
+<div class="refsect3">
+<a name="GstStreamClass.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="struct_members_name">
+<col class="struct_members_description">
+<col width="200px" class="struct_members_annotations">
+</colgroup>
+<tbody></tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstStreamType"></a><h3>enum GstStreamType</h3>
+<p><a class="link" href="gstreamer-GstStream.html#GstStreamType" title="enum GstStreamType"><span class="type">GstStreamType</span></a> describes a high level classification set for
+flows of data in <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> objects.</p>
+<div class="refsect3">
+<a name="GstStreamType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-STREAM-TYPE-UNKNOWN:CAPS"></a>GST_STREAM_TYPE_UNKNOWN</p></td>
+<td class="enum_member_description">
+<p>The stream is of unknown (unclassified) type.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-STREAM-TYPE-AUDIO:CAPS"></a>GST_STREAM_TYPE_AUDIO</p></td>
+<td class="enum_member_description">
+<p>The stream is of audio data</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-STREAM-TYPE-VIDEO:CAPS"></a>GST_STREAM_TYPE_VIDEO</p></td>
+<td class="enum_member_description">
+<p>The stream carries video data</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-STREAM-TYPE-CONTAINER:CAPS"></a>GST_STREAM_TYPE_CONTAINER</p></td>
+<td class="enum_member_description">
+<p>The stream is a muxed container type</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-STREAM-TYPE-TEXT:CAPS"></a>GST_STREAM_TYPE_TEXT</p></td>
+<td class="enum_member_description">
+<p>The stream contains subtitle / subpicture data.</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstStreamCollection.html b/docs/gst/html/gstreamer-GstStreamCollection.html
new file mode 100644
index 0000000..2c515d7
--- /dev/null
+++ b/docs/gst/html/gstreamer-GstStreamCollection.html
@@ -0,0 +1,327 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>GstStreamCollection: GStreamer 1.0 Core Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer 1.0 Core Reference Manual">
+<link rel="up" href="libgstreamer.html" title="GStreamer Core Library">
+<link rel="prev" href="gstreamer-GstStream.html" title="GstStream">
+<link rel="next" href="GstStructure.html" title="GstStructure">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
+                  <a href="#gstreamer-GstStreamCollection.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="libgstreamer.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gstreamer-GstStream.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="GstStructure.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gstreamer-GstStreamCollection"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gstreamer-GstStreamCollection.top_of_page"></a>GstStreamCollection</span></h2>
+<p>GstStreamCollection — Base class for collection of streams</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gstreamer-GstStreamCollection.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="returnvalue">GstStreamCollection</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStreamCollection.html#gst-stream-collection-new" title="gst_stream_collection_new ()">gst_stream_collection_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStreamCollection.html#gst-stream-collection-add-stream" title="gst_stream_collection_add_stream ()">gst_stream_collection_add_stream</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStreamCollection.html#gst-stream-collection-get-upstream-id" title="gst_stream_collection_get_upstream_id ()">gst_stream_collection_get_upstream_id</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStreamCollection.html#gst-stream-collection-get-size" title="gst_stream_collection_get_size ()">gst_stream_collection_get_size</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="returnvalue">GstStream</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gstreamer-GstStreamCollection.html#gst-stream-collection-get-stream" title="gst_stream_collection_get_stream ()">gst_stream_collection_get_stream</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstStreamCollection.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection">GstStreamCollection</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollectionClass" title="struct GstStreamCollectionClass">GstStreamCollectionClass</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstStreamCollection.includes"></a><h2>Includes</h2>
+<pre class="synopsis">#include &lt;gst/gst.h&gt;
+</pre>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstStreamCollection.description"></a><h2>Description</h2>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstStreamCollection.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="gst-stream-collection-new"></a><h3>gst_stream_collection_new ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="returnvalue">GstStreamCollection</span></a> *
+gst_stream_collection_new (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *upstream_id</code></em>);</pre>
+<p>Create a new <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a>.</p>
+<div class="refsect3">
+<a name="gst-stream-collection-new.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>upstream_id</p></td>
+<td class="parameter_description"><p> The stream id of the parent stream. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-stream-collection-new.returns"></a><h4>Returns</h4>
+<p> The new <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a>.</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-collection-add-stream"></a><h3>gst_stream_collection_add_stream ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_stream_collection_add_stream (<em class="parameter"><code><a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> *collection</code></em>,
+                                  <em class="parameter"><code><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> *stream</code></em>);</pre>
+<p>Add the given <em class="parameter"><code>stream</code></em>
+ to the <em class="parameter"><code>collection</code></em>
+.</p>
+<div class="refsect3">
+<a name="gst-stream-collection-add-stream.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>collection</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>stream</p></td>
+<td class="parameter_description"><p> the <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> to add. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-stream-collection-add-stream.returns"></a><h4>Returns</h4>
+<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the <em class="parameter"><code>stream</code></em>
+was properly added, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-collection-get-upstream-id"></a><h3>gst_stream_collection_get_upstream_id ()</h3>
+<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_stream_collection_get_upstream_id (<em class="parameter"><code><a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> *collection</code></em>);</pre>
+<p>Returns the upstream id of the <em class="parameter"><code>collection</code></em>
+.</p>
+<div class="refsect3">
+<a name="gst-stream-collection-get-upstream-id.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>collection</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-stream-collection-get-upstream-id.returns"></a><h4>Returns</h4>
+<p> The upstream id. </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>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-collection-get-size"></a><h3>gst_stream_collection_get_size ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_stream_collection_get_size (<em class="parameter"><code><a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> *collection</code></em>);</pre>
+<p>Get the number of streams this collection contains</p>
+<div class="refsect3">
+<a name="gst-stream-collection-get-size.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>collection</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-stream-collection-get-size.returns"></a><h4>Returns</h4>
+<p> The number of streams that <em class="parameter"><code>collection</code></em>
+contains</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-stream-collection-get-stream"></a><h3>gst_stream_collection_get_stream ()</h3>
+<pre class="programlisting"><a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="returnvalue">GstStream</span></a> *
+gst_stream_collection_get_stream (<em class="parameter"><code><a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> *collection</code></em>,
+                                  <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> index</code></em>);</pre>
+<p>Retrieve the <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> with index <em class="parameter"><code>index</code></em>
+ from the collection.</p>
+<p>The caller should not modify the returned <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a></p>
+<div class="refsect3">
+<a name="gst-stream-collection-get-stream.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>collection</p></td>
+<td class="parameter_description"><p>a <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>index</p></td>
+<td class="parameter_description"><p>Index of the stream to retrieve</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-stream-collection-get-stream.returns"></a><h4>Returns</h4>
+<p> A <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</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>]</span></p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gstreamer-GstStreamCollection.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstStreamCollection"></a><h3>struct GstStreamCollection</h3>
+<pre class="programlisting">struct GstStreamCollection {
+  GstObject object;
+};
+</pre>
+<p>A collection of <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> that are available.</p>
+<p>A <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> will be provided by elements that can make those
+streams available. Applications can use the collection to show the user
+what streams are available by using <a class="link" href="gstreamer-GstStreamCollection.html#gst-stream-collection-get-stream" title="gst_stream_collection_get_stream ()"><code class="literal">gst_stream_collection_get_stream</code></a>()</p>
+<p>Once posted, a <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> is immutable. Updates are made by sending
+a new <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a> message, which may or may not share some of
+the <a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream"><span class="type">GstStream</span></a> objects from the collection it replaces. The receiver can check
+the sender of a stream collection message to know which collection is
+obsoleted.</p>
+<p>Several elements in a pipeline can provide <a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection"><span class="type">GstStreamCollection</span></a>.</p>
+<p>Applications can activate streams from a collection by using the
+<a class="link" href="GstEvent.html#GST-EVENT-SELECT-STREAMS:CAPS"><span class="type">GST_EVENT_SELECT_STREAMS</span></a> event on a pipeline, bin or element.</p>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstStreamCollectionClass"></a><h3>struct GstStreamCollectionClass</h3>
+<pre class="programlisting">struct GstStreamCollectionClass {
+  GstObjectClass parent_class;
+
+  /* signals */
+  void  (*stream_notify)      (GstStreamCollection *collection, GstStream *stream, GParamSpec * pspec);
+};
+</pre>
+<p>GstStreamCollection class structure</p>
+<div class="refsect3">
+<a name="GstStreamCollectionClass.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="struct_members_name">
+<col class="struct_members_description">
+<col width="200px" class="struct_members_annotations">
+</colgroup>
+<tbody><tr>
+<td class="struct_member_name"><p><em class="structfield"><code><a name="GstStreamCollectionClass.stream-notify"></a>stream_notify</code></em> ()</p></td>
+<td class="struct_member_description"><p>default signal handler for the stream-notify signal</p></td>
+<td class="struct_member_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/gst/html/gstreamer-GstVersion.html b/docs/gst/html/gstreamer-GstVersion.html
index 4866e27..1de00c2 100644
--- a/docs/gst/html/gstreamer-GstVersion.html
+++ b/docs/gst/html/gstreamer-GstVersion.html
@@ -136,14 +136,14 @@
 <hr>
 <div class="refsect2">
 <a name="GST-VERSION-MINOR:CAPS"></a><h3>GST_VERSION_MINOR</h3>
-<pre class="programlisting">#define GST_VERSION_MINOR (8)
+<pre class="programlisting">#define GST_VERSION_MINOR (9)
 </pre>
 <p>The minor version of GStreamer at compile time:</p>
 </div>
 <hr>
 <div class="refsect2">
 <a name="GST-VERSION-MICRO:CAPS"></a><h3>GST_VERSION_MICRO</h3>
-<pre class="programlisting">#define GST_VERSION_MICRO (3)
+<pre class="programlisting">#define GST_VERSION_MICRO (90)
 </pre>
 <p>The micro version of GStreamer at compile time:</p>
 </div>
diff --git a/docs/gst/html/gstreamer-hierarchy.html b/docs/gst/html/gstreamer-hierarchy.html
index fd2c829..b4701a4 100644
--- a/docs/gst/html/gstreamer-hierarchy.html
+++ b/docs/gst/html/gstreamer-hierarchy.html
@@ -70,10 +70,10 @@
     <span class="lineart">├──</span> <a class="link" href="GstContext.html" title="GstContext">GstContext</a>
     <span class="lineart">├──</span> <a class="link" href="GstDateTime.html" title="GstDateTime">GstDateTime</a>
     <span class="lineart">├──</span> <a class="link" href="GstTagList.html" title="GstTagList">GstTagList</a>
-    <span class="lineart">├──</span> <a class="link" href="GstToc.html" title="GstToc">GstToc</a>
-    <span class="lineart">├──</span> <a class="link" href="GstToc.html#GstTocEntry">GstTocEntry</a>
     <span class="lineart">├──</span> <a class="link" href="GstSegment.html" title="GstSegment">GstSegment</a>
     <span class="lineart">├──</span> <a class="link" href="GstAllocator.html#GstAllocationParams">GstAllocationParams</a>
+    <span class="lineart">├──</span> <a class="link" href="GstToc.html" title="GstToc">GstToc</a>
+    <span class="lineart">├──</span> <a class="link" href="GstToc.html#GstTocEntry">GstTocEntry</a>
     <span class="lineart">╰──</span> <a class="link" href="gstreamer-GstParse.html#GstParseContext">GstParseContext</a>
 </pre>
 </div>
diff --git a/docs/gst/html/index.html b/docs/gst/html/index.html
index 3dfcd25..51d801c 100644
--- a/docs/gst/html/index.html
+++ b/docs/gst/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer 1.0 Core Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Core 1.0 (1.8.3)
+      for GStreamer Core 1.0 (1.9.90)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/</a>.
     </p></div>
@@ -178,6 +178,12 @@
                     in a media file.</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-GstStream.html">GstStream</a></span><span class="refpurpose"> — Base class for stream objects</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gstreamer-GstStreamCollection.html">GstStreamCollection</a></span><span class="refpurpose"> — Base class for collection of streams</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="GstStructure.html">GstStructure</a></span><span class="refpurpose"> — Generic structure containing fields of names and values</span>
 </dt>
 <dt>
diff --git a/docs/gst/html/ix01.html b/docs/gst/html/ix01.html
index 264a04c..3006378 100644
--- a/docs/gst/html/ix01.html
+++ b/docs/gst/html/ix01.html
@@ -151,6 +151,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBin.html#GstBin-deep-element-added" title="The “deep-element-added” signal">GstBin::deep-element-added</a>, object signal in <a class="link" href="GstBin.html" title="GstBin">GstBin</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstBin.html#GstBin-deep-element-removed" title="The “deep-element-removed” signal">GstBin::deep-element-removed</a>, object signal in <a class="link" href="GstBin.html" title="GstBin">GstBin</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstBin.html#GstBin-do-latency" title="The “do-latency” signal">GstBin::do-latency</a>, object signal in <a class="link" href="GstBin.html" title="GstBin">GstBin</a>
 </dt>
 <dd></dd>
@@ -415,6 +423,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBuffer.html#gst-buffer-get-flags" title="gst_buffer_get_flags ()">gst_buffer_get_flags</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstBuffer.html#gst-buffer-get-max-memory" title="gst_buffer_get_max_memory ()">gst_buffer_get_max_memory</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
 </dt>
 <dd></dd>
@@ -451,6 +463,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBuffer.html#gst-buffer-has-flags" title="gst_buffer_has_flags ()">gst_buffer_has_flags</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstBuffer.html#gst-buffer-insert-memory" title="gst_buffer_insert_memory ()">gst_buffer_insert_memory</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
 </dt>
 <dd></dd>
@@ -731,6 +747,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBuffer.html#gst-buffer-set-flags" title="gst_buffer_set_flags ()">gst_buffer_set_flags</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstBuffer.html#gst-buffer-set-size" title="gst_buffer_set_size ()">gst_buffer_set_size</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
 </dt>
 <dd></dd>
@@ -743,6 +763,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstBuffer.html#gst-buffer-unset-flags" title="gst_buffer_unset_flags ()">gst_buffer_unset_flags</a>, function in <a class="link" href="GstBuffer.html" title="GstBuffer">GstBuffer</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstBus.html#GstBus-struct" title="struct GstBus">GstBus</a>, struct in <a class="link" href="GstBus.html" title="GstBus">GstBus</a>
 </dt>
 <dd></dd>
@@ -2277,10 +2301,6 @@
 </dt>
 <dd></dd>
 <dt>
-<a class="link" href="gstreamer-GstConfig.html#GST-DISABLE-ALLOC-TRACE:CAPS" title="GST_DISABLE_ALLOC_TRACE">GST_DISABLE_ALLOC_TRACE</a>, macro in <a class="link" href="gstreamer-GstConfig.html" title="GstConfig">GstConfig</a>
-</dt>
-<dd></dd>
-<dt>
 <a class="link" href="gstreamer-GstConfig.html#GST-DISABLE-GST-DEBUG:CAPS" title="GST_DISABLE_GST_DEBUG">GST_DISABLE_GST_DEBUG</a>, macro in <a class="link" href="gstreamer-GstConfig.html" title="GstConfig">GstConfig</a>
 </dt>
 <dd></dd>
@@ -2296,10 +2316,6 @@
 <a class="link" href="gstreamer-GstConfig.html#GST-DISABLE-REGISTRY:CAPS" title="GST_DISABLE_REGISTRY">GST_DISABLE_REGISTRY</a>, macro in <a class="link" href="gstreamer-GstConfig.html" title="GstConfig">GstConfig</a>
 </dt>
 <dd></dd>
-<dt>
-<a class="link" href="gstreamer-GstConfig.html#GST-DISABLE-TRACE:CAPS" title="GST_DISABLE_TRACE">GST_DISABLE_TRACE</a>, macro in <a class="link" href="gstreamer-GstConfig.html" title="GstConfig">GstConfig</a>
-</dt>
-<dd></dd>
 <a name="idxE"></a><h3 class="title">E</h3>
 <dt>
 <a class="link" href="GstElement.html#GstElement-struct" title="struct GstElement">GstElement</a>, struct in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
@@ -2318,6 +2334,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstElement.html#GstElementCallAsyncFunc" title="GstElementCallAsyncFunc ()">GstElementCallAsyncFunc</a>, user_function in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstElement.html#GstElementClass" title="struct GstElementClass">GstElementClass</a>, struct in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
 </dt>
 <dd></dd>
@@ -2342,10 +2362,22 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstElement.html#gst-element-add-property-deep-notify-watch" title="gst_element_add_property_deep_notify_watch ()">gst_element_add_property_deep_notify_watch</a>, function in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstElement.html#gst-element-add-property-notify-watch" title="gst_element_add_property_notify_watch ()">gst_element_add_property_notify_watch</a>, function in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstElement.html#GST-ELEMENT-BUS:CAPS" title="GST_ELEMENT_BUS()">GST_ELEMENT_BUS</a>, macro in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstElement.html#gst-element-call-async" title="gst_element_call_async ()">gst_element_call_async</a>, function in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstElement.html#gst-element-change-state" title="gst_element_change_state ()">gst_element_change_state</a>, function in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
 </dt>
 <dd></dd>
@@ -2402,6 +2434,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstElement.html#GST-ELEMENT-ERROR-WITH-DETAILS:CAPS" title="GST_ELEMENT_ERROR_WITH_DETAILS()">GST_ELEMENT_ERROR_WITH_DETAILS</a>, macro in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstElementFactory.html#gst-element-factory-can-sink-all-caps" title="gst_element_factory_can_sink_all_caps ()">gst_element_factory_can_sink_all_caps</a>, function in <a class="link" href="GstElementFactory.html" title="GstElementFactory">GstElementFactory</a>
 </dt>
 <dd></dd>
@@ -2570,6 +2606,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstElement.html#GST-ELEMENT-FLOW-ERROR:CAPS" title="GST_ELEMENT_FLOW_ERROR()">GST_ELEMENT_FLOW_ERROR</a>, macro in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstElement.html#gst-element-get-base-time" title="gst_element_get_base_time ()">gst_element_get_base_time</a>, function in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
 </dt>
 <dd></dd>
@@ -2634,6 +2674,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstElement.html#GST-ELEMENT-INFO-WITH-DETAILS:CAPS" title="GST_ELEMENT_INFO_WITH_DETAILS()">GST_ELEMENT_INFO_WITH_DETAILS</a>, macro in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstElement.html#GST-ELEMENT-IS-LOCKED-STATE:CAPS" title="GST_ELEMENT_IS_LOCKED_STATE()">GST_ELEMENT_IS_LOCKED_STATE</a>, macro in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
 </dt>
 <dd></dd>
@@ -2690,6 +2734,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstElement.html#gst-element-message-full-with-details" title="gst_element_message_full_with_details ()">gst_element_message_full_with_details</a>, function in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstElement.html#GST-ELEMENT-METADATA-AUTHOR:CAPS" title="GST_ELEMENT_METADATA_AUTHOR">GST_ELEMENT_METADATA_AUTHOR</a>, macro in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
 </dt>
 <dd></dd>
@@ -2766,6 +2814,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstElement.html#gst-element-remove-property-notify-watch" title="gst_element_remove_property_notify_watch ()">gst_element_remove_property_notify_watch</a>, function in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstElement.html#gst-element-request-pad" title="gst_element_request_pad ()">gst_element_request_pad</a>, function in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
 </dt>
 <dd></dd>
@@ -2850,6 +2902,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstElement.html#GST-ELEMENT-WARNING-WITH-DETAILS:CAPS" title="GST_ELEMENT_WARNING_WITH_DETAILS()">GST_ELEMENT_WARNING_WITH_DETAILS</a>, macro in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstInfo.html#GST-ERROR:CAPS" title="GST_ERROR()">GST_ERROR</a>, macro in <a class="link" href="gstreamer-GstInfo.html" title="GstInfo">GstInfo</a>
 </dt>
 <dd></dd>
@@ -2990,6 +3046,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstEvent.html#gst-event-new-select-streams" title="gst_event_new_select_streams ()">gst_event_new_select_streams</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstEvent.html#gst-event-new-sink-message" title="gst_event_new_sink_message ()">gst_event_new_sink_message</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
 </dt>
 <dd></dd>
@@ -2998,6 +3058,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstEvent.html#gst-event-new-stream-collection" title="gst_event_new_stream_collection ()">gst_event_new_stream_collection</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstEvent.html#gst-event-new-stream-group-done" title="gst_event_new_stream_group_done ()">gst_event_new_stream_group_done</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstEvent.html#gst-event-new-stream-start" title="gst_event_new_stream_start ()">gst_event_new_stream_start</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
 </dt>
 <dd></dd>
@@ -3058,6 +3126,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstEvent.html#gst-event-parse-select-streams" title="gst_event_parse_select_streams ()">gst_event_parse_select_streams</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstEvent.html#gst-event-parse-sink-message" title="gst_event_parse_sink_message ()">gst_event_parse_sink_message</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
 </dt>
 <dd></dd>
@@ -3066,10 +3138,22 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstEvent.html#gst-event-parse-stream" title="gst_event_parse_stream ()">gst_event_parse_stream</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstEvent.html#gst-event-parse-stream-collection" title="gst_event_parse_stream_collection ()">gst_event_parse_stream_collection</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstEvent.html#gst-event-parse-stream-flags" title="gst_event_parse_stream_flags ()">gst_event_parse_stream_flags</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstEvent.html#gst-event-parse-stream-group-done" title="gst_event_parse_stream_group_done ()">gst_event_parse_stream_group_done</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstEvent.html#gst-event-parse-stream-start" title="gst_event_parse_stream_start ()">gst_event_parse_stream_start</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
 </dt>
 <dd></dd>
@@ -3110,6 +3194,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstEvent.html#gst-event-set-stream" title="gst_event_set_stream ()">gst_event_set_stream</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstEvent.html#gst-event-set-stream-flags" title="gst_event_set_stream_flags ()">gst_event_set_stream_flags</a>, function in <a class="link" href="GstEvent.html" title="GstEvent">GstEvent</a>
 </dt>
 <dd></dd>
@@ -3519,6 +3607,10 @@
 <dd></dd>
 <a name="idxM"></a><h3 class="title">M</h3>
 <dt>
+<a class="link" href="GstElement.html#gst-make-element-message-details" title="gst_make_element_message_details ()">gst_make_element_message_details</a>, function in <a class="link" href="GstElement.html" title="GstElement">GstElement</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstValue.html#GST-MAKE-FOURCC:CAPS" title="GST_MAKE_FOURCC()">GST_MAKE_FOURCC</a>, macro in <a class="link" href="gstreamer-GstValue.html" title="GstValue">GstValue</a>
 </dt>
 <dd></dd>
@@ -3699,10 +3791,18 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-add-redirect-entry" title="gst_message_add_redirect_entry ()">gst_message_add_redirect_entry</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-copy" title="gst_message_copy ()">gst_message_copy</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-get-num-redirect-entries" title="gst_message_get_num_redirect_entries ()">gst_message_get_num_redirect_entries</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-get-seqnum" title="gst_message_get_seqnum ()">gst_message_get_seqnum</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
@@ -3779,6 +3879,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-new-error-with-details" title="gst_message_new_error_with_details ()">gst_message_new_error_with_details</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-new-have-context" title="gst_message_new_have_context ()">gst_message_new_have_context</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
@@ -3787,6 +3891,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-new-info-with-details" title="gst_message_new_info_with_details ()">gst_message_new_info_with_details</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-new-latency" title="gst_message_new_latency ()">gst_message_new_latency</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
@@ -3803,10 +3911,18 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-new-property-notify" title="gst_message_new_property_notify ()">gst_message_new_property_notify</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-new-qos" title="gst_message_new_qos ()">gst_message_new_qos</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-new-redirect" title="gst_message_new_redirect ()">gst_message_new_redirect</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-new-request-state" title="gst_message_new_request_state ()">gst_message_new_request_state</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
@@ -3839,6 +3955,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-new-streams-selected" title="gst_message_new_streams_selected ()">gst_message_new_streams_selected</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstMessage.html#gst-message-new-stream-collection" title="gst_message_new_stream_collection ()">gst_message_new_stream_collection</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-new-stream-start" title="gst_message_new_stream_start ()">gst_message_new_stream_start</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
@@ -3863,6 +3987,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-new-warning-with-details" title="gst_message_new_warning_with_details ()">gst_message_new_warning_with_details</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-parse-async-done" title="gst_message_parse_async_done ()">gst_message_parse_async_done</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
@@ -3899,6 +4027,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-parse-error-details" title="gst_message_parse_error_details ()">gst_message_parse_error_details</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-parse-group-id" title="gst_message_parse_group_id ()">gst_message_parse_group_id</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
@@ -3911,6 +4043,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-parse-info-details" title="gst_message_parse_info_details ()">gst_message_parse_info_details</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-parse-new-clock" title="gst_message_parse_new_clock ()">gst_message_parse_new_clock</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
@@ -3919,6 +4055,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-parse-property-notify" title="gst_message_parse_property_notify ()">gst_message_parse_property_notify</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-parse-qos" title="gst_message_parse_qos ()">gst_message_parse_qos</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
@@ -3931,6 +4071,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-parse-redirect-entry" title="gst_message_parse_redirect_entry ()">gst_message_parse_redirect_entry</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-parse-request-state" title="gst_message_parse_request_state ()">gst_message_parse_request_state</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
@@ -3959,6 +4103,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-parse-streams-selected" title="gst_message_parse_streams_selected ()">gst_message_parse_streams_selected</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstMessage.html#gst-message-parse-stream-collection" title="gst_message_parse_stream_collection ()">gst_message_parse_stream_collection</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-parse-stream-status" title="gst_message_parse_stream_status ()">gst_message_parse_stream_status</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
@@ -3979,6 +4131,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-parse-warning-details" title="gst_message_parse_warning_details ()">gst_message_parse_warning_details</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#gst-message-ref" title="gst_message_ref ()">gst_message_ref</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
@@ -4023,6 +4179,18 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstMessage.html#gst-message-streams-selected-add" title="gst_message_streams_selected_add ()">gst_message_streams_selected_add</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstMessage.html#gst-message-streams-selected-get-size" title="gst_message_streams_selected_get_size ()">gst_message_streams_selected_get_size</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstMessage.html#gst-message-streams-selected-get-stream" title="gst_message_streams_selected_get_stream ()">gst_message_streams_selected_get_stream</a>, function in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstMessage.html#GST-MESSAGE-TIMESTAMP:CAPS" title="GST_MESSAGE_TIMESTAMP()">GST_MESSAGE_TIMESTAMP</a>, macro in <a class="link" href="GstMessage.html" title="GstMessage">GstMessage</a>
 </dt>
 <dd></dd>
@@ -4730,6 +4898,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstPad.html#gst-pad-get-stream" title="gst_pad_get_stream ()">gst_pad_get_stream</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstPad.html#gst-pad-get-stream-id" title="gst_pad_get_stream_id ()">gst_pad_get_stream_id</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
@@ -4854,6 +5026,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstPad.html#gst-pad-link-maybe-ghosting" title="gst_pad_link_maybe_ghosting ()">gst_pad_link_maybe_ghosting</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstPad.html#gst-pad-link-maybe-ghosting-full" title="gst_pad_link_maybe_ghosting_full ()">gst_pad_link_maybe_ghosting_full</a>, function in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstPad.html#GST-PAD-LINK-SUCCESSFUL:CAPS" title="GST_PAD_LINK_SUCCESSFUL()">GST_PAD_LINK_SUCCESSFUL</a>, macro in <a class="link" href="GstPad.html" title="GstPad">GstPad</a>
 </dt>
 <dd></dd>
@@ -6709,6 +6889,22 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstStream.html#GstStream" title="struct GstStream">GstStream</a>, struct in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStream.html#GstStreamClass" title="struct GstStreamClass">GstStreamClass</a>, struct in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollection" title="struct GstStreamCollection">GstStreamCollection</a>, struct in <a class="link" href="gstreamer-GstStreamCollection.html" title="GstStreamCollection">GstStreamCollection</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStreamCollection.html#GstStreamCollectionClass" title="struct GstStreamCollectionClass">GstStreamCollectionClass</a>, struct in <a class="link" href="gstreamer-GstStreamCollection.html" title="GstStreamCollection">GstStreamCollection</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstGError.html#GstStreamError" title="enum GstStreamError">GstStreamError</a>, enum in <a class="link" href="gstreamer-GstGError.html" title="GstGError">GstGError</a>
 </dt>
 <dd></dd>
@@ -6721,10 +6917,78 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstStream.html#GstStreamType" title="enum GstStreamType">GstStreamType</a>, enum in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStreamCollection.html#gst-stream-collection-add-stream" title="gst_stream_collection_add_stream ()">gst_stream_collection_add_stream</a>, function in <a class="link" href="gstreamer-GstStreamCollection.html" title="GstStreamCollection">GstStreamCollection</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStreamCollection.html#gst-stream-collection-get-size" title="gst_stream_collection_get_size ()">gst_stream_collection_get_size</a>, function in <a class="link" href="gstreamer-GstStreamCollection.html" title="GstStreamCollection">GstStreamCollection</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStreamCollection.html#gst-stream-collection-get-stream" title="gst_stream_collection_get_stream ()">gst_stream_collection_get_stream</a>, function in <a class="link" href="gstreamer-GstStreamCollection.html" title="GstStreamCollection">GstStreamCollection</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStreamCollection.html#gst-stream-collection-get-upstream-id" title="gst_stream_collection_get_upstream_id ()">gst_stream_collection_get_upstream_id</a>, function in <a class="link" href="gstreamer-GstStreamCollection.html" title="GstStreamCollection">GstStreamCollection</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStreamCollection.html#gst-stream-collection-new" title="gst_stream_collection_new ()">gst_stream_collection_new</a>, function in <a class="link" href="gstreamer-GstStreamCollection.html" title="GstStreamCollection">GstStreamCollection</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="gstreamer-GstGError.html#GST-STREAM-ERROR:CAPS" title="GST_STREAM_ERROR">GST_STREAM_ERROR</a>, macro in <a class="link" href="gstreamer-GstGError.html" title="GstGError">GstGError</a>
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="gstreamer-GstStream.html#gst-stream-get-caps" title="gst_stream_get_caps ()">gst_stream_get_caps</a>, function in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStream.html#gst-stream-get-stream-flags" title="gst_stream_get_stream_flags ()">gst_stream_get_stream_flags</a>, function in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStream.html#gst-stream-get-stream-id" title="gst_stream_get_stream_id ()">gst_stream_get_stream_id</a>, function in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStream.html#gst-stream-get-stream-type" title="gst_stream_get_stream_type ()">gst_stream_get_stream_type</a>, function in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStream.html#gst-stream-get-tags" title="gst_stream_get_tags ()">gst_stream_get_tags</a>, function in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStream.html#gst-stream-new" title="gst_stream_new ()">gst_stream_new</a>, function in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStream.html#gst-stream-set-caps" title="gst_stream_set_caps ()">gst_stream_set_caps</a>, function in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStream.html#gst-stream-set-stream-flags" title="gst_stream_set_stream_flags ()">gst_stream_set_stream_flags</a>, function in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStream.html#gst-stream-set-stream-type" title="gst_stream_set_stream_type ()">gst_stream_set_stream_type</a>, function in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStream.html#gst-stream-set-tags" title="gst_stream_set_tags ()">gst_stream_set_tags</a>, function in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gstreamer-GstStream.html#gst-stream-type-get-name" title="gst_stream_type_get_name ()">gst_stream_type_get_name</a>, function in <a class="link" href="gstreamer-GstStream.html" title="GstStream">GstStream</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstStructure.html#GstStructure-struct" title="struct GstStructure">GstStructure</a>, struct in <a class="link" href="GstStructure.html" title="GstStructure">GstStructure</a>
 </dt>
 <dd></dd>
diff --git a/docs/gst/html/libgstreamer.html b/docs/gst/html/libgstreamer.html
index da73ecb..2824f7f 100644
--- a/docs/gst/html/libgstreamer.html
+++ b/docs/gst/html/libgstreamer.html
@@ -163,6 +163,12 @@
                     in a media file.</span>
 </dt>
 <dt>
+<span class="refentrytitle"><a href="gstreamer-GstStream.html">GstStream</a></span><span class="refpurpose"> — Base class for stream objects</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gstreamer-GstStreamCollection.html">GstStreamCollection</a></span><span class="refpurpose"> — Base class for collection of streams</span>
+</dt>
+<dt>
 <span class="refentrytitle"><a href="GstStructure.html">GstStructure</a></span><span class="refpurpose"> — Generic structure containing fields of names and values</span>
 </dt>
 <dt>
diff --git a/docs/libs/Makefile.in b/docs/libs/Makefile.in
index 89b4df7..4903aca 100644
--- a/docs/libs/Makefile.in
+++ b/docs/libs/Makefile.in
@@ -251,6 +251,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -258,17 +259,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -393,6 +391,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
@@ -905,7 +905,11 @@
 
 @ENABLE_GTK_DOC_TRUE@sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(expand_content_files)
 @ENABLE_GTK_DOC_TRUE@	@echo '  DOC   Building XML'
-@ENABLE_GTK_DOC_TRUE@	@gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR)  --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
+@ENABLE_GTK_DOC_TRUE@	@_source_dir='' ;						\
+@ENABLE_GTK_DOC_TRUE@	for i in $(DOC_SOURCE_DIR) ; do					\
+@ENABLE_GTK_DOC_TRUE@	    _source_dir="$${_source_dir} --source-dir=$$i" ;	        \
+@ENABLE_GTK_DOC_TRUE@	done ;							        \
+@ENABLE_GTK_DOC_TRUE@	gtkdoc-mkdb --module=$(DOC_MODULE) $${_source_dir}  --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
 @ENABLE_GTK_DOC_TRUE@	@cp ../version.entities xml
 @ENABLE_GTK_DOC_TRUE@	@touch sgml-build.stamp
 
diff --git a/docs/libs/gstreamer-libs-sections.txt b/docs/libs/gstreamer-libs-sections.txt
index 09d0b11..a37b918 100644
--- a/docs/libs/gstreamer-libs-sections.txt
+++ b/docs/libs/gstreamer-libs-sections.txt
@@ -178,6 +178,11 @@
 gst_adapter_prev_dts
 gst_adapter_prev_pts_at_offset
 gst_adapter_prev_dts_at_offset
+gst_adapter_prev_offset
+gst_adapter_pts_at_discont
+gst_adapter_dts_at_discont
+gst_adapter_offset_at_discont
+gst_adapter_distance_from_discont
 gst_adapter_masked_scan_uint32
 gst_adapter_masked_scan_uint32_peek
 <SUBSECTION Standard>
diff --git a/docs/libs/html/GstAdapter.html b/docs/libs/html/GstAdapter.html
index 30656bf..b6a43a0 100644
--- a/docs/libs/html/GstAdapter.html
+++ b/docs/libs/html/GstAdapter.html
@@ -226,6 +226,46 @@
 </tr>
 <tr>
 <td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="returnvalue">guint64</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstAdapter.html#gst-adapter-prev-offset" title="gst_adapter_prev_offset ()">gst_adapter_prev_offset</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="../html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstAdapter.html#gst-adapter-pts-at-discont" title="gst_adapter_pts_at_discont ()">gst_adapter_pts_at_discont</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="../html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstAdapter.html#gst-adapter-dts-at-discont" title="gst_adapter_dts_at_discont ()">gst_adapter_dts_at_discont</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="returnvalue">guint64</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstAdapter.html#gst-adapter-offset-at-discont" title="gst_adapter_offset_at_discont ()">gst_adapter_offset_at_discont</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="returnvalue">guint64</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="GstAdapter.html#gst-adapter-distance-from-discont" title="gst_adapter_distance_from_discont ()">gst_adapter_distance_from_discont</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
 <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gssize"><span class="returnvalue">gssize</span></a>
 </td>
 <td class="function_name">
@@ -362,6 +402,16 @@
 last seen timestamp and the amount of bytes since.  Additionally, the
 <a class="link" href="GstAdapter.html#gst-adapter-prev-pts-at-offset" title="gst_adapter_prev_pts_at_offset ()"><code class="function">gst_adapter_prev_pts_at_offset()</code></a> can be used to determine the last
 seen timestamp at a particular offset in the adapter.</p>
+<p>The adapter will also keep track of the offset of the buffers
+(<a href="../html/GstBuffer.html#GST-BUFFER-OFFSET:CAPS"><span class="type">GST_BUFFER_OFFSET</span></a>) that were pushed. The last seen offset before the
+current position can be queried with <a class="link" href="GstAdapter.html#gst-adapter-prev-offset" title="gst_adapter_prev_offset ()"><code class="function">gst_adapter_prev_offset()</code></a>. This function
+can optionally return the number of bytes between the start of the buffer
+that carried the offset and the current adapter position.</p>
+<p>Additionally the adapter also keeps track of the PTS, DTS and buffer offset
+at the last discontinuity, which can be retrieved with
+<a class="link" href="GstAdapter.html#gst-adapter-pts-at-discont" title="gst_adapter_pts_at_discont ()"><code class="function">gst_adapter_pts_at_discont()</code></a>, <a class="link" href="GstAdapter.html#gst-adapter-dts-at-discont" title="gst_adapter_dts_at_discont ()"><code class="function">gst_adapter_dts_at_discont()</code></a> and
+<a class="link" href="GstAdapter.html#gst-adapter-offset-at-discont" title="gst_adapter_offset_at_discont ()"><code class="function">gst_adapter_offset_at_discont()</code></a>. The number of bytes that were consumed
+since then can be queried with <a class="link" href="GstAdapter.html#gst-adapter-distance-from-discont" title="gst_adapter_distance_from_discont ()"><code class="function">gst_adapter_distance_from_discont()</code></a>.</p>
 <p>A last thing to note is that while <a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a> is pretty optimized,
 merging buffers still might be an operation that requires a <code class="function">malloc()</code> and
 <code class="function">memcpy()</code> operation, and these operations are not the fastest. Because of
@@ -1329,6 +1379,138 @@
 </div>
 <hr>
 <div class="refsect2">
+<a name="gst-adapter-prev-offset"></a><h3>gst_adapter_prev_offset ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="returnvalue">guint64</span></a>
+gst_adapter_prev_offset (<em class="parameter"><code><a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a> *adapter</code></em>,
+                         <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a> *distance</code></em>);</pre>
+<p>Get the offset that was before the current byte in the adapter. When
+<em class="parameter"><code>distance</code></em>
+ is given, the amount of bytes between the offset and the current
+position is returned.</p>
+<p>The offset is reset to GST_BUFFER_OFFSET_NONE and the distance is set to 0
+when the adapter is first created or when it is cleared. This also means that
+before the first byte with an offset is removed from the adapter, the offset
+and distance returned are GST_BUFFER_OFFSET_NONE and 0 respectively.</p>
+<div class="refsect3">
+<a name="gst-adapter-prev-offset.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>adapter</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>distance</p></td>
+<td class="parameter_description"><p> pointer to a location for distance, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-adapter-prev-offset.returns"></a><h4>Returns</h4>
+<p> The previous seen offset.</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-adapter-pts-at-discont"></a><h3>gst_adapter_pts_at_discont ()</h3>
+<pre class="programlisting"><a href="../html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
+gst_adapter_pts_at_discont (<em class="parameter"><code><a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a> *adapter</code></em>);</pre>
+<p>Get the PTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT
+flag, or GST_CLOCK_TIME_NONE.</p>
+<div class="refsect3">
+<a name="gst-adapter-pts-at-discont.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>adapter</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-adapter-pts-at-discont.returns"></a><h4>Returns</h4>
+<p> The PTS at the last discont or GST_CLOCK_TIME_NONE.</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-adapter-dts-at-discont"></a><h3>gst_adapter_dts_at_discont ()</h3>
+<pre class="programlisting"><a href="../html/GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
+gst_adapter_dts_at_discont (<em class="parameter"><code><a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a> *adapter</code></em>);</pre>
+<p>Get the DTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT
+flag, or GST_CLOCK_TIME_NONE.</p>
+<div class="refsect3">
+<a name="gst-adapter-dts-at-discont.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>adapter</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-adapter-dts-at-discont.returns"></a><h4>Returns</h4>
+<p> The DTS at the last discont or GST_CLOCK_TIME_NONE.</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-adapter-offset-at-discont"></a><h3>gst_adapter_offset_at_discont ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="returnvalue">guint64</span></a>
+gst_adapter_offset_at_discont (<em class="parameter"><code><a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a> *adapter</code></em>);</pre>
+<p>Get the offset that was on the last buffer with the GST_BUFFER_FLAG_DISCONT
+flag, or GST_BUFFER_OFFSET_NONE.</p>
+<div class="refsect3">
+<a name="gst-adapter-offset-at-discont.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody><tr>
+<td class="parameter_name"><p>adapter</p></td>
+<td class="parameter_description"><p>a <a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a></p></td>
+<td class="parameter_annotations"> </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect3">
+<a name="gst-adapter-offset-at-discont.returns"></a><h4>Returns</h4>
+<p> The offset at the last discont or GST_BUFFER_OFFSET_NONE.</p>
+</div>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-adapter-distance-from-discont"></a><h3>gst_adapter_distance_from_discont ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="returnvalue">guint64</span></a>
+gst_adapter_distance_from_discont (<em class="parameter"><code><a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a> *adapter</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
 <a name="gst-adapter-masked-scan-uint32"></a><h3>gst_adapter_masked_scan_uint32 ()</h3>
 <pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gssize"><span class="returnvalue">gssize</span></a>
 gst_adapter_masked_scan_uint32 (<em class="parameter"><code><a class="link" href="GstAdapter.html" title="GstAdapter"><span class="type">GstAdapter</span></a> *adapter</code></em>,
diff --git a/docs/libs/html/GstBaseSink.html b/docs/libs/html/GstBaseSink.html
index fb24f09..16c2c6b 100644
--- a/docs/libs/html/GstBaseSink.html
+++ b/docs/libs/html/GstBaseSink.html
@@ -452,8 +452,7 @@
 12
 13
 14
-15
-16</pre></td>
+15</pre></td>
         <td class="listing_code"><pre class="programlisting"><span class="gtkdoc kwb">static void</span>
 <span class="function">my_element_class_init</span> <span class="gtkdoc opt">(</span>GstMyElementClass <span class="gtkdoc opt">*</span>klass<span class="gtkdoc opt">)</span>
 <span class="gtkdoc opt">{</span>
@@ -461,8 +460,7 @@
 
   <span class="gtkdoc slc">// sinktemplate should be a #GstStaticPadTemplate with direction</span>
   <span class="gtkdoc slc">// %GST_PAD_SINK and name &quot;sink&quot;</span>
-  <span class="function"><a href="../html/GstElement.html#gst-element-class-add-pad-template">gst_element_class_add_pad_template</a></span> <span class="gtkdoc opt">(</span>gstelement_class<span class="gtkdoc opt">,</span>
-      <span class="function"><a href="../html/GstPadTemplate.html#gst-static-pad-template-get">gst_static_pad_template_get</a></span> <span class="gtkdoc opt">(&amp;</span>sinktemplate<span class="gtkdoc opt">));</span>
+  <span class="function"><a href="../html/GstElement.html#gst-element-class-add-static-pad-template">gst_element_class_add_static_pad_template</a></span> <span class="gtkdoc opt">(</span>gstelement_class<span class="gtkdoc opt">, &amp;</span>sinktemplate<span class="gtkdoc opt">);</span>
 
   <span class="function"><a href="../html/GstElement.html#gst-element-class-set-static-metadata">gst_element_class_set_static_metadata</a></span> <span class="gtkdoc opt">(</span>gstelement_class<span class="gtkdoc opt">,</span>
       <span class="string">&quot;Sink name&quot;</span><span class="gtkdoc opt">,</span>
diff --git a/docs/libs/html/GstBaseSrc.html b/docs/libs/html/GstBaseSrc.html
index ceb3125..ab9d206 100644
--- a/docs/libs/html/GstBaseSrc.html
+++ b/docs/libs/html/GstBaseSrc.html
@@ -377,16 +377,14 @@
 11
 12
 13
-14
-15</pre></td>
+14</pre></td>
         <td class="listing_code"><pre class="programlisting"><span class="gtkdoc kwb">static void</span>
 <span class="function">my_element_class_init</span> <span class="gtkdoc opt">(</span>GstMyElementClass <span class="gtkdoc opt">*</span>klass<span class="gtkdoc opt">)</span>
 <span class="gtkdoc opt">{</span>
   GstElementClass <span class="gtkdoc opt">*</span>gstelement_class <span class="gtkdoc opt">=</span> <span class="function">GST_ELEMENT_CLASS</span> <span class="gtkdoc opt">(</span>klass<span class="gtkdoc opt">);</span>
   <span class="gtkdoc slc">// srctemplate should be a #GstStaticPadTemplate with direction</span>
   <span class="gtkdoc slc">// %GST_PAD_SRC and name &quot;src&quot;</span>
-  <span class="function"><a href="../html/GstElement.html#gst-element-class-add-pad-template">gst_element_class_add_pad_template</a></span> <span class="gtkdoc opt">(</span>gstelement_class<span class="gtkdoc opt">,</span>
-      <span class="function"><a href="../html/GstPadTemplate.html#gst-static-pad-template-get">gst_static_pad_template_get</a></span> <span class="gtkdoc opt">(&amp;</span>srctemplate<span class="gtkdoc opt">));</span>
+  <span class="function"><a href="../html/GstElement.html#gst-element-class-add-static-pad-template">gst_element_class_add_static_pad_template</a></span> <span class="gtkdoc opt">(</span>gstelement_class<span class="gtkdoc opt">, &amp;</span>srctemplate<span class="gtkdoc opt">);</span>
 
   <span class="function"><a href="../html/GstElement.html#gst-element-class-set-static-metadata">gst_element_class_set_static_metadata</a></span> <span class="gtkdoc opt">(</span>gstelement_class<span class="gtkdoc opt">,</span>
      <span class="string">&quot;Source name&quot;</span><span class="gtkdoc opt">,</span>
diff --git a/docs/libs/html/GstCollectPads.html b/docs/libs/html/GstCollectPads.html
index d7db6e7..e216319 100644
--- a/docs/libs/html/GstCollectPads.html
+++ b/docs/libs/html/GstCollectPads.html
@@ -1329,8 +1329,9 @@
 <div class="refsect3">
 <a name="gst-collect-pads-peek.returns"></a><h4>Returns</h4>
 <p> The buffer in <em class="parameter"><code>data</code></em>
-or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if no buffer is queued.
-should unref the buffer after usage.</p>
+or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if no
+buffer is queued. should unref the buffer after usage. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></p>
 </div>
 </div>
 <hr>
@@ -1370,9 +1371,9 @@
 <div class="refsect3">
 <a name="gst-collect-pads-pop.returns"></a><h4>Returns</h4>
 <p> The buffer in <em class="parameter"><code>data</code></em>
-or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if no buffer was
-queued. You should unref the buffer 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>
+or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if no
+buffer was queued. You should unref the buffer after usage. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></p>
 </div>
 </div>
 <hr>
@@ -1418,10 +1419,10 @@
 </div>
 <div class="refsect3">
 <a name="gst-collect-pads-read-buffer.returns"></a><h4>Returns</h4>
-<p> A sub buffer. The size of the buffer can be less that requested.
-A return of <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> signals that the pad is end-of-stream.
-Unref the buffer after use. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+<p> A sub buffer. The size of the buffer can
+be less that requested. A return of <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> signals that the pad is
+end-of-stream. Unref the buffer after use. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></p>
 </div>
 </div>
 <hr>
@@ -1468,9 +1469,10 @@
 </div>
 <div class="refsect3">
 <a name="gst-collect-pads-take-buffer.returns"></a><h4>Returns</h4>
-<p> A sub buffer. The size of the buffer can be less that requested.
-A return of <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> signals that the pad is end-of-stream.
-Unref the buffer after use.</p>
+<p> A sub buffer. The size of the buffer can
+be less that requested. A return of <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> signals that the pad is
+end-of-stream. Unref the buffer after use. </p>
+<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL may be passed as the value in, out, in-out; or as a return value."><span class="acronym">nullable</span></acronym>]</span></p>
 </div>
 </div>
 <hr>
diff --git a/docs/libs/html/GstTestClock.html b/docs/libs/html/GstTestClock.html
index d06329e..9a0b0e4 100644
--- a/docs/libs/html/GstTestClock.html
+++ b/docs/libs/html/GstTestClock.html
@@ -172,11 +172,18 @@
 <col width="300px" class="properties_name">
 <col width="200px" class="properties_flags">
 </colgroup>
-<tbody><tr>
+<tbody>
+<tr>
+<td class="property_type"><a href="../html/GstSystemClock.html#GstClockType"><span class="type">GstClockType</span></a></td>
+<td class="property_name"><a class="link" href="GstTestClock.html#GstTestClock--clock-type" title="The “clock-type” property">clock-type</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
 <td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></td>
 <td class="property_name"><a class="link" href="GstTestClock.html#GstTestClock--start-time" title="The “start-time” property">start-time</a></td>
 <td class="property_flags">Read / Write / Construct Only</td>
-</tr></tbody>
+</tr>
+</tbody>
 </table></div>
 </div>
 <div class="refsect1">
@@ -990,6 +997,14 @@
 <div class="refsect1">
 <a name="GstTestClock.property-details"></a><h2>Property Details</h2>
 <div class="refsect2">
+<a name="GstTestClock--clock-type"></a><h3>The <code class="literal">“clock-type”</code> property</h3>
+<pre class="programlisting">  “clock-type”               <a href="../html/GstSystemClock.html#GstClockType"><span class="type">GstClockType</span></a></pre>
+<p>The kind of clock implementation to be reported by this clock.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: GST_CLOCK_TYPE_MONOTONIC</p>
+</div>
+<hr>
+<div class="refsect2">
 <a name="GstTestClock--start-time"></a><h3>The <code class="literal">“start-time”</code> property</h3>
 <pre class="programlisting">  “start-time”               <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint64"><span class="type">guint64</span></a></pre>
 <p>When a <a class="link" href="GstTestClock.html" title="GstTestClock"><span class="type">GstTestClock</span></a> is constructed it will have a certain start time set.
diff --git a/docs/libs/html/gstreamer-libs-1.0.devhelp2 b/docs/libs/html/gstreamer-libs-1.0.devhelp2
index bb1d73b..6265ef0 100644
--- a/docs/libs/html/gstreamer-libs-1.0.devhelp2
+++ b/docs/libs/html/gstreamer-libs-1.0.devhelp2
@@ -209,6 +209,11 @@
     <keyword type="function" name="gst_adapter_prev_dts ()" link="GstAdapter.html#gst-adapter-prev-dts"/>
     <keyword type="function" name="gst_adapter_prev_pts_at_offset ()" link="GstAdapter.html#gst-adapter-prev-pts-at-offset" since="1.2"/>
     <keyword type="function" name="gst_adapter_prev_dts_at_offset ()" link="GstAdapter.html#gst-adapter-prev-dts-at-offset" since="1.2"/>
+    <keyword type="function" name="gst_adapter_prev_offset ()" link="GstAdapter.html#gst-adapter-prev-offset" since="1.10"/>
+    <keyword type="function" name="gst_adapter_pts_at_discont ()" link="GstAdapter.html#gst-adapter-pts-at-discont" since="1.10"/>
+    <keyword type="function" name="gst_adapter_dts_at_discont ()" link="GstAdapter.html#gst-adapter-dts-at-discont" since="1.10"/>
+    <keyword type="function" name="gst_adapter_offset_at_discont ()" link="GstAdapter.html#gst-adapter-offset-at-discont" since="1.10"/>
+    <keyword type="function" name="gst_adapter_distance_from_discont ()" link="GstAdapter.html#gst-adapter-distance-from-discont"/>
     <keyword type="function" name="gst_adapter_masked_scan_uint32 ()" link="GstAdapter.html#gst-adapter-masked-scan-uint32"/>
     <keyword type="function" name="gst_adapter_masked_scan_uint32_peek ()" link="GstAdapter.html#gst-adapter-masked-scan-uint32-peek"/>
     <keyword type="struct" name="GstAdapter" link="GstAdapter.html#GstAdapter-struct"/>
@@ -786,6 +791,7 @@
     <keyword type="function" name="gst_test_clock_crank ()" link="GstTestClock.html#gst-test-clock-crank" since="1.8"/>
     <keyword type="struct" name="struct GstTestClock" link="GstTestClock.html#GstTestClock-struct"/>
     <keyword type="struct" name="struct GstTestClockClass" link="GstTestClock.html#GstTestClockClass" since="1.2"/>
+    <keyword type="property" name="The “clock-type” property" link="GstTestClock.html#GstTestClock--clock-type"/>
     <keyword type="property" name="The “start-time” property" link="GstTestClock.html#GstTestClock--start-time"/>
     <keyword type="constant" name="GST_BASE_PARSE_FRAME_FLAG_NONE" link="GstBaseParse.html#GST-BASE-PARSE-FRAME-FLAG-NONE:CAPS"/>
     <keyword type="constant" name="GST_BASE_PARSE_FRAME_FLAG_NEW_FRAME" link="GstBaseParse.html#GST-BASE-PARSE-FRAME-FLAG-NEW-FRAME:CAPS"/>
diff --git a/docs/libs/html/gstreamer-libs-GstFlowCombiner.html b/docs/libs/html/gstreamer-libs-GstFlowCombiner.html
index 5917acb..85916e0 100644
--- a/docs/libs/html/gstreamer-libs-GstFlowCombiner.html
+++ b/docs/libs/html/gstreamer-libs-GstFlowCombiner.html
@@ -317,7 +317,7 @@
 <a name="gst-flow-combiner-reset"></a><h3>gst_flow_combiner_reset ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_flow_combiner_reset (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a> *combiner</code></em>);</pre>
-<p>Removes all pads from a <a class="link" href="gstreamer-libs-GstFlowCombiner.html#GstFlowCombiner" title="GstFlowCombiner"><span class="type">GstFlowCombiner</span></a> and resets it to its initial state.</p>
+<p>Reset flow combiner and all pads to their initial state without removing pads.</p>
 <div class="refsect3">
 <a name="gst-flow-combiner-reset.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
diff --git a/docs/libs/html/gstreamer-libs-GstHarness.html b/docs/libs/html/gstreamer-libs-GstHarness.html
index 24acc86..d67df1f 100644
--- a/docs/libs/html/gstreamer-libs-GstHarness.html
+++ b/docs/libs/html/gstreamer-libs-GstHarness.html
@@ -2619,7 +2619,6 @@
 gst_harness_set_upstream_latency (<em class="parameter"><code><a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> *h</code></em>,
                                   <em class="parameter"><code><a href="../html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> latency</code></em>);</pre>
 <p>Sets the min latency reported by <a class="link" href="gstreamer-libs-GstHarness.html#GstHarness" title="struct GstHarness"><span class="type">GstHarness</span></a> when receiving a latency-query</p>
-<p>MT safe.</p>
 <div class="refsect3">
 <a name="gst-harness-set-upstream-latency.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2642,10 +2641,6 @@
 </tbody>
 </table></div>
 </div>
-<div class="refsect3">
-<a name="gst-harness-set-upstream-latency.returns"></a><h4>Returns</h4>
-<p> a <a href="../html/GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> with min latency</p>
-</div>
 <p class="since">Since: <a class="link" href="ix03.html#api-index-1.6">1.6</a></p>
 </div>
 <hr>
diff --git a/docs/libs/html/gstreamer-libs-GstTypeFindHelper.html b/docs/libs/html/gstreamer-libs-GstTypeFindHelper.html
index 508ceca..95b8b6f 100644
--- a/docs/libs/html/gstreamer-libs-GstTypeFindHelper.html
+++ b/docs/libs/html/gstreamer-libs-GstTypeFindHelper.html
@@ -280,7 +280,7 @@
 <td class="parameter_name"><p>size</p></td>
 <td class="parameter_description"><p> the size of <em class="parameter"><code>data</code></em>
 . </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input. Default is transfer none."><span class="acronym">in</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
+<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for input. Default is transfer none."><span class="acronym">in</span></acronym>]</span></td>
 </tr>
 <tr>
 <td class="parameter_name"><p>prob</p></td>
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index fe09c3c..76a2ae1 100644
--- a/docs/libs/html/index.html
+++ b/docs/libs/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer 1.0 Library Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Library 1.0 (1.8.3)
+      for GStreamer Library 1.0 (1.9.90)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-libs/html/</a>.
     </p></div>
diff --git a/docs/libs/html/ix01.html b/docs/libs/html/ix01.html
index 0a15ac9..9873214 100644
--- a/docs/libs/html/ix01.html
+++ b/docs/libs/html/ix01.html
@@ -74,6 +74,14 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstAdapter.html#gst-adapter-distance-from-discont" title="gst_adapter_distance_from_discont ()">gst_adapter_distance_from_discont</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="GstAdapter.html#gst-adapter-dts-at-discont" title="gst_adapter_dts_at_discont ()">gst_adapter_dts_at_discont</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstAdapter.html#gst-adapter-flush" title="gst_adapter_flush ()">gst_adapter_flush</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
 </dt>
 <dd></dd>
@@ -110,6 +118,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstAdapter.html#gst-adapter-offset-at-discont" title="gst_adapter_offset_at_discont ()">gst_adapter_offset_at_discont</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstAdapter.html#gst-adapter-prev-dts" title="gst_adapter_prev_dts ()">gst_adapter_prev_dts</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
 </dt>
 <dd></dd>
@@ -118,6 +130,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstAdapter.html#gst-adapter-prev-offset" title="gst_adapter_prev_offset ()">gst_adapter_prev_offset</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstAdapter.html#gst-adapter-prev-pts" title="gst_adapter_prev_pts ()">gst_adapter_prev_pts</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
 </dt>
 <dd></dd>
@@ -126,6 +142,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstAdapter.html#gst-adapter-pts-at-discont" title="gst_adapter_pts_at_discont ()">gst_adapter_pts_at_discont</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstAdapter.html#gst-adapter-push" title="gst_adapter_push ()">gst_adapter_push</a>, function in <a class="link" href="GstAdapter.html" title="GstAdapter">GstAdapter</a>
 </dt>
 <dd></dd>
@@ -2847,6 +2867,10 @@
 </dt>
 <dd></dd>
 <dt>
+<a class="link" href="GstTestClock.html#GstTestClock--clock-type" title="The “clock-type” property">GstTestClock:clock-type</a>, object property in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
+</dt>
+<dd></dd>
+<dt>
 <a class="link" href="GstTestClock.html#GstTestClock--start-time" title="The “start-time” property">GstTestClock:start-time</a>, object property in <a class="link" href="GstTestClock.html" title="GstTestClock">GstTestClock</a>
 </dt>
 <dd></dd>
diff --git a/docs/manual/Makefile.in b/docs/manual/Makefile.in
index 0df1b64..512ba14 100644
--- a/docs/manual/Makefile.in
+++ b/docs/manual/Makefile.in
@@ -282,6 +282,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -289,17 +290,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -424,6 +422,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in
index ca4c517..7d44609 100644
--- a/docs/plugins/Makefile.in
+++ b/docs/plugins/Makefile.in
@@ -247,6 +247,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -254,17 +255,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -389,6 +387,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
@@ -984,9 +984,13 @@
 @ENABLE_GTK_DOC_TRUE@		$(top_srcdir)/common/plugins.xsl $$a > xml/`basename $$a`; done
 @ENABLE_GTK_DOC_TRUE@	@for f in $(EXAMPLE_CFILES); do \
 @ENABLE_GTK_DOC_TRUE@		$(PYTHON) $(top_srcdir)/common/c-to-xml.py $$f > xml/element-`basename $$f .c`.xml; done
-@ENABLE_GTK_DOC_TRUE@	@gtkdoc-mkdb \
+@ENABLE_GTK_DOC_TRUE@	@_source_dir='' ;						\
+@ENABLE_GTK_DOC_TRUE@	for i in $(DOC_SOURCE_DIR) ; do					\
+@ENABLE_GTK_DOC_TRUE@	    _source_dir="$${_source_dir} --source-dir=$$i" ;	        \
+@ENABLE_GTK_DOC_TRUE@	done ;								\
+@ENABLE_GTK_DOC_TRUE@	gtkdoc-mkdb \
 @ENABLE_GTK_DOC_TRUE@		--module=$(DOC_MODULE) \
-@ENABLE_GTK_DOC_TRUE@		--source-dir=$(DOC_SOURCE_DIR) \
+@ENABLE_GTK_DOC_TRUE@		$${_source_dir} \
 @ENABLE_GTK_DOC_TRUE@		 --expand-content-files="$(expand_content_files)" \
 @ENABLE_GTK_DOC_TRUE@		--main-sgml-file=$(srcdir)/$(DOC_MAIN_SGML_FILE) \
 @ENABLE_GTK_DOC_TRUE@		--output-format=xml \
diff --git a/docs/plugins/gstreamer-plugins.args b/docs/plugins/gstreamer-plugins.args
index b0fd4de..58d2650 100644
--- a/docs/plugins/gstreamer-plugins.args
+++ b/docs/plugins/gstreamer-plugins.args
@@ -144,7 +144,7 @@
 <RANGE>[0,100]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>High percent</NICK>
-<BLURB>High threshold for buffering to finish. Only used if use-buffering is True.</BLURB>
+<BLURB>High threshold for buffering to finish. Only used if use-buffering is True (Deprecated: use high-watermark instead).</BLURB>
 <DEFAULT>99</DEFAULT>
 </ARG>
 
@@ -154,8 +154,8 @@
 <RANGE>[0,100]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Low percent</NICK>
-<BLURB>Low threshold for buffering to start. Only used if use-buffering is True.</BLURB>
-<DEFAULT>10</DEFAULT>
+<BLURB>Low threshold for buffering to start. Only used if use-buffering is True (Deprecated: use low-watermark instead).</BLURB>
+<DEFAULT>1</DEFAULT>
 </ARG>
 
 <ARG>
@@ -269,6 +269,26 @@
 </ARG>
 
 <ARG>
+<NAME>GstQueue2::high-watermark</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>High watermark</NICK>
+<BLURB>High threshold for buffering to finish. Only used if use-buffering is True.</BLURB>
+<DEFAULT>0.99</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstQueue2::low-watermark</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Low watermark</NICK>
+<BLURB>Low threshold for buffering to start. Only used if use-buffering is True.</BLURB>
+<DEFAULT>0.01</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstQueue::current-level-buffers</NAME>
 <TYPE>guint</TYPE>
 <RANGE></RANGE>
@@ -454,7 +474,7 @@
 <RANGE>[0,100]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>High percent</NICK>
-<BLURB>High threshold for buffering to finish.</BLURB>
+<BLURB>High threshold for buffering to finish. Only used if use-buffering is True (Deprecated: use high-watermark instead).</BLURB>
 <DEFAULT>99</DEFAULT>
 </ARG>
 
@@ -464,8 +484,8 @@
 <RANGE>[0,100]</RANGE>
 <FLAGS>rw</FLAGS>
 <NICK>Low percent</NICK>
-<BLURB>Low threshold for buffering to start.</BLURB>
-<DEFAULT>10</DEFAULT>
+<BLURB>Low threshold for buffering to start. Only used if use-buffering is True (Deprecated: use low-watermark instead).</BLURB>
+<DEFAULT>1</DEFAULT>
 </ARG>
 
 <ARG>
@@ -539,6 +559,26 @@
 </ARG>
 
 <ARG>
+<NAME>GstMultiQueue::high-watermark</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>High watermark</NICK>
+<BLURB>High threshold for buffering to finish. Only used if use-buffering is True.</BLURB>
+<DEFAULT>0.99</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstMultiQueue::low-watermark</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Low watermark</NICK>
+<BLURB>Low threshold for buffering to start. Only used if use-buffering is True.</BLURB>
+<DEFAULT>0.01</DEFAULT>
+</ARG>
+
+<ARG>
 <NAME>GstInputSelector::active-pad</NAME>
 <TYPE>GstPad*</TYPE>
 <RANGE></RANGE>
diff --git a/docs/plugins/gstreamer-plugins.hierarchy b/docs/plugins/gstreamer-plugins.hierarchy
index 480fce1..9c56b96 100644
--- a/docs/plugins/gstreamer-plugins.hierarchy
+++ b/docs/plugins/gstreamer-plugins.hierarchy
@@ -47,6 +47,7 @@
       GstTaskPool
       GstTracer
         GstLatencyTracer
+        GstLeaksTracer
         GstLogTracer
         GstRUsageTracer
         GstStatsTracer
diff --git a/docs/plugins/html/gstreamer-plugins-1.0.devhelp2 b/docs/plugins/html/gstreamer-plugins-1.0.devhelp2
index b5c58a1..b390403 100644
--- a/docs/plugins/html/gstreamer-plugins-1.0.devhelp2
+++ b/docs/plugins/html/gstreamer-plugins-1.0.devhelp2
@@ -128,6 +128,8 @@
     <keyword type="property" name="The “use-buffering” property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--use-buffering"/>
     <keyword type="property" name="The “unlinked-cache-time” property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--unlinked-cache-time"/>
     <keyword type="property" name="The “use-interleave” property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--use-interleave"/>
+    <keyword type="property" name="The “high-watermark” property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--high-watermark"/>
+    <keyword type="property" name="The “low-watermark” property" link="gstreamer-plugins-multiqueue.html#GstMultiQueue--low-watermark"/>
     <keyword type="signal" name="The “overrun” signal" link="gstreamer-plugins-multiqueue.html#GstMultiQueue-overrun"/>
     <keyword type="signal" name="The “underrun” signal" link="gstreamer-plugins-multiqueue.html#GstMultiQueue-underrun"/>
     <keyword type="struct" name="struct GstOutputSelector" link="gstreamer-plugins-output-selector.html#GstOutputSelector-struct"/>
@@ -152,6 +154,8 @@
     <keyword type="property" name="The “use-rate-estimate” property" link="gstreamer-plugins-queue2.html#GstQueue2--use-rate-estimate"/>
     <keyword type="property" name="The “avg-in-rate” property" link="gstreamer-plugins-queue2.html#GstQueue2--avg-in-rate"/>
     <keyword type="property" name="The “use-tags-bitrate” property" link="gstreamer-plugins-queue2.html#GstQueue2--use-tags-bitrate"/>
+    <keyword type="property" name="The “high-watermark” property" link="gstreamer-plugins-queue2.html#GstQueue2--high-watermark"/>
+    <keyword type="property" name="The “low-watermark” property" link="gstreamer-plugins-queue2.html#GstQueue2--low-watermark"/>
     <keyword type="signal" name="The “overrun” signal" link="gstreamer-plugins-queue2.html#GstQueue2-overrun"/>
     <keyword type="struct" name="struct GstQueue" link="gstreamer-plugins-queue.html#GstQueue-struct"/>
     <keyword type="enum" name="enum GstQueueLeaky" link="gstreamer-plugins-queue.html#GstQueueLeaky"/>
diff --git a/docs/plugins/html/gstreamer-plugins-multiqueue.html b/docs/plugins/html/gstreamer-plugins-multiqueue.html
index eda8063..cc52843 100644
--- a/docs/plugins/html/gstreamer-plugins-multiqueue.html
+++ b/docs/plugins/html/gstreamer-plugins-multiqueue.html
@@ -103,6 +103,16 @@
 <td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--use-interleave" title="The “use-interleave” property">use-interleave</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--high-watermark" title="The “high-watermark” property">high-watermark</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--low-watermark" title="The “low-watermark” property">low-watermark</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -234,6 +244,17 @@
   queues is filled.
   Both signals are emitted from the context of the streaming thread.
 </p>
+<p>
+  When using <a class="link" href="gstreamer-plugins-multiqueue.html#GstMultiQueue--sync-by-running-time" title="The “sync-by-running-time” property"><span class="type">“sync-by-running-time”</span></a> the unlinked streams will
+  be throttled by the highest running-time of linked streams. This allows
+  further relinking of those unlinked streams without them being in the
+  future (i.e. to achieve gapless playback).
+  When dealing with streams which have got different consumption requirements
+  downstream (ex: video decoders which will consume more buffer (in time) than
+  audio decoders), it is recommended to group streams of the same type
+  by using the pad "group-id" property. This will further throttle streams
+  in time within that group.
+</p>
 </div>
 <div class="refsynopsisdiv">
 <h2>Synopsis</h2>
@@ -369,7 +390,7 @@
 <p>Low threshold percent for buffering to start.</p>
 <p>Flags: Read / Write</p>
 <p>Allowed values: [0,100]</p>
-<p>Default value: 10</p>
+<p>Default value: 1</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -432,6 +453,26 @@
 <p>Flags: Read / Write</p>
 <p>Default value: FALSE</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstMultiQueue--high-watermark"></a><h3>The <code class="literal">“high-watermark”</code> property</h3>
+<pre class="programlisting">  “high-watermark”           <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>High threshold watermark for buffering to finish.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1]</p>
+<p>Default value: 0.99</p>
+<p class="since">Since: 1.10</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMultiQueue--low-watermark"></a><h3>The <code class="literal">“low-watermark”</code> property</h3>
+<pre class="programlisting">  “low-watermark”            <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Low threshold watermark for buffering to start.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1]</p>
+<p>Default value: 0.01</p>
+<p class="since">Since: 1.10</p>
+</div>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-multiqueue.signal-details"></a><h2>Signal Details</h2>
diff --git a/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html b/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html
index 86a8256..ceadef2 100644
--- a/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html
+++ b/docs/plugins/html/gstreamer-plugins-plugin-coreelements.html
@@ -41,7 +41,7 @@
 </tr>
 <tr>
 <td><p><span class="term">version</span></p></td>
-<td>1.8.3</td>
+<td>1.9.90</td>
 </tr>
 <tr>
 <td><p><span class="term">run-time license</span></p></td>
diff --git a/docs/plugins/html/gstreamer-plugins-queue2.html b/docs/plugins/html/gstreamer-plugins-queue2.html
index 7d3dcc6..c1f6b06 100644
--- a/docs/plugins/html/gstreamer-plugins-queue2.html
+++ b/docs/plugins/html/gstreamer-plugins-queue2.html
@@ -125,6 +125,16 @@
 <td class="property_name"><a class="link" href="gstreamer-plugins-queue2.html#GstQueue2--use-tags-bitrate" title="The “use-tags-bitrate” property">use-tags-bitrate</a></td>
 <td class="property_flags">Read / Write</td>
 </tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-queue2.html#GstQueue2--high-watermark" title="The “high-watermark” property">high-watermark</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gstreamer-plugins-queue2.html#GstQueue2--low-watermark" title="The “low-watermark” property">low-watermark</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
 </tbody>
 </table></div>
 </div>
@@ -305,7 +315,7 @@
 <div class="refsect2">
 <a name="GstQueue2--high-percent"></a><h3>The <code class="literal">“high-percent”</code> property</h3>
 <pre class="programlisting">  “high-percent”             <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>High threshold for buffering to finish. Only used if use-buffering is True.</p>
+<p>High threshold for buffering to finish. Only used if use-buffering is True (Deprecated: use high-watermark instead).</p>
 <p>Flags: Read / Write</p>
 <p>Allowed values: [0,100]</p>
 <p>Default value: 99</p>
@@ -314,10 +324,10 @@
 <div class="refsect2">
 <a name="GstQueue2--low-percent"></a><h3>The <code class="literal">“low-percent”</code> property</h3>
 <pre class="programlisting">  “low-percent”              <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Low threshold for buffering to start. Only used if use-buffering is True.</p>
+<p>Low threshold for buffering to start. Only used if use-buffering is True (Deprecated: use low-watermark instead).</p>
 <p>Flags: Read / Write</p>
 <p>Allowed values: [0,100]</p>
-<p>Default value: 10</p>
+<p>Default value: 1</p>
 </div>
 <hr>
 <div class="refsect2">
@@ -409,6 +419,24 @@
 <p>Flags: Read / Write</p>
 <p>Default value: FALSE</p>
 </div>
+<hr>
+<div class="refsect2">
+<a name="GstQueue2--high-watermark"></a><h3>The <code class="literal">“high-watermark”</code> property</h3>
+<pre class="programlisting">  “high-watermark”           <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>High threshold for buffering to finish. Only used if use-buffering is True.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1]</p>
+<p>Default value: 0.99</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstQueue2--low-watermark"></a><h3>The <code class="literal">“low-watermark”</code> property</h3>
+<pre class="programlisting">  “low-watermark”            <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Low threshold for buffering to start. Only used if use-buffering is True.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1]</p>
+<p>Default value: 0.01</p>
+</div>
 </div>
 <div class="refsect1">
 <a name="gstreamer-plugins-queue2.signal-details"></a><h2>Signal Details</h2>
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index 2db4fb1..1dec7f3 100644
--- a/docs/plugins/html/index.html
+++ b/docs/plugins/html/index.html
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer Core Plugins 1.0 Plugins Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer Core Plugins 1.0 (1.8.3)
+      for GStreamer Core Plugins 1.0 (1.9.90)
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/" target="_top">http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/</a>.
     </p></div>
diff --git a/docs/plugins/inspect/plugin-coreelements.xml b/docs/plugins/inspect/plugin-coreelements.xml
index e447d00..8b17807 100644
--- a/docs/plugins/inspect/plugin-coreelements.xml
+++ b/docs/plugins/inspect/plugin-coreelements.xml
@@ -3,7 +3,7 @@
   <description>GStreamer core elements</description>
   <filename>../../plugins/elements/.libs/libgstcoreelements.so</filename>
   <basename>libgstcoreelements.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gstreamer</source>
   <package>GStreamer source release</package>
diff --git a/docs/plugins/inspect/plugin-coretracers.xml b/docs/plugins/inspect/plugin-coretracers.xml
index e7df50f..c8b3d0f 100644
--- a/docs/plugins/inspect/plugin-coretracers.xml
+++ b/docs/plugins/inspect/plugin-coretracers.xml
@@ -3,7 +3,7 @@
   <description>GStreamer core tracers</description>
   <filename>../../plugins/tracers/.libs/libgstcoretracers.so</filename>
   <basename>libgstcoretracers.so</basename>
-  <version>1.8.3</version>
+  <version>1.9.90</version>
   <license>LGPL</license>
   <source>gstreamer</source>
   <package>GStreamer source release</package>
diff --git a/docs/pwg/Makefile.in b/docs/pwg/Makefile.in
index 68be98f..be1bb68 100644
--- a/docs/pwg/Makefile.in
+++ b/docs/pwg/Makefile.in
@@ -282,6 +282,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -289,17 +290,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -424,6 +422,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/docs/pwg/building-boiler.xml b/docs/pwg/building-boiler.xml
index 5d78123..251bf33 100644
--- a/docs/pwg/building-boiler.xml
+++ b/docs/pwg/building-boiler.xml
@@ -159,9 +159,6 @@
       file (although since the interface to the code is entirely defined by the
       plugin system, and doesn't depend on reading a header file, this is not
       crucial.)
-
-      The code here can be found in
-      <filename>examples/pwg/examplefilter/boiler/gstexamplefilter.h</filename>.
     </para>
 
     <example id="ex-boiler-examine-h">
diff --git a/docs/pwg/pwg.xml b/docs/pwg/pwg.xml
index 4f79709..52d729e 100644
--- a/docs/pwg/pwg.xml
+++ b/docs/pwg/pwg.xml
@@ -110,11 +110,6 @@
         reading the next part of the guide, <xref linkend="part-advanced"/>, you
         will be able to add even more functionality to your plugins.
       </para>
-      <para>
-        The example code used in this part of the guide can be found in
-        <filename class="directory">examples/pwg/examplefilter/</filename> in
-        your &GStreamer; directory.
-      </para>
     </partintro>
 
     &BUILDING_BOILER;
diff --git a/docs/slides/Makefile.in b/docs/slides/Makefile.in
index 9c3405e..d60ff9e 100644
--- a/docs/slides/Makefile.in
+++ b/docs/slides/Makefile.in
@@ -228,6 +228,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -235,17 +236,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -370,6 +368,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/docs/xsl/Makefile.in b/docs/xsl/Makefile.in
index a6d6a11..166c6b6 100644
--- a/docs/xsl/Makefile.in
+++ b/docs/xsl/Makefile.in
@@ -228,6 +228,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -235,17 +236,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -370,6 +368,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/gst/Makefile.am b/gst/Makefile.am
index 7b113e9..4fe947a 100644
--- a/gst/Makefile.am
+++ b/gst/Makefile.am
@@ -14,12 +14,6 @@
 GST_PARSE_LA = parse/libgstparse.la
 endif
 
-if GST_DISABLE_TRACE
-GST_TRACE_SRC =
-else
-GST_TRACE_SRC = gsttrace.c
-endif
-
 if GST_DISABLE_PLUGIN
 GST_PLUGIN_SRC =
 else
@@ -41,13 +35,11 @@
 # make variables for all generated source and header files to make the
 # distinction clear
 
-built_header_configure = gstversion.h
-built_sys_header_configure = gstconfig.h
+built_headers_configure = gstversion.h gstconfig.h
 built_header_make = gstenumtypes.h
 built_source_make = gstenumtypes.c
 
 EXTRA_libgstreamer_@GST_API_VERSION@_la_SOURCES = \
-	gsttrace.c \
 	gstregistrybinary.c
 
 
@@ -106,6 +98,8 @@
 	gstregistrychunks.c	\
 	gstsample.c		\
 	gstsegment.c		\
+	gststreamcollection.c	\
+	gststreams.c		\
 	gststructure.c		\
 	gstsystemclock.c	\
 	gsttaglist.c		\
@@ -114,7 +108,6 @@
 	gsttaskpool.c		\
 	gsttoc.c		\
 	gsttocsetter.c		\
-	$(GST_TRACE_SRC)	\
 	gsttracer.c		\
 	gsttracerfactory.c	\
 	gsttracerrecord.c		\
@@ -132,14 +125,13 @@
 
 # BUILT_SOURCES are built on make all/check/install before all other targets
 BUILT_SOURCES = \
-        $(built_header_configure)	\
-        $(built_sys_header_configure)	\
+        $(built_headers_configure)	\
         $(built_header_make)		\
         $(built_source_make)
 # CLEANFILES is for files generated by make
 CLEANFILES = $(built_header_make) $(built_source_make) $(as_dll_cleanfiles) *.gcno *.gcda *.gcov *.gcov.out
 # DISTCLEANFILES is for files generated by configure
-DISTCLEANFILES = $(built_header_configure) $(built_sys_header_configure)
+DISTCLEANFILES = $(built_headers_configure)
 
 libgstreamer_@GST_API_VERSION@_la_CFLAGS =		\
 	-D_GNU_SOURCE					\
@@ -214,6 +206,8 @@
 	gstquery.h		\
 	gstsample.h		\
 	gstsegment.h		\
+	gststreamcollection.h	\
+	gststreams.h		\
 	gststructure.h		\
 	gstsystemclock.h	\
 	gsttaglist.h		\
@@ -236,10 +230,7 @@
 libgstreamer_@GST_API_VERSION@include_HEADERS = $(gst_headers) math-compat.h
 
 nodist_libgstreamer_@GST_API_VERSION@include_HEADERS = \
-	$(built_header_configure) $(built_header_make)
-
-configexecincludedir = $(libdir)/gstreamer-@GST_API_VERSION@/include/gst
-nodist_configexecinclude_HEADERS = $(built_sys_header_configure)
+	$(built_headers_configure) $(built_header_make)
 
 noinst_HEADERS = 		\
 	gettext.h		\
@@ -251,7 +242,6 @@
 	gstquark.h		\
 	gstregistrybinary.h     \
 	gstregistrychunks.h     \
-	gsttrace.h		\
 	gsttracerutils.h		\
 	gst_private.h
 
diff --git a/gst/Makefile.in b/gst/Makefile.in
index 9f2de69..144d927 100644
--- a/gst/Makefile.in
+++ b/gst/Makefile.in
@@ -169,7 +169,6 @@
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" \
 	"$(DESTDIR)$(typelibsdir)" \
 	"$(DESTDIR)$(libgstreamer_@GST_API_VERSION@includedir)" \
-	"$(DESTDIR)$(configexecincludedir)" \
 	"$(DESTDIR)$(libgstreamer_@GST_API_VERSION@includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
 @GST_DISABLE_PARSE_FALSE@am__DEPENDENCIES_1 = parse/libgstparse.la
@@ -193,14 +192,14 @@
 	gstpadtemplate.c gstparamspecs.c gstpipeline.c gstplugin.c \
 	gstpluginfeature.c gstpluginloader.c gstpoll.c gstpreset.c \
 	gstprotection.c gstquark.c gstquery.c gstregistry.c \
-	gstregistrychunks.c gstsample.c gstsegment.c gststructure.c \
+	gstregistrychunks.c gstsample.c gstsegment.c \
+	gststreamcollection.c gststreams.c gststructure.c \
 	gstsystemclock.c gsttaglist.c gsttagsetter.c gsttask.c \
-	gsttaskpool.c gsttoc.c gsttocsetter.c gsttrace.c gsttracer.c \
+	gsttaskpool.c gsttoc.c gsttocsetter.c gsttracer.c \
 	gsttracerfactory.c gsttracerrecord.c gsttracerutils.c \
 	gsttypefind.c gsttypefindfactory.c gsturi.c gstutils.c \
 	gstvalue.c gstparse.c gstregistrybinary.c
-@GST_DISABLE_TRACE_FALSE@am__objects_1 = libgstreamer_@GST_API_VERSION@_la-gsttrace.lo
-@GST_DISABLE_REGISTRY_FALSE@am__objects_2 = libgstreamer_@GST_API_VERSION@_la-gstregistrybinary.lo
+@GST_DISABLE_REGISTRY_FALSE@am__objects_1 = libgstreamer_@GST_API_VERSION@_la-gstregistrybinary.lo
 am_libgstreamer_@GST_API_VERSION@_la_OBJECTS =  \
 	libgstreamer_@GST_API_VERSION@_la-gst.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstobject.lo \
@@ -253,6 +252,8 @@
 	libgstreamer_@GST_API_VERSION@_la-gstregistrychunks.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstsample.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstsegment.lo \
+	libgstreamer_@GST_API_VERSION@_la-gststreamcollection.lo \
+	libgstreamer_@GST_API_VERSION@_la-gststreams.lo \
 	libgstreamer_@GST_API_VERSION@_la-gststructure.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstsystemclock.lo \
 	libgstreamer_@GST_API_VERSION@_la-gsttaglist.lo \
@@ -261,7 +262,6 @@
 	libgstreamer_@GST_API_VERSION@_la-gsttaskpool.lo \
 	libgstreamer_@GST_API_VERSION@_la-gsttoc.lo \
 	libgstreamer_@GST_API_VERSION@_la-gsttocsetter.lo \
-	$(am__objects_1) \
 	libgstreamer_@GST_API_VERSION@_la-gsttracer.lo \
 	libgstreamer_@GST_API_VERSION@_la-gsttracerfactory.lo \
 	libgstreamer_@GST_API_VERSION@_la-gsttracerrecord.lo \
@@ -271,9 +271,9 @@
 	libgstreamer_@GST_API_VERSION@_la-gsturi.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstutils.lo \
 	libgstreamer_@GST_API_VERSION@_la-gstvalue.lo \
-	libgstreamer_@GST_API_VERSION@_la-gstparse.lo $(am__objects_2)
-am__objects_3 = libgstreamer_@GST_API_VERSION@_la-gstenumtypes.lo
-nodist_libgstreamer_@GST_API_VERSION@_la_OBJECTS = $(am__objects_3)
+	libgstreamer_@GST_API_VERSION@_la-gstparse.lo $(am__objects_1)
+am__objects_2 = libgstreamer_@GST_API_VERSION@_la-gstenumtypes.lo
+nodist_libgstreamer_@GST_API_VERSION@_la_OBJECTS = $(am__objects_2)
 libgstreamer_@GST_API_VERSION@_la_OBJECTS =  \
 	$(am_libgstreamer_@GST_API_VERSION@_la_OBJECTS) \
 	$(nodist_libgstreamer_@GST_API_VERSION@_la_OBJECTS)
@@ -339,7 +339,6 @@
   esac
 DATA = $(gir_DATA) $(typelibs_DATA)
 HEADERS = $(libgstreamer_@GST_API_VERSION@include_HEADERS) \
-	$(nodist_configexecinclude_HEADERS) \
 	$(nodist_libgstreamer_@GST_API_VERSION@include_HEADERS) \
 	$(noinst_HEADERS)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
@@ -470,6 +469,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -477,17 +477,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -612,6 +609,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
@@ -696,8 +695,6 @@
 @GST_DISABLE_PARSE_TRUE@SUBDIRS_PARSE = 
 @GST_DISABLE_PARSE_FALSE@GST_PARSE_LA = parse/libgstparse.la
 @GST_DISABLE_PARSE_TRUE@GST_PARSE_LA = 
-@GST_DISABLE_TRACE_FALSE@GST_TRACE_SRC = gsttrace.c
-@GST_DISABLE_TRACE_TRUE@GST_TRACE_SRC = 
 @GST_DISABLE_PLUGIN_FALSE@GST_PLUGIN_SRC = gstplugin.c
 @GST_DISABLE_PLUGIN_TRUE@GST_PLUGIN_SRC = 
 @GST_DISABLE_GST_DEBUG_FALSE@SUBDIRS_PRINTF = printf
@@ -709,12 +706,10 @@
 
 # make variables for all generated source and header files to make the
 # distinction clear
-built_header_configure = gstversion.h
-built_sys_header_configure = gstconfig.h
+built_headers_configure = gstversion.h gstconfig.h
 built_header_make = gstenumtypes.h
 built_source_make = gstenumtypes.c
 EXTRA_libgstreamer_@GST_API_VERSION@_la_SOURCES = \
-	gsttrace.c \
 	gstregistrybinary.c
 
 
@@ -772,6 +767,8 @@
 	gstregistrychunks.c	\
 	gstsample.c		\
 	gstsegment.c		\
+	gststreamcollection.c	\
+	gststreams.c		\
 	gststructure.c		\
 	gstsystemclock.c	\
 	gsttaglist.c		\
@@ -780,7 +777,6 @@
 	gsttaskpool.c		\
 	gsttoc.c		\
 	gsttocsetter.c		\
-	$(GST_TRACE_SRC)	\
 	gsttracer.c		\
 	gsttracerfactory.c	\
 	gsttracerrecord.c		\
@@ -799,8 +795,7 @@
 
 # BUILT_SOURCES are built on make all/check/install before all other targets
 BUILT_SOURCES = \
-        $(built_header_configure)	\
-        $(built_sys_header_configure)	\
+        $(built_headers_configure)	\
         $(built_header_make)		\
         $(built_source_make)
 
@@ -809,7 +804,7 @@
 	$(as_dll_cleanfiles) *.gcno *.gcda *.gcov *.gcov.out \
 	$(am__append_1)
 # DISTCLEANFILES is for files generated by configure
-DISTCLEANFILES = $(built_header_configure) $(built_sys_header_configure)
+DISTCLEANFILES = $(built_headers_configure)
 libgstreamer_@GST_API_VERSION@_la_CFLAGS = \
 	-D_GNU_SOURCE					\
 	-DGST_EXPORTS					\
@@ -882,6 +877,8 @@
 	gstquery.h		\
 	gstsample.h		\
 	gstsegment.h		\
+	gststreamcollection.h	\
+	gststreams.h		\
 	gststructure.h		\
 	gstsystemclock.h	\
 	gsttaglist.h		\
@@ -903,10 +900,8 @@
 
 libgstreamer_@GST_API_VERSION@include_HEADERS = $(gst_headers) math-compat.h
 nodist_libgstreamer_@GST_API_VERSION@include_HEADERS = \
-	$(built_header_configure) $(built_header_make)
+	$(built_headers_configure) $(built_header_make)
 
-configexecincludedir = $(libdir)/gstreamer-@GST_API_VERSION@/include/gst
-nodist_configexecinclude_HEADERS = $(built_sys_header_configure)
 noinst_HEADERS = \
 	gettext.h		\
 	glib-compat-private.h	\
@@ -917,7 +912,6 @@
 	gstquark.h		\
 	gstregistrybinary.h     \
 	gstregistrychunks.h     \
-	gsttrace.h		\
 	gsttracerutils.h		\
 	gst_private.h
 
@@ -1075,6 +1069,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstregistrychunks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstsample.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstsegment.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gststreamcollection.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gststreams.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gststructure.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gstsystemclock.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttaglist.Plo@am__quote@
@@ -1083,7 +1079,6 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttaskpool.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttoc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttocsetter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttrace.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttracer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttracerfactory.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttracerrecord.Plo@am__quote@
@@ -1475,6 +1470,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) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstreamer_@GST_API_VERSION@_la-gstsegment.lo `test -f 'gstsegment.c' || echo '$(srcdir)/'`gstsegment.c
 
+libgstreamer_@GST_API_VERSION@_la-gststreamcollection.lo: gststreamcollection.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) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstreamer_@GST_API_VERSION@_la-gststreamcollection.lo -MD -MP -MF $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gststreamcollection.Tpo -c -o libgstreamer_@GST_API_VERSION@_la-gststreamcollection.lo `test -f 'gststreamcollection.c' || echo '$(srcdir)/'`gststreamcollection.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gststreamcollection.Tpo $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gststreamcollection.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gststreamcollection.c' object='libgstreamer_@GST_API_VERSION@_la-gststreamcollection.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) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstreamer_@GST_API_VERSION@_la-gststreamcollection.lo `test -f 'gststreamcollection.c' || echo '$(srcdir)/'`gststreamcollection.c
+
+libgstreamer_@GST_API_VERSION@_la-gststreams.lo: gststreams.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) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstreamer_@GST_API_VERSION@_la-gststreams.lo -MD -MP -MF $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gststreams.Tpo -c -o libgstreamer_@GST_API_VERSION@_la-gststreams.lo `test -f 'gststreams.c' || echo '$(srcdir)/'`gststreams.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gststreams.Tpo $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gststreams.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gststreams.c' object='libgstreamer_@GST_API_VERSION@_la-gststreams.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) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstreamer_@GST_API_VERSION@_la-gststreams.lo `test -f 'gststreams.c' || echo '$(srcdir)/'`gststreams.c
+
 libgstreamer_@GST_API_VERSION@_la-gststructure.lo: gststructure.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) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstreamer_@GST_API_VERSION@_la-gststructure.lo -MD -MP -MF $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gststructure.Tpo -c -o libgstreamer_@GST_API_VERSION@_la-gststructure.lo `test -f 'gststructure.c' || echo '$(srcdir)/'`gststructure.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gststructure.Tpo $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gststructure.Plo
@@ -1531,13 +1540,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 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstreamer_@GST_API_VERSION@_la-gsttocsetter.lo `test -f 'gsttocsetter.c' || echo '$(srcdir)/'`gsttocsetter.c
 
-libgstreamer_@GST_API_VERSION@_la-gsttrace.lo: gsttrace.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) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstreamer_@GST_API_VERSION@_la-gsttrace.lo -MD -MP -MF $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttrace.Tpo -c -o libgstreamer_@GST_API_VERSION@_la-gsttrace.lo `test -f 'gsttrace.c' || echo '$(srcdir)/'`gsttrace.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttrace.Tpo $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttrace.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gsttrace.c' object='libgstreamer_@GST_API_VERSION@_la-gsttrace.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) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstreamer_@GST_API_VERSION@_la-gsttrace.lo `test -f 'gsttrace.c' || echo '$(srcdir)/'`gsttrace.c
-
 libgstreamer_@GST_API_VERSION@_la-gsttracer.lo: gsttracer.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) $(libgstreamer_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstreamer_@GST_API_VERSION@_la-gsttracer.lo -MD -MP -MF $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttracer.Tpo -c -o libgstreamer_@GST_API_VERSION@_la-gsttracer.lo `test -f 'gsttracer.c' || echo '$(srcdir)/'`gsttracer.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttracer.Tpo $(DEPDIR)/libgstreamer_@GST_API_VERSION@_la-gsttracer.Plo
@@ -1690,27 +1692,6 @@
 	@list='$(libgstreamer_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstreamer_@GST_API_VERSION@includedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
 	dir='$(DESTDIR)$(libgstreamer_@GST_API_VERSION@includedir)'; $(am__uninstall_files_from_dir)
-install-nodist_configexecincludeHEADERS: $(nodist_configexecinclude_HEADERS)
-	@$(NORMAL_INSTALL)
-	@list='$(nodist_configexecinclude_HEADERS)'; test -n "$(configexecincludedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(configexecincludedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(configexecincludedir)" || 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)$(configexecincludedir)'"; \
-	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(configexecincludedir)" || exit $$?; \
-	done
-
-uninstall-nodist_configexecincludeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(nodist_configexecinclude_HEADERS)'; test -n "$(configexecincludedir)" || list=; \
-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	dir='$(DESTDIR)$(configexecincludedir)'; $(am__uninstall_files_from_dir)
 install-nodist_libgstreamer_@GST_API_VERSION@includeHEADERS: $(nodist_libgstreamer_@GST_API_VERSION@include_HEADERS)
 	@$(NORMAL_INSTALL)
 	@list='$(nodist_libgstreamer_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstreamer_@GST_API_VERSION@includedir)" || list=; \
@@ -1893,7 +1874,7 @@
 all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) all-local
 installdirs: installdirs-recursive
 installdirs-am:
-	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(libgstreamer_@GST_API_VERSION@includedir)" "$(DESTDIR)$(configexecincludedir)" "$(DESTDIR)$(libgstreamer_@GST_API_VERSION@includedir)"; do \
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(libgstreamer_@GST_API_VERSION@includedir)" "$(DESTDIR)$(libgstreamer_@GST_API_VERSION@includedir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: $(BUILT_SOURCES)
@@ -1962,8 +1943,7 @@
 
 install-dvi-am:
 
-install-exec-am: install-libLTLIBRARIES \
-	install-nodist_configexecincludeHEADERS
+install-exec-am: install-libLTLIBRARIES
 
 install-html: install-html-recursive
 
@@ -2005,7 +1985,6 @@
 
 uninstall-am: uninstall-girDATA uninstall-libLTLIBRARIES \
 	uninstall-libgstreamer_@GST_API_VERSION@includeHEADERS \
-	uninstall-nodist_configexecincludeHEADERS \
 	uninstall-nodist_libgstreamer_@GST_API_VERSION@includeHEADERS \
 	uninstall-typelibsDATA
 
@@ -2022,7 +2001,7 @@
 	install-html install-html-am install-info install-info-am \
 	install-libLTLIBRARIES \
 	install-libgstreamer_@GST_API_VERSION@includeHEADERS \
-	install-man install-nodist_configexecincludeHEADERS \
+	install-man \
 	install-nodist_libgstreamer_@GST_API_VERSION@includeHEADERS \
 	install-pdf install-pdf-am install-ps install-ps-am \
 	install-strip install-typelibsDATA installcheck \
@@ -2032,7 +2011,6 @@
 	tags tags-am uninstall uninstall-am uninstall-girDATA \
 	uninstall-libLTLIBRARIES \
 	uninstall-libgstreamer_@GST_API_VERSION@includeHEADERS \
-	uninstall-nodist_configexecincludeHEADERS \
 	uninstall-nodist_libgstreamer_@GST_API_VERSION@includeHEADERS \
 	uninstall-typelibsDATA
 
diff --git a/gst/gst.c b/gst/gst.c
index 83b82d1..6c2953d 100644
--- a/gst/gst.c
+++ b/gst/gst.c
@@ -113,7 +113,6 @@
 #include <locale.h>             /* for LC_ALL */
 
 #include "gst.h"
-#include "gsttrace.h"
 
 #define GST_CAT_DEFAULT GST_CAT_GST_INIT
 
@@ -572,10 +571,6 @@
   llf = G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_ERROR | G_LOG_FLAG_FATAL;
   g_log_set_handler (g_log_domain_gstreamer, llf, debug_log_handler, NULL);
 
-#ifndef GST_DISABLE_TRACE
-  _priv_gst_alloc_trace_initialize ();
-#endif
-
   _priv_gst_mini_object_initialize ();
   _priv_gst_quarks_initialize ();
   _priv_gst_allocator_initialize ();
@@ -684,6 +679,7 @@
   g_type_class_ref (gst_lock_flags_get_type ());
   g_type_class_ref (gst_allocator_flags_get_type ());
   g_type_class_ref (gst_stream_flags_get_type ());
+  g_type_class_ref (gst_stream_type_get_type ());
 
   _priv_gst_event_initialize ();
   _priv_gst_buffer_initialize ();
@@ -691,9 +687,9 @@
   _priv_gst_sample_initialize ();
   _priv_gst_context_initialize ();
   _priv_gst_date_time_initialize ();
+  _priv_gst_value_initialize ();
   _priv_gst_tag_initialize ();
   _priv_gst_toc_initialize ();
-  _priv_gst_value_initialize ();
 
   g_type_class_ref (gst_param_spec_fraction_get_type ());
   gst_parse_context_get_type ();
@@ -763,8 +759,41 @@
   /* FIXME this is gross.  why don't debug have categories PluginFeatures? */
   for (g = list2; g; g = g_list_next (g)) {
     GstPlugin *plugin = GST_PLUGIN_CAST (g->data);
+    GList *features, *orig_features;
+
+    if (GST_OBJECT_FLAG_IS_SET (plugin, GST_PLUGIN_FLAG_BLACKLISTED))
+      continue;
 
     gst_plugin_load (plugin);
+    /* Now create one of each feature so the class_init functions
+     * are called, as that's where most debug categories are
+     * registered. FIXME: If debug categories were a plugin feature,
+     * this would be unneeded */
+    orig_features = features =
+        gst_registry_get_feature_list_by_plugin (gst_registry_get (),
+        gst_plugin_get_name (plugin));
+    while (features) {
+      GstPluginFeature *feature;
+
+      if (G_UNLIKELY (features->data == NULL))
+        goto next;
+
+      feature = GST_PLUGIN_FEATURE (features->data);
+      if (GST_IS_ELEMENT_FACTORY (feature)) {
+        GstElementFactory *factory;
+        GstElement *e;
+
+        factory = GST_ELEMENT_FACTORY (feature);
+        e = gst_element_factory_create (factory, NULL);
+        if (e)
+          gst_object_unref (e);
+      }
+
+    next:
+      features = g_list_next (features);
+    }
+
+    gst_plugin_feature_list_free (orig_features);
   }
   g_list_free (list2);
 
@@ -963,10 +992,6 @@
     GST_DEBUG ("already deinitialized");
     return;
   }
-#ifndef GST_DISABLE_GST_DEBUG
-  _priv_gst_tracing_deinit ();
-#endif
-
   g_thread_pool_set_max_unused_threads (0);
   bin_class = GST_BIN_CLASS (g_type_class_peek (gst_bin_get_type ()));
   if (bin_class->pool != NULL) {
@@ -990,11 +1015,18 @@
   gst_object_unref (clock);
 
   _priv_gst_registry_cleanup ();
+  _priv_gst_allocator_cleanup ();
 
-#ifndef GST_DISABLE_TRACE
-  _priv_gst_alloc_trace_deinit ();
+  /* We want to destroy tracers as late as possible for the leaks tracer
+   * but still need to keep the caps system alive as it may have to use
+   * gst_caps_to_string() to display leaked caps. */
+#ifndef GST_DISABLE_GST_DEBUG
+  _priv_gst_tracing_deinit ();
 #endif
 
+  _priv_gst_caps_features_cleanup ();
+  _priv_gst_caps_cleanup ();
+
   g_type_class_unref (g_type_class_peek (gst_object_get_type ()));
   g_type_class_unref (g_type_class_peek (gst_pad_get_type ()));
   g_type_class_unref (g_type_class_peek (gst_element_factory_get_type ()));
@@ -1083,6 +1115,7 @@
   g_type_class_unref (g_type_class_peek (gst_pad_probe_return_get_type ()));
   g_type_class_unref (g_type_class_peek (gst_segment_flags_get_type ()));
   g_type_class_unref (g_type_class_peek (gst_scheduling_flags_get_type ()));
+  g_type_class_unref (g_type_class_peek (gst_stream_type_get_type ()));
 
   g_type_class_unref (g_type_class_peek (gst_control_binding_get_type ()));
   g_type_class_unref (g_type_class_peek (gst_control_source_get_type ()));
diff --git a/gst/gst.h b/gst/gst.h
index 5a5cde6..0b07f41 100644
--- a/gst/gst.h
+++ b/gst/gst.h
@@ -58,6 +58,7 @@
 #include <gst/gstmeta.h>
 #include <gst/gstminiobject.h>
 #include <gst/gstobject.h>
+#include <gst/gststreamcollection.h>
 #include <gst/gstpad.h>
 #include <gst/gstparamspecs.h>
 #include <gst/gstpipeline.h>
@@ -69,6 +70,7 @@
 #include <gst/gstregistry.h>
 #include <gst/gstsample.h>
 #include <gst/gstsegment.h>
+#include <gst/gststreams.h>
 #include <gst/gststructure.h>
 #include <gst/gstsystemclock.h>
 #include <gst/gsttaglist.h>
diff --git a/gst/gst_private.h b/gst/gst_private.h
index ba24b6a..049142c 100644
--- a/gst/gst_private.h
+++ b/gst/gst_private.h
@@ -38,6 +38,9 @@
 #include <stdlib.h>
 #include <string.h>
 
+/* Needed for GST_EXPORT */
+#include "gst/gstconfig.h"
+
 /* Needed for GstRegistry * */
 #include "gstregistry.h"
 #include "gststructure.h"
@@ -127,6 +130,14 @@
 G_GNUC_INTERNAL  void  _priv_gst_toc_initialize (void);
 G_GNUC_INTERNAL  void  _priv_gst_date_time_initialize (void);
 
+/* cleanup functions called from gst_deinit(). */
+G_GNUC_INTERNAL  void  _priv_gst_allocator_cleanup (void);
+G_GNUC_INTERNAL  void  _priv_gst_caps_features_cleanup (void);
+G_GNUC_INTERNAL  void  _priv_gst_caps_cleanup (void);
+
+/* called from gst_task_cleanup_all(). */
+G_GNUC_INTERNAL  void  _priv_gst_element_cleanup (void);
+
 /* Private registry functions */
 G_GNUC_INTERNAL
 gboolean _priv_gst_registry_remove_cache_plugins (GstRegistry *registry);
diff --git a/gst/gstallocator.c b/gst/gstallocator.c
index c6763e1..df983d9 100644
--- a/gst/gstallocator.c
+++ b/gst/gstallocator.c
@@ -536,7 +536,11 @@
 static void
 gst_allocator_sysmem_finalize (GObject * obj)
 {
-  g_warning ("The default memory allocator was freed!");
+  /* Don't raise warnings if we are shutting down */
+  if (_default_allocator)
+    g_warning ("The default memory allocator was freed!");
+
+  ((GObjectClass *) gst_allocator_sysmem_parent_class)->finalize (obj);
 }
 
 static void
@@ -573,7 +577,8 @@
 _priv_gst_allocator_initialize (void)
 {
   g_rw_lock_init (&lock);
-  allocators = g_hash_table_new (g_str_hash, g_str_equal);
+  allocators = g_hash_table_new_full (g_str_hash, g_str_equal, NULL,
+      gst_object_unref);
 
 #ifdef HAVE_GETPAGESIZE
 #ifdef MEMORY_ALIGNMENT_PAGESIZE
@@ -592,6 +597,18 @@
   _default_allocator = gst_object_ref (_sysmem_allocator);
 }
 
+void
+_priv_gst_allocator_cleanup (void)
+{
+  gst_object_unref (_sysmem_allocator);
+  _sysmem_allocator = NULL;
+
+  gst_object_unref (_default_allocator);
+  _default_allocator = NULL;
+
+  g_clear_pointer (&allocators, g_hash_table_unref);
+}
+
 /**
  * gst_memory_new_wrapped:
  * @flags: #GstMemoryFlags
diff --git a/gst/gstbin.c b/gst/gstbin.c
index 9601b8e..820488b 100644
--- a/gst/gstbin.c
+++ b/gst/gstbin.c
@@ -197,11 +197,11 @@
 
   gboolean posted_eos;
   gboolean posted_playing;
+  GstElementFlags suppressed_flags;
 };
 
 typedef struct
 {
-  GstBin *bin;
   guint32 cookie;
   GstState pending;
 } BinContinueData;
@@ -221,11 +221,15 @@
 static void bin_handle_async_done (GstBin * bin, GstStateChangeReturn ret,
     gboolean flag_pending, GstClockTime running_time);
 static void bin_handle_async_start (GstBin * bin);
-static void bin_push_state_continue (BinContinueData * data);
+static void bin_push_state_continue (GstBin * bin, BinContinueData * data);
 static void bin_do_eos (GstBin * bin);
 
 static gboolean gst_bin_add_func (GstBin * bin, GstElement * element);
 static gboolean gst_bin_remove_func (GstBin * bin, GstElement * element);
+static void gst_bin_deep_element_added_func (GstBin * bin, GstBin * sub_bin,
+    GstElement * element);
+static void gst_bin_deep_element_removed_func (GstBin * bin, GstBin * sub_bin,
+    GstElement * element);
 static void gst_bin_update_context (GstBin * bin, GstContext * context);
 static void gst_bin_update_context_unlocked (GstBin * bin,
     GstContext * context);
@@ -249,7 +253,7 @@
 
 static void bin_remove_messages (GstBin * bin, GstObject * src,
     GstMessageType types);
-static void gst_bin_continue_func (BinContinueData * data);
+static void gst_bin_continue_func (GstBin * bin, BinContinueData * data);
 static gint bin_element_is_sink (GstElement * child, GstBin * bin);
 static gint bin_element_is_src (GstElement * child, GstBin * bin);
 
@@ -261,6 +265,8 @@
   ELEMENT_ADDED,
   ELEMENT_REMOVED,
   DO_LATENCY,
+  DEEP_ELEMENT_ADDED,
+  DEEP_ELEMENT_REMOVED,
   LAST_SIGNAL
 };
 
@@ -358,7 +364,6 @@
 {
   GObjectClass *gobject_class;
   GstElementClass *gstelement_class;
-  GError *err;
 
   gobject_class = (GObjectClass *) klass;
   gstelement_class = (GstElementClass *) klass;
@@ -403,6 +408,36 @@
       G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GstBinClass, element_removed), NULL,
       NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1, GST_TYPE_ELEMENT);
   /**
+   * GstBin::deep-element-added:
+   * @bin: the #GstBin
+   * @sub_bin: the #GstBin the element was added to
+   * @element: the #GstElement that was added to @sub_bin
+   *
+   * Will be emitted after the element was added to sub_bin.
+   *
+   * Since: 1.10
+   */
+  gst_bin_signals[DEEP_ELEMENT_ADDED] =
+      g_signal_new ("deep-element-added", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GstBinClass, deep_element_added),
+      NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, GST_TYPE_BIN,
+      GST_TYPE_ELEMENT);
+  /**
+   * GstBin::deep-element-removed:
+   * @bin: the #GstBin
+   * @sub_bin: the #GstBin the element was removed from
+   * @element: the #GstElement that was removed from @sub_bin
+   *
+   * Will be emitted after the element was removed from sub_bin.
+   *
+   * Since: 1.10
+   */
+  gst_bin_signals[DEEP_ELEMENT_REMOVED] =
+      g_signal_new ("deep-element-removed", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GstBinClass, deep_element_removed),
+      NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, GST_TYPE_BIN,
+      GST_TYPE_ELEMENT);
+  /**
    * GstBin::do-latency:
    * @bin: the #GstBin
    *
@@ -469,15 +504,10 @@
   klass->remove_element = GST_DEBUG_FUNCPTR (gst_bin_remove_func);
   klass->handle_message = GST_DEBUG_FUNCPTR (gst_bin_handle_message_func);
 
-  klass->do_latency = GST_DEBUG_FUNCPTR (gst_bin_do_latency_func);
+  klass->deep_element_added = gst_bin_deep_element_added_func;
+  klass->deep_element_removed = gst_bin_deep_element_removed_func;
 
-  GST_DEBUG ("creating bin thread pool");
-  err = NULL;
-  klass->pool =
-      g_thread_pool_new ((GFunc) gst_bin_continue_func, NULL, -1, FALSE, &err);
-  if (err != NULL) {
-    g_critical ("could not alloc threadpool %s", err->message);
-  }
+  klass->do_latency = GST_DEBUG_FUNCPTR (gst_bin_do_latency_func);
 }
 
 static void
@@ -514,7 +544,7 @@
   GstClock **provided_clock_p = &bin->provided_clock;
   GstElement **clock_provider_p = &bin->clock_provider;
 
-  GST_CAT_DEBUG_OBJECT (GST_CAT_REFCOUNTING, object, "dispose");
+  GST_CAT_DEBUG_OBJECT (GST_CAT_REFCOUNTING, object, "%p dispose", object);
 
   GST_OBJECT_LOCK (object);
   gst_object_replace ((GstObject **) child_bus_p, NULL);
@@ -954,7 +984,8 @@
 
     if (message_check (message, &find) == 0) {
       GST_DEBUG_OBJECT (GST_MESSAGE_SRC (message),
-          "deleting message %p of types 0x%08x", message, types);
+          "deleting message %p of type %s (types 0x%08x)", message,
+          GST_MESSAGE_TYPE_NAME (message), types);
       bin->messages = g_list_delete_link (bin->messages, walk);
       gst_message_unref (message);
     } else {
@@ -1083,6 +1114,53 @@
   }
 }
 
+static void
+bin_deep_iterator_foreach (const GValue * item, gpointer user_data)
+{
+  GQueue *queue = user_data;
+
+  g_queue_push_tail (queue, g_value_dup_object (item));
+}
+
+static void
+gst_bin_do_deep_add_remove (GstBin * bin, gint sig_id, const gchar * sig_name,
+    GstElement * element)
+{
+  g_signal_emit (bin, sig_id, 0, bin, element);
+
+  /* When removing a bin, emit deep-element-* for everything in the bin too */
+  if (GST_IS_BIN (element)) {
+    GstIterator *it;
+    GstIteratorResult ires;
+    GQueue elements = G_QUEUE_INIT;
+
+    GST_LOG_OBJECT (bin, "Recursing into bin %" GST_PTR_FORMAT " for %s",
+        element, sig_name);
+    it = gst_bin_iterate_recurse (GST_BIN_CAST (element));
+    do {
+      ires = gst_iterator_foreach (it, bin_deep_iterator_foreach, &elements);
+      if (ires != GST_ITERATOR_DONE) {
+        g_queue_foreach (&elements, (GFunc) g_object_unref, NULL);
+        g_queue_clear (&elements);
+      }
+    } while (ires == GST_ITERATOR_RESYNC);
+    if (ires != GST_ITERATOR_ERROR) {
+      GstElement *e;
+
+      while ((e = g_queue_pop_head (&elements))) {
+        GstObject *parent = gst_object_get_parent (GST_OBJECT_CAST (e));
+
+        GST_LOG_OBJECT (bin, "calling %s for element %" GST_PTR_FORMAT
+            " in bin %" GST_PTR_FORMAT, sig_name, e, parent);
+        g_signal_emit (bin, sig_id, 0, parent, e);
+        gst_object_unref (parent);
+        g_object_unref (e);
+      }
+    }
+    gst_iterator_free (it);
+  }
+}
+
 /* vmethod that adds an element to a bin
  *
  * MT safe
@@ -1129,23 +1207,25 @@
     goto had_parent;
 
   /* if we add a sink we become a sink */
-  if (is_sink) {
+  if (is_sink && !(bin->priv->suppressed_flags & GST_ELEMENT_FLAG_SINK)) {
     GST_CAT_DEBUG_OBJECT (GST_CAT_PARENTAGE, bin, "element \"%s\" was sink",
         elem_name);
     GST_OBJECT_FLAG_SET (bin, GST_ELEMENT_FLAG_SINK);
   }
-  if (is_source) {
+  if (is_source && !(bin->priv->suppressed_flags & GST_ELEMENT_FLAG_SOURCE)) {
     GST_CAT_DEBUG_OBJECT (GST_CAT_PARENTAGE, bin, "element \"%s\" was source",
         elem_name);
     GST_OBJECT_FLAG_SET (bin, GST_ELEMENT_FLAG_SOURCE);
   }
-  if (provides_clock) {
+  if (provides_clock
+      && !(bin->priv->suppressed_flags & GST_ELEMENT_FLAG_PROVIDE_CLOCK)) {
     GST_DEBUG_OBJECT (bin, "element \"%s\" can provide a clock", elem_name);
     clock_message =
         gst_message_new_clock_provide (GST_OBJECT_CAST (element), NULL, TRUE);
     GST_OBJECT_FLAG_SET (bin, GST_ELEMENT_FLAG_PROVIDE_CLOCK);
   }
-  if (requires_clock) {
+  if (requires_clock
+      && !(bin->priv->suppressed_flags & GST_ELEMENT_FLAG_REQUIRE_CLOCK)) {
     GST_DEBUG_OBJECT (bin, "element \"%s\" requires a clock", elem_name);
     GST_OBJECT_FLAG_SET (bin, GST_ELEMENT_FLAG_REQUIRE_CLOCK);
   }
@@ -1298,6 +1378,9 @@
   gst_child_proxy_child_added ((GstChildProxy *) bin, (GObject *) element,
       elem_name);
 
+  gst_bin_do_deep_add_remove (bin, gst_bin_signals[DEEP_ELEMENT_ADDED],
+      "deep-element-added", element);
+
   g_free (elem_name);
 
   return TRUE;
@@ -1328,6 +1411,105 @@
 }
 
 /**
+ * gst_bin_set_suppressed_flags:
+ * @bin: a #GstBin
+ * @flags: the #GstElementFlags to suppress
+ *
+ * Suppress the given flags on the bin. #GstElementFlags of a
+ * child element are propagated when it is added to the bin.
+ * When suppressed flags are set, those specified flags will
+ * not be propagated to the bin.
+ *
+ * MT safe.
+ *
+ * Since: 1.10
+ */
+void
+gst_bin_set_suppressed_flags (GstBin * bin, GstElementFlags flags)
+{
+  g_return_if_fail (GST_IS_BIN (bin));
+
+  GST_OBJECT_LOCK (bin);
+  bin->priv->suppressed_flags = bin->priv->suppressed_flags | flags;
+  GST_OBJECT_UNLOCK (bin);
+
+  GST_DEBUG_OBJECT (bin, "Set suppressed flags(0x%x) to bin '%s'", flags,
+      GST_ELEMENT_NAME (bin));
+}
+
+/**
+ * gst_bin_get_suppressed_flags:
+ * @bin: a #GstBin
+ *
+ * Return the suppressed flags of the bin.
+ *
+ * MT safe.
+ *
+ * Returns: the bin's suppressed #GstElementFlags.
+ *
+ * Since: 1.10
+ */
+GstElementFlags
+gst_bin_get_suppressed_flags (GstBin * bin)
+{
+  GstElementFlags res;
+
+  g_return_val_if_fail (GST_IS_BIN (bin), 0);
+
+  GST_OBJECT_LOCK (bin);
+  res = bin->priv->suppressed_flags;
+  GST_OBJECT_UNLOCK (bin);
+
+  return res;
+}
+
+/* signal vfunc, will be called when a new element was added */
+static void
+gst_bin_deep_element_added_func (GstBin * bin, GstBin * sub_bin,
+    GstElement * child)
+{
+  GstBin *parent_bin;
+
+  parent_bin = (GstBin *) gst_object_get_parent (GST_OBJECT_CAST (bin));
+  if (parent_bin == NULL) {
+    GST_LOG_OBJECT (bin, "no parent, reached top-level");
+    return;
+  }
+
+  GST_LOG_OBJECT (parent_bin, "emitting deep-element-added for element "
+      "%" GST_PTR_FORMAT " which has just been added to %" GST_PTR_FORMAT,
+      sub_bin, child);
+
+  g_signal_emit (parent_bin, gst_bin_signals[DEEP_ELEMENT_ADDED], 0, sub_bin,
+      child);
+
+  gst_object_unref (parent_bin);
+}
+
+/* signal vfunc, will be called when an element was removed */
+static void
+gst_bin_deep_element_removed_func (GstBin * bin, GstBin * sub_bin,
+    GstElement * child)
+{
+  GstBin *parent_bin;
+
+  parent_bin = (GstBin *) gst_object_get_parent (GST_OBJECT_CAST (bin));
+  if (parent_bin == NULL) {
+    GST_LOG_OBJECT (bin, "no parent, reached top-level");
+    return;
+  }
+
+  GST_LOG_OBJECT (parent_bin, "emitting deep-element-removed for element "
+      "%" GST_PTR_FORMAT " which has just been removed from %" GST_PTR_FORMAT,
+      sub_bin, child);
+
+  g_signal_emit (parent_bin, gst_bin_signals[DEEP_ELEMENT_REMOVED], 0, sub_bin,
+      child);
+
+  gst_object_unref (parent_bin);
+}
+
+/**
  * gst_bin_add:
  * @bin: a #GstBin
  * @element: (transfer full): the #GstElement to add
@@ -1483,22 +1665,26 @@
   if (!GST_BIN_IS_NO_RESYNC (bin))
     bin->priv->structure_cookie++;
 
-  if (is_sink && !othersink) {
+  if (is_sink && !othersink
+      && !(bin->priv->suppressed_flags & GST_ELEMENT_FLAG_SINK)) {
     /* we're not a sink anymore */
     GST_DEBUG_OBJECT (bin, "we removed the last sink");
     GST_OBJECT_FLAG_UNSET (bin, GST_ELEMENT_FLAG_SINK);
   }
-  if (is_source && !othersource) {
+  if (is_source && !othersource
+      && !(bin->priv->suppressed_flags & GST_ELEMENT_FLAG_SOURCE)) {
     /* we're not a source anymore */
     GST_DEBUG_OBJECT (bin, "we removed the last source");
     GST_OBJECT_FLAG_UNSET (bin, GST_ELEMENT_FLAG_SOURCE);
   }
-  if (provides_clock && !otherprovider) {
+  if (provides_clock && !otherprovider
+      && !(bin->priv->suppressed_flags & GST_ELEMENT_FLAG_PROVIDE_CLOCK)) {
     /* we're not a clock provider anymore */
     GST_DEBUG_OBJECT (bin, "we removed the last clock provider");
     GST_OBJECT_FLAG_UNSET (bin, GST_ELEMENT_FLAG_PROVIDE_CLOCK);
   }
-  if (requires_clock && !otherrequirer) {
+  if (requires_clock && !otherrequirer
+      && !(bin->priv->suppressed_flags & GST_ELEMENT_FLAG_REQUIRE_CLOCK)) {
     /* we're not a clock requirer anymore */
     GST_DEBUG_OBJECT (bin, "we removed the last clock requirer");
     GST_OBJECT_FLAG_UNSET (bin, GST_ELEMENT_FLAG_REQUIRE_CLOCK);
@@ -1633,6 +1819,9 @@
   gst_child_proxy_child_removed ((GstChildProxy *) bin, (GObject *) element,
       elem_name);
 
+  gst_bin_do_deep_add_remove (bin, gst_bin_signals[DEEP_ELEMENT_REMOVED],
+      "deep-element-removed", element);
+
   g_free (elem_name);
   /* element is really out of our control now */
   gst_object_unref (element);
@@ -1946,14 +2135,24 @@
 } GstBinSortIterator;
 
 static void
+copy_to_queue (gpointer data, gpointer user_data)
+{
+  GstElement *element = data;
+  GQueue *queue = user_data;
+
+  gst_object_ref (element);
+  g_queue_push_tail (queue, element);
+}
+
+static void
 gst_bin_sort_iterator_copy (const GstBinSortIterator * it,
     GstBinSortIterator * copy)
 {
   GHashTableIter iter;
   gpointer key, value;
 
-  copy->queue = it->queue;
-  g_queue_foreach (&copy->queue, (GFunc) gst_object_ref, NULL);
+  g_queue_init (&copy->queue);
+  g_queue_foreach ((GQueue *) & it->queue, copy_to_queue, &copy->queue);
 
   copy->bin = gst_object_ref (it->bin);
   if (it->best)
@@ -3025,13 +3224,11 @@
  * their state, this function will attempt to bring the bin to the next state.
  */
 static void
-gst_bin_continue_func (BinContinueData * data)
+gst_bin_continue_func (GstBin * bin, BinContinueData * data)
 {
-  GstBin *bin;
   GstState current, next, pending;
   GstStateChange transition;
 
-  bin = data->bin;
   pending = data->pending;
 
   GST_DEBUG_OBJECT (bin, "waiting for state lock");
@@ -3065,8 +3262,6 @@
   GST_STATE_UNLOCK (bin);
   GST_DEBUG_OBJECT (bin, "state continue done");
 
-  gst_object_unref (bin);
-  g_slice_free (BinContinueData, data);
   return;
 
 interrupted:
@@ -3074,8 +3269,6 @@
     GST_OBJECT_UNLOCK (bin);
     GST_STATE_UNLOCK (bin);
     GST_DEBUG_OBJECT (bin, "state continue aborted due to intervening change");
-    gst_object_unref (bin);
-    g_slice_free (BinContinueData, data);
     return;
   }
 }
@@ -3095,17 +3288,18 @@
 }
 
 static void
-bin_push_state_continue (BinContinueData * data)
+free_bin_continue_data (BinContinueData * data)
 {
-  GstBinClass *klass;
-  GstBin *bin;
+  g_slice_free (BinContinueData, data);
+}
 
-  /* ref was taken */
-  bin = data->bin;
-  klass = GST_BIN_GET_CLASS (bin);
-
+static void
+bin_push_state_continue (GstBin * bin, BinContinueData * data)
+{
   GST_DEBUG_OBJECT (bin, "pushing continue on thread pool");
-  g_thread_pool_push (klass->pool, data, NULL);
+  gst_element_call_async (GST_ELEMENT_CAST (bin),
+      (GstElementCallAsyncFunc) gst_bin_continue_func, data,
+      (GDestroyNotify) free_bin_continue_data);
 }
 
 /* an element started an async state change, if we were not busy with a state
@@ -3268,8 +3462,6 @@
 
     cont = g_slice_new (BinContinueData);
 
-    /* ref to the bin */
-    cont->bin = gst_object_ref (bin);
     /* cookie to detect concurrent state change */
     cont->cookie = GST_ELEMENT_CAST (bin)->state_cookie;
     /* pending target state */
@@ -3300,7 +3492,7 @@
   if (cont) {
     /* toplevel, start continue state */
     GST_DEBUG_OBJECT (bin, "all async-done, starting state continue");
-    bin_push_state_continue (cont);
+    bin_push_state_continue (bin, cont);
   } else {
     GST_DEBUG_OBJECT (bin, "state change complete");
     GST_STATE_BROADCAST (bin);
diff --git a/gst/gstbin.h b/gst/gstbin.h
index c8ffeff..04afa2d 100644
--- a/gst/gstbin.h
+++ b/gst/gstbin.h
@@ -147,12 +147,18 @@
  * The @handle_message method can be overridden to implement custom
  * message handling.  @handle_message takes ownership of the message, just like
  * #gst_element_post_message.
+ *
+ * The @element_added_deep vfunc will be called when a new element has been
+ * added to any bin inside this bin, so it will also be called if a new child
+ * was added to a sub-bin of this bin. #GstBin implementations that override
+ * this message should chain up to the parent class implementation so the
+ * element-added-deep signal is emitted on all parents.
  */
 struct _GstBinClass {
   GstElementClass parent_class;
 
   /*< private >*/
-  GThreadPool  *pool;
+  GThreadPool  *pool; /* deprecated */
 
   /* signals */
   void		(*element_added)	(GstBin *bin, GstElement *child);
@@ -169,8 +175,13 @@
   /* signal */
   gboolean	(*do_latency)           (GstBin *bin);
 
+  /*< public >*/
+  /* signal */
+  void          (*deep_element_added)   (GstBin *bin, GstBin *sub_bin, GstElement *child);
+  void          (*deep_element_removed) (GstBin *bin, GstBin *sub_bin, GstElement *child);
+
   /*< private >*/
-  gpointer _gst_reserved[GST_PADDING];
+  gpointer _gst_reserved[GST_PADDING-2];
 };
 
 GType		gst_bin_get_type		(void);
@@ -197,6 +208,9 @@
 /* latency */
 gboolean        gst_bin_recalculate_latency      (GstBin * bin);
 
+/* set and get suppressed flags */
+void            gst_bin_set_suppressed_flags (GstBin * bin, GstElementFlags flags);
+GstElementFlags gst_bin_get_suppressed_flags (GstBin * bin);
 
 #ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstBin, gst_object_unref)
diff --git a/gst/gstbuffer.c b/gst/gstbuffer.c
index 7eb3472..14a8825 100644
--- a/gst/gstbuffer.c
+++ b/gst/gstbuffer.c
@@ -306,6 +306,77 @@
   GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_TAG_MEMORY);
 }
 
+/**
+ * gst_buffer_get_flags:
+ * @buffer: a #GstBuffer
+ *
+ * Get the #GstBufferFlags flags set on this buffer.
+ *
+ * Returns: the flags set on this buffer.
+ *
+ * Since: 1.10
+ */
+GstBufferFlags
+gst_buffer_get_flags (GstBuffer * buffer)
+{
+  return (GstBufferFlags) GST_BUFFER_FLAGS (buffer);
+}
+
+/**
+ * gst_buffer_flag_is_set:
+ * @buffer: a #GstBuffer
+ * @flags: the #GstBufferFlags flag to check.
+ *
+ * Gives the status of a specific flag on a buffer.
+ *
+ * Returns: %TRUE if all flags in @flags are found on @buffer.
+ *
+ * Since: 1.10
+ */
+gboolean
+gst_buffer_has_flags (GstBuffer * buffer, GstBufferFlags flags)
+{
+  return GST_BUFFER_FLAG_IS_SET (buffer, flags);
+}
+
+/**
+ * gst_buffer_set_flags:
+ * @buffer: a #GstBuffer
+ * @flags: the #GstBufferFlags to set.
+ *
+ * Sets one or more buffer flags on a buffer.
+ *
+ * Returns: %TRUE if @flags were successfully set on buffer.
+ *
+ * Since: 1.10
+ */
+gboolean
+gst_buffer_set_flags (GstBuffer * buffer, GstBufferFlags flags)
+{
+  GST_BUFFER_FLAG_SET (buffer, flags);
+  return TRUE;
+}
+
+/**
+ * gst_buffer_unset_flags:
+ * @buffer: a #GstBuffer
+ * @flags: the #GstBufferFlags to clear
+ *
+ * Clears one or more buffer flags.
+ *
+ * Returns: true if @flags is successfully cleared from buffer.
+ *
+ * Since: 1.10
+ */
+gboolean
+gst_buffer_unset_flags (GstBuffer * buffer, GstBufferFlags flags)
+{
+  GST_BUFFER_FLAG_UNSET (buffer, flags);
+  return TRUE;
+}
+
+
+
 /* transfer full for return and transfer none for @mem */
 static inline GstMemory *
 _memory_get_exclusive_reference (GstMemory * mem)
@@ -902,7 +973,7 @@
  * Get the amount of memory blocks that this buffer has. This amount is never
  * larger than what gst_buffer_get_max_memory() returns.
  *
- * Returns: (transfer full): the amount of memory block in this buffer.
+ * Returns: the number of memory blocks this buffer is made of.
  */
 guint
 gst_buffer_n_memory (GstBuffer * buffer)
@@ -2091,11 +2162,17 @@
 
   /* create a new slice */
   size = ITEM_SIZE (info);
-  item = g_slice_alloc (size);
+  /* We warn in gst_meta_register() about metas without
+   * init function but let's play safe here and prevent
+   * uninitialized memory
+   */
+  if (!info->init_func)
+    item = g_slice_alloc0 (size);
+  else
+    item = g_slice_alloc (size);
   result = &item->meta;
   result->info = info;
   result->flags = GST_META_FLAG_NONE;
-
   GST_CAT_DEBUG (GST_CAT_BUFFER,
       "alloc metadata %p (%s) of size %" G_GSIZE_FORMAT, result,
       g_type_name (info->type), info->size);
diff --git a/gst/gstbuffer.h b/gst/gstbuffer.h
index 4d72471..41ddbb6 100644
--- a/gst/gstbuffer.h
+++ b/gst/gstbuffer.h
@@ -332,6 +332,13 @@
                                             gsize size, gpointer *dest,
                                             gsize *dest_size);
 
+GstBufferFlags gst_buffer_get_flags        (GstBuffer * buffer);
+gboolean       gst_buffer_has_flags        (GstBuffer * buffer, GstBufferFlags flags);
+gboolean       gst_buffer_set_flags        (GstBuffer * buffer, GstBufferFlags flags);
+gboolean       gst_buffer_unset_flags      (GstBuffer * buffer, GstBufferFlags flags);
+
+
+
 /* refcounting */
 /**
  * gst_buffer_ref:
diff --git a/gst/gstbufferpool.c b/gst/gstbufferpool.c
index a54b42d..133859d 100644
--- a/gst/gstbufferpool.c
+++ b/gst/gstbufferpool.c
@@ -80,6 +80,12 @@
 
 #include "gstbufferpool.h"
 
+#ifdef G_OS_WIN32
+#  ifndef EWOULDBLOCK
+#  define EWOULDBLOCK EAGAIN    /* This is just to placate gcc */
+#  endif
+#endif /* G_OS_WIN32 */
+
 GST_DEBUG_CATEGORY_STATIC (gst_buffer_pool_debug);
 #define GST_CAT_DEFAULT gst_buffer_pool_debug
 
@@ -170,9 +176,9 @@
   gst_allocation_params_init (&priv->params);
   gst_buffer_pool_config_set_allocator (priv->config, priv->allocator,
       &priv->params);
-  /* 1 control write for flushing */
+  /* 1 control write for flushing - the flush token */
   gst_poll_write_control (priv->poll);
-  /* 1 control write for marking that we are not waiting for poll */
+  /* 1 control write for marking that we are not waiting for poll - the wait token */
   gst_poll_write_control (priv->poll);
 
   GST_DEBUG_OBJECT (pool, "created");
@@ -187,7 +193,7 @@
   pool = GST_BUFFER_POOL_CAST (object);
   priv = pool->priv;
 
-  GST_DEBUG_OBJECT (pool, "finalize");
+  GST_DEBUG_OBJECT (pool, "%p finalize", pool);
 
   gst_buffer_pool_set_active (pool, FALSE);
   gst_atomic_queue_unref (priv->queue);
@@ -390,7 +396,17 @@
 
   /* clear the pool */
   while ((buffer = gst_atomic_queue_pop (priv->queue))) {
-    gst_poll_read_control (priv->poll);
+    while (!gst_poll_read_control (priv->poll)) {
+      if (errno == EWOULDBLOCK) {
+        /* We put the buffer into the queue but did not finish writing control
+         * yet, let's wait a bit and retry */
+        g_thread_yield ();
+        continue;
+      } else {
+        /* Critical error but GstPoll already complained */
+        break;
+      }
+    }
     do_free_buffer (pool, buffer);
   }
   return priv->cur_buffers == 0;
@@ -431,6 +447,7 @@
 
   if (flushing) {
     g_atomic_int_set (&pool->flushing, 1);
+    /* Write the flush token to wake up any waiters */
     gst_poll_write_control (priv->poll);
 
     if (pclass->flush_start)
@@ -439,7 +456,19 @@
     if (pclass->flush_stop)
       pclass->flush_stop (pool);
 
-    gst_poll_read_control (priv->poll);
+    while (!gst_poll_read_control (priv->poll)) {
+      if (errno == EWOULDBLOCK) {
+        /* This should not really happen unless flushing and unflushing
+         * happens on different threads. Let's wait a bit to get back flush
+         * token from the thread that was setting it to flushing */
+        g_thread_yield ();
+        continue;
+      } else {
+        /* Critical error but GstPoll already complained */
+        break;
+      }
+    }
+
     g_atomic_int_set (&pool->flushing, 0);
   }
 }
@@ -1080,7 +1109,17 @@
     /* try to get a buffer from the queue */
     *buffer = gst_atomic_queue_pop (priv->queue);
     if (G_LIKELY (*buffer)) {
-      gst_poll_read_control (priv->poll);
+      while (!gst_poll_read_control (priv->poll)) {
+        if (errno == EWOULDBLOCK) {
+          /* We put the buffer into the queue but did not finish writing control
+           * yet, let's wait a bit and retry */
+          g_thread_yield ();
+          continue;
+        } else {
+          /* Critical error but GstPoll already complained */
+          break;
+        }
+      }
       result = GST_FLOW_OK;
       GST_LOG_OBJECT (pool, "acquired buffer %p", *buffer);
       break;
@@ -1105,10 +1144,33 @@
 
     /* now we release the control socket, we wait for a buffer release or
      * flushing */
-    gst_poll_read_control (pool->priv->poll);
-    GST_LOG_OBJECT (pool, "waiting for free buffers or flushing");
-    gst_poll_wait (priv->poll, GST_CLOCK_TIME_NONE);
-    gst_poll_write_control (pool->priv->poll);
+    if (!gst_poll_read_control (pool->priv->poll)) {
+      if (errno == EWOULDBLOCK) {
+        /* This means that we have two threads trying to allocate buffers
+         * already, and the other one already got the wait token. This
+         * means that we only have to wait for the poll now and not write the
+         * token afterwards: we will be woken up once the other thread is
+         * woken up and that one will write the wait token it removed */
+        GST_LOG_OBJECT (pool, "waiting for free buffers or flushing");
+        gst_poll_wait (priv->poll, GST_CLOCK_TIME_NONE);
+      } else {
+        /* This is a critical error, GstPoll already gave a warning */
+        result = GST_FLOW_ERROR;
+        break;
+      }
+    } else {
+      /* We're the first thread waiting, we got the wait token and have to
+       * write it again later 
+       * OR
+       * We're a second thread and just consumed the flush token and block all
+       * other threads, in which case we must not wait and give it back
+       * immediately */
+      if (!GST_BUFFER_POOL_IS_FLUSHING (pool)) {
+        GST_LOG_OBJECT (pool, "waiting for free buffers or flushing");
+        gst_poll_wait (priv->poll, GST_CLOCK_TIME_NONE);
+      }
+      gst_poll_write_control (pool->priv->poll);
+    }
   }
 
   return result;
diff --git a/gst/gstbus.c b/gst/gstbus.c
index b8c2995..f94c18c 100644
--- a/gst/gstbus.c
+++ b/gst/gstbus.c
@@ -79,6 +79,12 @@
 #include "gstbus.h"
 #include "glib-compat-private.h"
 
+#ifdef G_OS_WIN32
+#  ifndef EWOULDBLOCK
+#  define EWOULDBLOCK EAGAIN    /* This is just to placate gcc */
+#  endif
+#endif /* G_OS_WIN32 */
+
 #define GST_CAT_DEFAULT GST_CAT_BUS
 /* bus signals */
 enum
@@ -515,8 +521,24 @@
         gst_atomic_queue_length (bus->priv->queue));
 
     while ((message = gst_atomic_queue_pop (bus->priv->queue))) {
-      if (bus->priv->poll)
-        gst_poll_read_control (bus->priv->poll);
+      if (bus->priv->poll) {
+        while (!gst_poll_read_control (bus->priv->poll)) {
+          if (errno == EWOULDBLOCK) {
+            /* Retry, this can happen if pushing to the queue has finished,
+             * popping here succeeded but writing control did not finish
+             * before we got to this line. */
+            /* Give other threads the chance to do something */
+            g_thread_yield ();
+            continue;
+          } else {
+            /* This is a real error and means that either the bus is in an
+             * inconsistent state, or the GstPoll is invalid. GstPoll already
+             * prints a critical warning about this, no need to do that again
+             * ourselves */
+            break;
+          }
+        }
+      }
 
       GST_DEBUG_OBJECT (bus, "got message %p, %s from %s, type mask is %u",
           message, GST_MESSAGE_TYPE_NAME (message),
diff --git a/gst/gstcaps.c b/gst/gstcaps.c
index e2145b3..7c68129 100644
--- a/gst/gstcaps.c
+++ b/gst/gstcaps.c
@@ -145,6 +145,15 @@
       G_TYPE_STRING, gst_caps_transform_to_string);
 }
 
+void
+_priv_gst_caps_cleanup (void)
+{
+  gst_caps_unref (_gst_caps_any);
+  _gst_caps_any = NULL;
+  gst_caps_unref (_gst_caps_none);
+  _gst_caps_none = NULL;
+}
+
 GstCapsFeatures *
 __gst_caps_get_features_unchecked (const GstCaps * caps, guint idx)
 {
@@ -414,6 +423,9 @@
 
     *caps = gst_caps_from_string (string);
 
+    /* Caps generated from static caps are usually leaked */
+    GST_MINI_OBJECT_FLAG_SET (*caps, GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED);
+
     /* convert to string */
     if (G_UNLIKELY (*caps == NULL))
       g_critical ("Could not convert static caps \"%s\"", string);
diff --git a/gst/gstcapsfeatures.c b/gst/gstcapsfeatures.c
index ea06f0c..95e4bae 100644
--- a/gst/gstcapsfeatures.c
+++ b/gst/gstcapsfeatures.c
@@ -105,6 +105,18 @@
       &static_caps_features_parent_refcount);
 }
 
+void
+_priv_gst_caps_features_cleanup (void)
+{
+  gst_caps_features_set_parent_refcount (_gst_caps_features_any, NULL);
+  gst_caps_features_free (_gst_caps_features_any);
+  _gst_caps_features_any = NULL;
+  gst_caps_features_set_parent_refcount
+      (_gst_caps_features_memory_system_memory, NULL);
+  gst_caps_features_free (_gst_caps_features_memory_system_memory);
+  _gst_caps_features_memory_system_memory = NULL;
+}
+
 gboolean
 gst_is_caps_features (gconstpointer obj)
 {
diff --git a/gst/gstclock.c b/gst/gstclock.c
index 7e9be2f..395fe76 100644
--- a/gst/gstclock.c
+++ b/gst/gstclock.c
@@ -108,12 +108,6 @@
 #include "gstutils.h"
 #include "glib-compat-private.h"
 
-#ifndef GST_DISABLE_TRACE
-/* #define GST_WITH_ALLOC_TRACE */
-#include "gsttrace.h"
-static GstAllocTrace *_gst_clock_entry_trace;
-#endif
-
 /* #define DEBUGGING_ENABLED */
 
 #define DEFAULT_WINDOW_SIZE             32
@@ -246,9 +240,9 @@
   GstClockEntry *entry;
 
   entry = g_slice_new (GstClockEntry);
-#ifndef GST_DISABLE_TRACE
-  _gst_alloc_trace_new (_gst_clock_entry_trace, entry);
-#endif
+
+  /* FIXME: add tracer hook for struct allocations such as clock entries */
+
   GST_CAT_DEBUG_OBJECT (GST_CAT_CLOCK, clock,
       "created entry %p, time %" GST_TIME_FORMAT, entry, GST_TIME_ARGS (time));
 
@@ -358,9 +352,8 @@
   if (entry->destroy_data)
     entry->destroy_data (entry->user_data);
 
-#ifndef GST_DISABLE_TRACE
-  _gst_alloc_trace_free (_gst_clock_entry_trace, id);
-#endif
+  /* FIXME: add tracer hook for struct allocations such as clock entries */
+
   g_slice_free (GstClockEntry, id);
 }
 
@@ -680,10 +673,6 @@
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
-#ifndef GST_DISABLE_TRACE
-  _gst_clock_entry_trace = _gst_alloc_trace_register ("GstClockEntry", -1);
-#endif
-
   gobject_class->dispose = gst_clock_dispose;
   gobject_class->finalize = gst_clock_finalize;
   gobject_class->set_property = gst_clock_set_property;
@@ -1474,7 +1463,7 @@
   {
     /* no valid regression has been done, ignore the result then */
     GST_CLOCK_SLAVE_UNLOCK (clock);
-    return TRUE;
+    return FALSE;
   }
 }
 
diff --git a/gst/gstconfig.h.in b/gst/gstconfig.h.in
index 8460281..c2e8361 100644
--- a/gst/gstconfig.h.in
+++ b/gst/gstconfig.h.in
@@ -55,11 +55,8 @@
 #if 0
 #define GST_DISABLE_GST_DEBUG 1
 #define GST_DISABLE_PARSE 1
-#define GST_DISABLE_TRACE 1
-#define GST_DISABLE_ALLOC_TRACE 1
 #define GST_DISABLE_REGISTRY 1
 #define GST_DISABLE_PLUGIN 1
-#define GST_HAVE_GLIB_2_8 1
 #endif
 
 /***** default padding of structures *****/
@@ -86,22 +83,6 @@
 @GST_DISABLE_PARSE_DEFINE@
 
 /**
- * GST_DISABLE_TRACE:
- *
- * Configures the inclusion of a resource tracing facility
- * (seems to be unused)
- */
-@GST_DISABLE_TRACE_DEFINE@
-
-/**
- * GST_DISABLE_ALLOC_TRACE:
- *
- * Configures the use of a memory tracer based on the resource tracer
- * if TRACE is disabled, ALLOC_TRACE is disabled as well
- */
-@GST_DISABLE_ALLOC_TRACE_DEFINE@
-
-/**
  * GST_DISABLE_REGISTRY:
  *
  * Configures the use of the plugin registry.
@@ -114,8 +95,22 @@
 /* Configures the use of external plugins */
 @GST_DISABLE_PLUGIN_DEFINE@
 
-/* whether or not the CPU supports unaligned access */
-@GST_HAVE_UNALIGNED_ACCESS_DEFINE@
+/* Whether or not the CPU supports unaligned access
+ * The macros used are defined consistently by GCC, Clang, MSVC, Sun, and ICC
+ *
+ * References:
+ * https://sourceforge.net/p/predef/wiki/Architectures/
+ * https://msdn.microsoft.com/en-us/library/b0084kay.aspx
+ * http://docs.oracle.com/cd/E19205-01/820-4155/c++_faq.html#Vers6
+ * https://software.intel.com/en-us/node/583402
+ */
+#if defined(__alpha__) || defined(__arm__) || defined(__aarch64__) || defined(__bfin) || defined(__hppa__) || defined(__mips__) || defined(__sh__) || defined(__SH4__) || defined(__sparc__) || defined(__sparc) || defined(__ia64__) || defined(_M_ALPHA) || defined(_M_ARM) || defined(_M_IA64)
+#  define GST_HAVE_UNALIGNED_ACCESS 0
+#elif defined(__i386__) || defined(__i386) || defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__ppc__) || defined(__ppc64__) || defined(__powerpc__) || defined(__powerpc64__) || defined(__m68k__) || defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) || defined(__s390__) || defined(__s390x__) || defined(__zarch__)
+#  define GST_HAVE_UNALIGNED_ACCESS 1
+#else
+#  error "Could not detect architecture; don't know whether it supports unaligned access! Please file a bug."
+#endif
 
 /**
  * GST_EXPORT:
@@ -133,20 +128,30 @@
  * On Windows, this exports the plugin definition from the DLL.
  * On other platforms, this gets defined as a no-op.
  */
-#ifdef _MSC_VER
-#define GST_PLUGIN_EXPORT __declspec(dllexport) extern
-#ifdef GST_EXPORTS
-#define GST_EXPORT __declspec(dllexport) extern
+/* Only use __declspec(dllexport/import) when we have been built with MSVC or
+ * the user is linking to us with MSVC. The only remaining case is when we were
+ * built with MinGW and are linking with MinGW in which case we rely on the
+ * linker to auto-export/import symbols. Of course all this is only used when
+ * not linking statically.
+ *
+ * NOTE: To link to GStreamer statically on Windows, you must define
+ * GST_STATIC_COMPILATION or the prototypes will cause the compiler to search
+ * for the symbol inside a DLL.
+ */
+#if (@GSTCONFIG_BUILT_WITH_MSVC@ || defined(_MSC_VER)) && !defined(GST_STATIC_COMPILATION)
+# define GST_PLUGIN_EXPORT __declspec(dllexport)
+# ifdef GST_EXPORTS
+#  define GST_EXPORT __declspec(dllexport)
+# else
+#  define GST_EXPORT __declspec(dllimport) extern
+# endif
 #else
-#define GST_EXPORT __declspec(dllimport) extern
-#endif
-#else /* not _MSC_VER */
-#define GST_PLUGIN_EXPORT
-#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
-#define GST_EXPORT extern __attribute__ ((visibility ("default")))
-#else
-#define GST_EXPORT extern
-#endif
+# define GST_PLUGIN_EXPORT
+# if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
+#  define GST_EXPORT extern __attribute__ ((visibility ("default")))
+# else
+#  define GST_EXPORT extern
+# endif
 #endif
 
 #endif /* __GST_CONFIG_H__ */
diff --git a/gst/gstdebugutils.c b/gst/gstdebugutils.c
index 4464883..9555a44 100644
--- a/gst/gstdebugutils.c
+++ b/gst/gstdebugutils.c
@@ -132,7 +132,59 @@
       g_value_init (&value, property->value_type);
       g_object_get_property (G_OBJECT (object), property->name, &value);
       if (!(g_param_value_defaults (property, &value))) {
-        tmp = g_strdup_value_contents (&value);
+        /* we need to serialise enums and flags ourselves to make sure the
+         * enum/flag nick is used and not the enum/flag name, which would be the
+         * C header enum/flag for public enums/flags, but for element-specific
+         * enums/flags we abuse the name field for the property description,
+         * and we don't want to print that in the dot file. The nick will
+         * always work, and it's also shorter. */
+        if (G_VALUE_HOLDS_ENUM (&value)) {
+          GEnumClass *e_class = g_type_class_ref (G_VALUE_TYPE (&value));
+          gint idx, e_val;
+
+          tmp = NULL;
+          e_val = g_value_get_enum (&value);
+          for (idx = 0; idx < e_class->n_values; ++idx) {
+            if (e_class->values[idx].value == e_val) {
+              tmp = g_strdup (e_class->values[idx].value_nick);
+              break;
+            }
+          }
+          if (tmp == NULL) {
+            g_value_unset (&value);
+            continue;
+          }
+        } else if (G_VALUE_HOLDS_FLAGS (&value)) {
+          GFlagsClass *f_class = g_type_class_ref (G_VALUE_TYPE (&value));
+          GFlagsValue *vals = f_class->values;
+          GString *s = NULL;
+          guint idx, flags_left;
+
+          s = g_string_new (NULL);
+
+          /* we assume the values are sorted from lowest to highest value */
+          flags_left = g_value_get_flags (&value);
+          idx = f_class->n_values;
+          while (idx > 0) {
+            --idx;
+            if (vals[idx].value != 0
+                && (flags_left & vals[idx].value) == vals[idx].value) {
+              if (s->len > 0)
+                g_string_prepend_c (s, '+');
+              g_string_prepend (s, vals[idx].value_nick);
+              flags_left -= vals[idx].value;
+              if (flags_left == 0)
+                break;
+            }
+          }
+
+          if (s->len == 0)
+            g_string_assign (s, "(none)");
+
+          tmp = g_string_free (s, FALSE);
+        } else {
+          tmp = g_strdup_value_contents (&value);
+        }
         value_str = g_strescape (tmp, NULL);
         g_free (tmp);
 
diff --git a/gst/gstdevice.c b/gst/gstdevice.c
index 55f5604..678fe14 100644
--- a/gst/gstdevice.c
+++ b/gst/gstdevice.c
@@ -195,7 +195,7 @@
  * @name: (allow-none): name of new element, or %NULL to automatically
  * create a unique name.
  *
- * Creates the element with all of the required paramaters set to use
+ * Creates the element with all of the required parameters set to use
  * this device.
  *
  * Returns: (transfer full): a new #GstElement configured to use this device
diff --git a/gst/gstdevicemonitor.c b/gst/gstdevicemonitor.c
index 0d31eb0..d03a813 100644
--- a/gst/gstdevicemonitor.c
+++ b/gst/gstdevicemonitor.c
@@ -49,12 +49,14 @@
  *          name = gst_device_get_display_name (device);
  *          g_print("Device added: %s\n", name);
  *          g_free (name);
+ *          gst_object_unref (device);
  *          break;
  *        case GST_MESSAGE_DEVICE_REMOVED:
  *          gst_message_parse_device_removed (message, &device);
  *          name = gst_device_get_display_name (device);
  *          g_print("Device removed: %s\n", name);
  *          g_free (name);
+ *          gst_object_unref (device);
  *          break;
  *        default:
  *          break;
diff --git a/gst/gstdeviceprovider.c b/gst/gstdeviceprovider.c
index 363b1b8..e7972bb 100644
--- a/gst/gstdeviceprovider.c
+++ b/gst/gstdeviceprovider.c
@@ -74,7 +74,6 @@
 static void gst_device_provider_class_init (GstDeviceProviderClass * klass);
 static void gst_device_provider_init (GstDeviceProvider * element);
 static void gst_device_provider_base_class_init (gpointer g_class);
-static void gst_device_provider_base_class_finalize (gpointer g_class);
 static void gst_device_provider_dispose (GObject * object);
 static void gst_device_provider_finalize (GObject * object);
 
@@ -90,7 +89,7 @@
     static const GTypeInfo element_info = {
       sizeof (GstDeviceProviderClass),
       gst_device_provider_base_class_init,
-      gst_device_provider_base_class_finalize,
+      NULL,                     /* base_class_finalize */
       (GClassInitFunc) gst_device_provider_class_init,
       NULL,
       NULL,
@@ -127,14 +126,6 @@
 }
 
 static void
-gst_device_provider_base_class_finalize (gpointer g_class)
-{
-  GstDeviceProviderClass *klass = GST_DEVICE_PROVIDER_CLASS (g_class);
-
-  gst_structure_free (klass->metadata);
-}
-
-static void
 gst_device_provider_class_init (GstDeviceProviderClass * klass)
 {
   GObjectClass *gobject_class = (GObjectClass *) klass;
diff --git a/gst/gstdeviceproviderfactory.c b/gst/gstdeviceproviderfactory.c
index a28a0bd..305e214 100644
--- a/gst/gstdeviceproviderfactory.c
+++ b/gst/gstdeviceproviderfactory.c
@@ -275,8 +275,10 @@
     goto no_type;
 
   device_provider = g_atomic_pointer_get (&newfactory->provider);
-  if (device_provider)
+  if (device_provider) {
+    gst_object_unref (factory);
     return gst_object_ref (device_provider);
+  }
 
   /* create an instance of the device provider, cast so we don't assert on NULL
    * also set name as early as we can
@@ -292,8 +294,12 @@
    * an device provider at the same moment
    */
   oclass = GST_DEVICE_PROVIDER_GET_CLASS (device_provider);
-  if (!g_atomic_pointer_compare_and_exchange (&oclass->factory, NULL, factory))
+  if (!g_atomic_pointer_compare_and_exchange (&oclass->factory, NULL, factory)) {
     gst_object_unref (factory);
+  } else {
+    /* This ref will never be dropped as the class is never destroyed */
+    GST_OBJECT_FLAG_SET (factory, GST_OBJECT_FLAG_MAY_BE_LEAKED);
+  }
 
   gst_object_ref_sink (device_provider);
 
diff --git a/gst/gstelement.c b/gst/gstelement.c
index 60b4425..dc76fac 100644
--- a/gst/gstelement.c
+++ b/gst/gstelement.c
@@ -118,7 +118,6 @@
 static void gst_element_class_init (GstElementClass * klass);
 static void gst_element_init (GstElement * element);
 static void gst_element_base_class_init (gpointer g_class);
-static void gst_element_base_class_finalize (gpointer g_class);
 
 static void gst_element_constructed (GObject * object);
 static void gst_element_dispose (GObject * object);
@@ -147,9 +146,13 @@
     * gst_element_class_get_request_pad_template (GstElementClass *
     element_class, const gchar * name);
 
+static void gst_element_call_async_func (gpointer data, gpointer user_data);
+
 static GstObjectClass *parent_class = NULL;
 static guint gst_element_signals[LAST_SIGNAL] = { 0 };
 
+static GThreadPool *gst_element_pool = NULL;
+
 /* this is used in gstelementfactory.c:gst_element_register() */
 GQuark __gst_elementclass_factory = 0;
 
@@ -163,7 +166,7 @@
     static const GTypeInfo element_info = {
       sizeof (GstElementClass),
       gst_element_base_class_init,
-      gst_element_base_class_finalize,
+      NULL,                     /* base_class_finalize */
       (GClassInitFunc) gst_element_class_init,
       NULL,
       NULL,
@@ -184,6 +187,21 @@
 }
 
 static void
+gst_element_setup_thread_pool (void)
+{
+  GError *err = NULL;
+
+  GST_DEBUG ("creating element thread pool");
+  gst_element_pool =
+      g_thread_pool_new ((GFunc) gst_element_call_async_func, NULL, -1, FALSE,
+      &err);
+  if (err != NULL) {
+    g_critical ("could not alloc threadpool %s", err->message);
+    g_clear_error (&err);
+  }
+}
+
+static void
 gst_element_class_init (GstElementClass * klass)
 {
   GObjectClass *gobject_class;
@@ -247,6 +265,8 @@
   klass->set_context = GST_DEBUG_FUNCPTR (gst_element_set_context_default);
 
   klass->elementfactory = NULL;
+
+  gst_element_setup_thread_pool ();
 }
 
 static void
@@ -282,17 +302,6 @@
 }
 
 static void
-gst_element_base_class_finalize (gpointer g_class)
-{
-  GstElementClass *klass = GST_ELEMENT_CLASS (g_class);
-
-  g_list_foreach (klass->padtemplates, (GFunc) gst_object_unref, NULL);
-  g_list_free (klass->padtemplates);
-
-  gst_structure_free (klass->metadata);
-}
-
-static void
 gst_element_init (GstElement * element)
 {
   GST_STATE (element) = GST_STATE_NULL;
@@ -1810,7 +1819,7 @@
 }
 
 /**
- * gst_element_message_full:
+ * gst_element_message_full_with_details:
  * @element:  a #GstElement to send message from
  * @type:     the #GstMessageType
  * @domain:   the GStreamer GError domain this message belongs to
@@ -1824,18 +1833,20 @@
  * @file:     the source code file where the error was generated
  * @function: the source code function where the error was generated
  * @line:     the source code line where the error was generated
+ * @structure:(transfer full): optional details structure
  *
  * Post an error, warning or info message on the bus from inside an element.
  *
  * @type must be of #GST_MESSAGE_ERROR, #GST_MESSAGE_WARNING or
  * #GST_MESSAGE_INFO.
  *
- * MT safe.
+ * Since: 1.10
  */
-void gst_element_message_full
+void gst_element_message_full_with_details
     (GstElement * element, GstMessageType type,
     GQuark domain, gint code, gchar * text,
-    gchar * debug, const gchar * file, const gchar * function, gint line)
+    gchar * debug, const gchar * file, const gchar * function, gint line,
+    GstStructure * structure)
 {
   GError *gerror = NULL;
   gchar *name;
@@ -1882,20 +1893,24 @@
   switch (type) {
     case GST_MESSAGE_ERROR:
       message =
-          gst_message_new_error (GST_OBJECT_CAST (element), gerror, sent_debug);
+          gst_message_new_error_with_details (GST_OBJECT_CAST (element), gerror,
+          sent_debug, structure);
       break;
     case GST_MESSAGE_WARNING:
-      message = gst_message_new_warning (GST_OBJECT_CAST (element), gerror,
-          sent_debug);
+      message =
+          gst_message_new_warning_with_details (GST_OBJECT_CAST (element),
+          gerror, sent_debug, structure);
       break;
     case GST_MESSAGE_INFO:
-      message = gst_message_new_info (GST_OBJECT_CAST (element), gerror,
-          sent_debug);
+      message =
+          gst_message_new_info_with_details (GST_OBJECT_CAST (element), gerror,
+          sent_debug, structure);
       break;
     default:
       g_assert_not_reached ();
       break;
   }
+
   gst_element_post_message (element, message);
 
   GST_CAT_INFO_OBJECT (GST_CAT_ERROR_SYSTEM, element, "posted %s message: %s",
@@ -1908,6 +1923,38 @@
 }
 
 /**
+ * gst_element_message_full:
+ * @element:  a #GstElement to send message from
+ * @type:     the #GstMessageType
+ * @domain:   the GStreamer GError domain this message belongs to
+ * @code:     the GError code belonging to the domain
+ * @text:     (allow-none) (transfer full): an allocated text string to be used
+ *            as a replacement for the default message connected to code,
+ *            or %NULL
+ * @debug:    (allow-none) (transfer full): an allocated debug message to be
+ *            used as a replacement for the default debugging information,
+ *            or %NULL
+ * @file:     the source code file where the error was generated
+ * @function: the source code function where the error was generated
+ * @line:     the source code line where the error was generated
+ *
+ * Post an error, warning or info message on the bus from inside an element.
+ *
+ * @type must be of #GST_MESSAGE_ERROR, #GST_MESSAGE_WARNING or
+ * #GST_MESSAGE_INFO.
+ *
+ * MT safe.
+ */
+void gst_element_message_full
+    (GstElement * element, GstMessageType type,
+    GQuark domain, gint code, gchar * text,
+    gchar * debug, const gchar * file, const gchar * function, gint line)
+{
+  gst_element_message_full_with_details (element, type, domain, code, text,
+      debug, file, function, line, NULL);
+}
+
+/**
  * gst_element_is_locked_state:
  * @element: a #GstElement.
  *
@@ -2944,7 +2991,7 @@
 
   oclass = GST_ELEMENT_GET_CLASS (element);
 
-  GST_CAT_INFO_OBJECT (GST_CAT_REFCOUNTING, element, "dispose");
+  GST_CAT_INFO_OBJECT (GST_CAT_REFCOUNTING, element, "%p dispose", element);
 
   if (GST_STATE (element) != GST_STATE_NULL)
     goto not_null;
@@ -2989,7 +3036,8 @@
   g_list_free_full (element->contexts, (GDestroyNotify) gst_context_unref);
   GST_OBJECT_UNLOCK (element);
 
-  GST_CAT_INFO_OBJECT (GST_CAT_REFCOUNTING, element, "parent class dispose");
+  GST_CAT_INFO_OBJECT (GST_CAT_REFCOUNTING, element, "%p parent class dispose",
+      element);
 
   G_OBJECT_CLASS (parent_class)->dispose (object);
 
@@ -3020,12 +3068,13 @@
 {
   GstElement *element = GST_ELEMENT_CAST (object);
 
-  GST_CAT_INFO_OBJECT (GST_CAT_REFCOUNTING, element, "finalize");
+  GST_CAT_INFO_OBJECT (GST_CAT_REFCOUNTING, element, "%p finalize", element);
 
   g_cond_clear (&element->state_cond);
   g_rec_mutex_clear (&element->state_lock);
 
-  GST_CAT_INFO_OBJECT (GST_CAT_REFCOUNTING, element, "finalize parent");
+  GST_CAT_INFO_OBJECT (GST_CAT_REFCOUNTING, element, "%p finalize parent",
+      element);
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
@@ -3243,3 +3292,204 @@
 
   return ret;
 }
+
+static void
+gst_element_property_post_notify_msg (GstElement * element, GObject * obj,
+    GParamSpec * pspec, gboolean include_value)
+{
+  GValue val = G_VALUE_INIT;
+  GValue *v;
+
+  GST_LOG_OBJECT (element, "property '%s' of object %" GST_PTR_FORMAT " has "
+      "changed, posting message with%s value", pspec->name, obj,
+      include_value ? "" : "out");
+
+  if (include_value && (pspec->flags & G_PARAM_READABLE) != 0) {
+    g_value_init (&val, pspec->value_type);
+    g_object_get_property (obj, pspec->name, &val);
+    v = &val;
+  } else {
+    v = NULL;
+  }
+  gst_element_post_message (element,
+      gst_message_new_property_notify (GST_OBJECT_CAST (obj), pspec->name, v));
+}
+
+static void
+gst_element_property_deep_notify_cb (GstElement * element, GObject * prop_obj,
+    GParamSpec * pspec, gpointer user_data)
+{
+  gboolean include_value = GPOINTER_TO_INT (user_data);
+
+  gst_element_property_post_notify_msg (element, prop_obj, pspec,
+      include_value);
+}
+
+static void
+gst_element_property_notify_cb (GObject * obj, GParamSpec * pspec,
+    gpointer user_data)
+{
+  gboolean include_value = GPOINTER_TO_INT (user_data);
+
+  gst_element_property_post_notify_msg (GST_ELEMENT_CAST (obj), obj, pspec,
+      include_value);
+}
+
+/**
+ * gst_element_add_property_notify_watch:
+ * @element: a #GstElement to watch for property changes
+ * @property_name: (allow-none): name of property to watch for changes, or
+ *     NULL to watch all properties
+ * @include_value: whether to include the new property value in the message
+ *
+ * Returns: a watch id, which can be used in connection with
+ *     gst_element_remove_property_notify_watch() to remove the watch again.
+ *
+ * Since: 1.10
+ */
+gulong
+gst_element_add_property_notify_watch (GstElement * element,
+    const gchar * property_name, gboolean include_value)
+{
+  const gchar *sep;
+  gchar *signal_name;
+  gulong id;
+
+  g_return_val_if_fail (GST_IS_ELEMENT (element), 0);
+
+  sep = (property_name != NULL) ? "::" : NULL;
+  signal_name = g_strconcat ("notify", sep, property_name, NULL);
+  id = g_signal_connect (element, signal_name,
+      G_CALLBACK (gst_element_property_notify_cb),
+      GINT_TO_POINTER (include_value));
+  g_free (signal_name);
+
+  return id;
+}
+
+/**
+ * gst_element_add_property_deep_notify_watch:
+ * @element: a #GstElement to watch (recursively) for property changes
+ * @property_name: (allow-none): name of property to watch for changes, or
+ *     NULL to watch all properties
+ * @include_value: whether to include the new property value in the message
+ *
+ * Returns: a watch id, which can be used in connection with
+ *     gst_element_remove_property_notify_watch() to remove the watch again.
+ *
+ * Since: 1.10
+ */
+gulong
+gst_element_add_property_deep_notify_watch (GstElement * element,
+    const gchar * property_name, gboolean include_value)
+{
+  const gchar *sep;
+  gchar *signal_name;
+  gulong id;
+
+  g_return_val_if_fail (GST_IS_ELEMENT (element), 0);
+
+  sep = (property_name != NULL) ? "::" : NULL;
+  signal_name = g_strconcat ("deep-notify", sep, property_name, NULL);
+  id = g_signal_connect (element, signal_name,
+      G_CALLBACK (gst_element_property_deep_notify_cb),
+      GINT_TO_POINTER (include_value));
+  g_free (signal_name);
+
+  return id;
+}
+
+/**
+ * gst_element_remove_property_notify_watch:
+ * @element: a #GstElement being watched for property changes
+ * @watch_id: watch id to remove
+ *
+ * Since: 1.10
+ */
+void
+gst_element_remove_property_notify_watch (GstElement * element, gulong watch_id)
+{
+  g_signal_handler_disconnect (element, watch_id);
+}
+
+typedef struct
+{
+  GstElement *element;
+  GstElementCallAsyncFunc func;
+  gpointer user_data;
+  GDestroyNotify destroy_notify;
+} GstElementCallAsyncData;
+
+static void
+gst_element_call_async_func (gpointer data, gpointer user_data)
+{
+  GstElementCallAsyncData *async_data = data;
+
+  async_data->func (async_data->element, async_data->user_data);
+  if (async_data->destroy_notify)
+    async_data->destroy_notify (async_data->user_data);
+  gst_object_unref (async_data->element);
+  g_free (async_data);
+}
+
+/**
+ * gst_element_call_async:
+ * @element: a #GstElement
+ * @func: Function to call asynchronously from another thread
+ * @user_data: Data to pass to @func
+ * @destroy_notify: GDestroyNotify for @user_data
+ *
+ * Calls @func from another thread and passes @user_data to it. This is to be
+ * used for cases when a state change has to be performed from a streaming
+ * thread, directly via gst_element_set_state() or indirectly e.g. via SEEK
+ * events.
+ *
+ * Calling those functions directly from the streaming thread will cause
+ * deadlocks in many situations, as they might involve waiting for the
+ * streaming thread to shut down from this very streaming thread.
+ *
+ * MT safe.
+ *
+ * Since: 1.10
+ */
+void
+gst_element_call_async (GstElement * element, GstElementCallAsyncFunc func,
+    gpointer user_data, GDestroyNotify destroy_notify)
+{
+  GstElementCallAsyncData *async_data;
+
+  g_return_if_fail (GST_IS_ELEMENT (element));
+
+  async_data = g_new0 (GstElementCallAsyncData, 1);
+  async_data->element = gst_object_ref (element);
+  async_data->func = func;
+  async_data->user_data = user_data;
+  async_data->destroy_notify = destroy_notify;
+
+  g_thread_pool_push (gst_element_pool, async_data, NULL);
+}
+
+void
+_priv_gst_element_cleanup (void)
+{
+  if (gst_element_pool) {
+    g_thread_pool_free (gst_element_pool, FALSE, TRUE);
+    gst_element_setup_thread_pool ();
+  }
+}
+
+GstStructure *
+gst_make_element_message_details (const char *name, ...)
+{
+  GstStructure *structure;
+  va_list varargs;
+
+  if (name == NULL)
+    return NULL;
+
+  va_start (varargs, name);
+  structure = gst_structure_new_valist ("details", name, varargs);
+  va_end (varargs);
+
+  return structure;
+}
diff --git a/gst/gstelement.h b/gst/gstelement.h
index f4bed31..6dae510 100644
--- a/gst/gstelement.h
+++ b/gst/gstelement.h
@@ -399,6 +399,60 @@
  */
 #define GST_ELEMENT_START_TIME(elem)            (GST_ELEMENT_CAST(elem)->start_time)
 
+GstStructure *gst_make_element_message_details (const char *name, ...);
+#define GST_ELEMENT_MESSAGE_MAKE_DETAILS(args) gst_make_element_message_details args
+
+/**
+ * GST_ELEMENT_FLOW_ERROR:
+ * @el:           the element that generates the error
+ * @flow_return:  the GstFlowReturn leading to that ERROR message
+ *
+ * Utility function that elements can use in case they encountered a fatal
+ * data processing error due to wrong flow processing.
+ *
+ * Since: 1.10
+ */
+#define GST_ELEMENT_FLOW_ERROR(el,flow_return)  \
+G_STMT_START {                                                          \
+  GST_ELEMENT_ERROR_WITH_DETAILS (el, STREAM, FAILED, \
+      ("Internal data stream error."), \
+      ("streaming stopped, reason %s (%d)", gst_flow_get_name (flow_return), flow_return), \
+      ("flow-return", G_TYPE_INT, flow_return, NULL));\
+} G_STMT_END
+
+/**
+ * GST_ELEMENT_ERROR_WITH_DETAILS:
+ * @el:     the element that generates the error
+ * @domain: like CORE, LIBRARY, RESOURCE or STREAM (see #gstreamer-GstGError)
+ * @code:   error code defined for that domain (see #gstreamer-GstGError)
+ * @text:   the message to display (format string and args enclosed in
+            parentheses)
+ * @debug:  debugging information for the message (format string and args
+            enclosed in parentheses)
+ * @args    optional name, type, value triplets, which will be stored
+ *          in the associated GstStructure. NULL terminator required.
+ *          Must be enclosed within parentheses.
+ *
+ * Utility function that elements can use in case they encountered a fatal
+ * data processing error. The pipeline will post an error message and the
+ * application will be requested to stop further media processing.
+ *
+ * Since: 1.10
+ */
+#define GST_ELEMENT_ERROR_WITH_DETAILS(el,domain,code,text,debug,args)  \
+G_STMT_START {                                                          \
+  gchar *__txt = _gst_element_error_printf text;                        \
+  gchar *__dbg = _gst_element_error_printf debug;                       \
+  if (__txt)                                                            \
+    GST_WARNING_OBJECT (el, "error: %s", __txt);                        \
+  if (__dbg)                                                            \
+    GST_WARNING_OBJECT (el, "error: %s", __dbg);                        \
+  gst_element_message_full_with_details (GST_ELEMENT(el),               \
+    GST_MESSAGE_ERROR, GST_ ## domain ## _ERROR,                        \
+      GST_ ## domain ## _ERROR_ ## code, __txt, __dbg, __FILE__,        \
+      GST_FUNCTION, __LINE__, GST_ELEMENT_MESSAGE_MAKE_DETAILS(args));  \
+} G_STMT_END
+
 /**
  * GST_ELEMENT_ERROR:
  * @el:     the element that generates the error
@@ -413,7 +467,7 @@
  * data processing error. The pipeline will post an error message and the
  * application will be requested to stop further media processing.
  */
-#define GST_ELEMENT_ERROR(el, domain, code, text, debug)                \
+#define GST_ELEMENT_ERROR(el,domain,code,text,debug)                    \
 G_STMT_START {                                                          \
   gchar *__txt = _gst_element_error_printf text;                        \
   gchar *__dbg = _gst_element_error_printf debug;                       \
@@ -421,9 +475,43 @@
     GST_WARNING_OBJECT (el, "error: %s", __txt);                        \
   if (__dbg)                                                            \
     GST_WARNING_OBJECT (el, "error: %s", __dbg);                        \
-  gst_element_message_full (GST_ELEMENT(el), GST_MESSAGE_ERROR,         \
-    GST_ ## domain ## _ERROR, GST_ ## domain ## _ERROR_ ## code,        \
-    __txt, __dbg, __FILE__, GST_FUNCTION, __LINE__);                    \
+  gst_element_message_full (GST_ELEMENT(el),                            \
+    GST_MESSAGE_ERROR, GST_ ## domain ## _ERROR,                        \
+      GST_ ## domain ## _ERROR_ ## code, __txt, __dbg, __FILE__,        \
+      GST_FUNCTION, __LINE__);                                          \
+} G_STMT_END
+
+/**
+ * GST_ELEMENT_WARNING_WITH_DETAILS:
+ * @el:     the element that generates the warning
+ * @domain: like CORE, LIBRARY, RESOURCE or STREAM (see #gstreamer-GstGError)
+ * @code:   error code defined for that domain (see #gstreamer-GstGError)
+ * @text:   the message to display (format string and args enclosed in
+            parentheses)
+ * @debug:  debugging information for the message (format string and args
+            enclosed in parentheses)
+ * @args    optional name, type, value triplets, which will be stored
+ *          in the associated GstStructure. NULL terminator required.
+ *          Must be enclosed within parentheses.
+ *
+ * Utility function that elements can use in case they encountered a non-fatal
+ * data processing problem. The pipeline will post a warning message and the
+ * application will be informed.
+ *
+ * Since: 1.10
+ */
+#define GST_ELEMENT_WARNING_WITH_DETAILS(el, domain, code, text, debug, args)\
+G_STMT_START {                                                          \
+  gchar *__txt = _gst_element_error_printf text;                        \
+  gchar *__dbg = _gst_element_error_printf debug;                       \
+  if (__txt)                                                            \
+    GST_WARNING_OBJECT (el, "warning: %s", __txt);                      \
+  if (__dbg)                                                            \
+    GST_WARNING_OBJECT (el, "warning: %s", __dbg);                      \
+  gst_element_message_full_with_details (GST_ELEMENT(el),               \
+    GST_MESSAGE_WARNING, GST_ ## domain ## _ERROR,                      \
+    GST_ ## domain ## _ERROR_ ## code, __txt, __dbg, __FILE__,          \
+    GST_FUNCTION, __LINE__, GST_ELEMENT_MESSAGE_MAKE_DETAILS(args));    \
 } G_STMT_END
 
 /**
@@ -448,9 +536,46 @@
     GST_WARNING_OBJECT (el, "warning: %s", __txt);                      \
   if (__dbg)                                                            \
     GST_WARNING_OBJECT (el, "warning: %s", __dbg);                      \
-  gst_element_message_full (GST_ELEMENT(el), GST_MESSAGE_WARNING,       \
-    GST_ ## domain ## _ERROR, GST_ ## domain ## _ERROR_ ## code,        \
-  __txt, __dbg, __FILE__, GST_FUNCTION, __LINE__);                      \
+  gst_element_message_full (GST_ELEMENT(el),                            \
+    GST_MESSAGE_WARNING, GST_ ## domain ## _ERROR,                      \
+    GST_ ## domain ## _ERROR_ ## code, __txt, __dbg, __FILE__,          \
+    GST_FUNCTION, __LINE__);                                            \
+} G_STMT_END
+
+/**
+ * GST_ELEMENT_INFO_WITH_DETAILS:
+ * @el:     the element that generates the information
+ * @domain: like CORE, LIBRARY, RESOURCE or STREAM (see #gstreamer-GstGError)
+ * @code:   error code defined for that domain (see #gstreamer-GstGError)
+ * @text:   the message to display (format string and args enclosed in
+            parentheses)
+ * @debug:  debugging information for the message (format string and args
+            enclosed in parentheses)
+ * @args    optional name, type, value triplets, which will be stored
+ *          in the associated GstStructure. NULL terminator required.
+ *          Must be enclosed within parentheses.
+ *
+ * Utility function that elements can use in case they want to inform
+ * the application of something noteworthy that is not an error.
+ * The pipeline will post a info message and the
+ * application will be informed.
+ * Optional name, type, value triplets may be supplied, and will be stored
+ * in the associated GstStructure. NULL terminator required.
+ *
+ * Since: 1.10
+ */
+#define GST_ELEMENT_INFO_WITH_DETAILS(el, domain, code, text, debug, args)   \
+G_STMT_START {                                                          \
+  gchar *__txt = _gst_element_error_printf text;                        \
+  gchar *__dbg = _gst_element_error_printf debug;                       \
+  if (__txt)                                                            \
+    GST_INFO_OBJECT (el, "info: %s", __txt);                            \
+  if (__dbg)                                                            \
+    GST_INFO_OBJECT (el, "info: %s", __dbg);                            \
+  gst_element_message_full_with_details (GST_ELEMENT(el),               \
+    GST_MESSAGE_INFO, GST_ ## domain ## _ERROR,                         \
+    GST_ ## domain ## _ERROR_ ## code, __txt, __dbg, __FILE__,          \
+    GST_FUNCTION, __LINE__, GST_ELEMENT_MESSAGE_MAKE_DETAILS(args));    \
 } G_STMT_END
 
 /**
@@ -476,9 +601,10 @@
     GST_INFO_OBJECT (el, "info: %s", __txt);                            \
   if (__dbg)                                                            \
     GST_INFO_OBJECT (el, "info: %s", __dbg);                            \
-  gst_element_message_full (GST_ELEMENT(el), GST_MESSAGE_INFO,          \
-    GST_ ## domain ## _ERROR, GST_ ## domain ## _ERROR_ ## code,        \
-  __txt, __dbg, __FILE__, GST_FUNCTION, __LINE__);                      \
+  gst_element_message_full (GST_ELEMENT(el),                            \
+    GST_MESSAGE_INFO, GST_ ## domain ## _ERROR,                         \
+    GST_ ## domain ## _ERROR_ ## code, __txt, __dbg, __FILE__,          \
+    GST_FUNCTION, __LINE__);                                            \
 } G_STMT_END
 
 /* the state change mutexes and conds */
@@ -798,6 +924,12 @@
                                                          gchar * debug, const gchar * file,
                                                          const gchar * function, gint line);
 
+void                    gst_element_message_full_with_details (GstElement * element, GstMessageType type,
+                                                         GQuark domain, gint code, gchar * text,
+                                                         gchar * debug, const gchar * file,
+                                                         const gchar * function, gint line,
+                                                         GstStructure * structure);
+
 /* state management */
 gboolean                gst_element_is_locked_state     (GstElement *element);
 gboolean                gst_element_set_locked_state    (GstElement *element, gboolean locked_state);
@@ -816,9 +948,28 @@
                                                          GstStateChangeReturn ret);
 void                    gst_element_lost_state          (GstElement * element);
 
+typedef void          (*GstElementCallAsyncFunc)        (GstElement * element,
+                                                         gpointer     user_data);
+
+void                    gst_element_call_async          (GstElement * element,
+                                                         GstElementCallAsyncFunc func, gpointer user_data,
+                                                         GDestroyNotify destroy_notify);
+
 /* factory management */
 GstElementFactory*      gst_element_get_factory         (GstElement *element);
 
+/* utility functions */
+gulong                  gst_element_add_property_notify_watch (GstElement  * element,
+                                                               const gchar * property_name,
+                                                               gboolean      include_value);
+
+gulong                  gst_element_add_property_deep_notify_watch (GstElement  * element,
+                                                                    const gchar * property_name,
+                                                                    gboolean      include_value);
+
+void                    gst_element_remove_property_notify_watch (GstElement * element,
+                                                                  gulong       watch_id);
+
 #ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstElement, gst_object_unref)
 #endif
diff --git a/gst/gstelementfactory.c b/gst/gstelementfactory.c
index 22d420f..8cc4dc6 100644
--- a/gst/gstelementfactory.c
+++ b/gst/gstelementfactory.c
@@ -386,6 +386,9 @@
   if (!g_atomic_pointer_compare_and_exchange (&oclass->elementfactory, NULL,
           factory))
     gst_object_unref (factory);
+  else
+    /* This ref will never be dropped as the class is never destroyed */
+    GST_OBJECT_FLAG_SET (factory, GST_OBJECT_FLAG_MAY_BE_LEAKED);
 
   GST_DEBUG ("created element \"%s\"", GST_OBJECT_NAME (factory));
 
diff --git a/gst/gstevent.c b/gst/gstevent.c
index e0e0ea6..e691dfb 100644
--- a/gst/gstevent.c
+++ b/gst/gstevent.c
@@ -104,7 +104,9 @@
   {GST_EVENT_UNKNOWN, "unknown", 0},
   {GST_EVENT_FLUSH_START, "flush-start", 0},
   {GST_EVENT_FLUSH_STOP, "flush-stop", 0},
+  {GST_EVENT_SELECT_STREAMS, "select-streams", 0},
   {GST_EVENT_STREAM_START, "stream-start", 0},
+  {GST_EVENT_STREAM_COLLECTION, "stream-collection", 0},
   {GST_EVENT_CAPS, "caps", 0},
   {GST_EVENT_SEGMENT, "segment", 0},
   {GST_EVENT_TAG, "tag", 0},
@@ -128,6 +130,7 @@
   {GST_EVENT_CUSTOM_DOWNSTREAM_STICKY, "custom-downstream-sticky", 0},
   {GST_EVENT_CUSTOM_BOTH, "custom-both", 0},
   {GST_EVENT_CUSTOM_BOTH_OOB, "custom-both-oob", 0},
+  {GST_EVENT_STREAM_GROUP_DONE, "stream-group-done", 0},
 
   {0, NULL, 0}
 };
@@ -576,6 +579,132 @@
 }
 
 /**
+ * gst_event_new_select_streams:
+ * @streams: (element-type gchar) (transfer none): the list of streams to
+ * activate
+ *
+ * Allocate a new select-streams event.
+ *
+ * The select-streams event requests the specified @streams to be activated.
+ *
+ * The list of @streams corresponds to the "Stream ID" of each stream to be
+ * activated. Those ID can be obtained via the #GstStream objects present
+ * in #GST_EVENT_STREAM_START, #GST_EVENT_STREAM_COLLECTION or 
+ * #GST_MESSSAGE_STREAM_COLLECTION.
+ *
+ * Returns: (transfer full): a new select-streams event.
+ *
+ * Since: 1.10
+ */
+GstEvent *
+gst_event_new_select_streams (GList * streams)
+{
+  GstEvent *event;
+  GValue val = G_VALUE_INIT;
+  GstStructure *struc;
+  GList *tmpl;
+
+  GST_CAT_INFO (GST_CAT_EVENT, "Creating new select-streams event");
+  struc = gst_structure_new_id_empty (GST_QUARK (EVENT_SELECT_STREAMS));
+  g_value_init (&val, GST_TYPE_LIST);
+  /* Fill struc with streams */
+  for (tmpl = streams; tmpl; tmpl = tmpl->next) {
+    GValue strval = G_VALUE_INIT;
+    const gchar *str = (const gchar *) tmpl->data;
+    g_value_init (&strval, G_TYPE_STRING);
+    g_value_set_string (&strval, str);
+    gst_value_list_append_and_take_value (&val, &strval);
+  }
+  gst_structure_id_take_value (struc, GST_QUARK (STREAMS), &val);
+  event = gst_event_new_custom (GST_EVENT_SELECT_STREAMS, struc);
+
+  return event;
+}
+
+/**
+ * gst_event_parse_select_streams:
+ * @event: The event to parse
+ * @streams: (out) (element-type gchar) (transfer full): the streams
+ *
+ * Parse the SELECT_STREAMS event and retrieve the contained streams.
+ *
+ * Since: 1.10
+ */
+void
+gst_event_parse_select_streams (GstEvent * event, GList ** streams)
+{
+  GstStructure *structure;
+  GList *res = NULL;
+
+  g_return_if_fail (GST_IS_EVENT (event));
+  g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_SELECT_STREAMS);
+
+  structure = GST_EVENT_STRUCTURE (event);
+  if (G_LIKELY (streams)) {
+    const GValue *vlist =
+        gst_structure_id_get_value (structure, GST_QUARK (STREAMS));
+    guint i, sz = gst_value_list_get_size (vlist);
+    for (i = 0; i < sz; i++) {
+      const GValue *strv = gst_value_list_get_value (vlist, i);
+      res = g_list_append (res, g_value_dup_string (strv));
+    }
+    *streams = res;
+  }
+}
+
+
+/**
+ * gst_event_new_stream_group_done:
+ * @group_id: the group id of the stream group which is ending
+ *
+ * Create a new Stream Group Done event. The stream-group-done event can
+ * only travel downstream synchronized with the buffer flow. Elements
+ * that receive the event on a pad should handle it mostly like EOS,
+ * and emit any data or pending buffers that would depend on more data
+ * arriving and unblock, since there won't be any more data.
+ *
+ * This event is followed by EOS at some point in the future, and is
+ * generally used when switching pads - to unblock downstream so that
+ * new pads can be exposed before sending EOS on the existing pads.
+ *
+ * Returns: (transfer full): the new stream-group-done event.
+ *
+ * Since: 1.10
+ */
+GstEvent *
+gst_event_new_stream_group_done (guint group_id)
+{
+  GstStructure *s;
+
+  s = gst_structure_new_id (GST_QUARK (EVENT_STREAM_GROUP_DONE),
+      GST_QUARK (GROUP_ID), G_TYPE_UINT, group_id, NULL);
+
+  return gst_event_new_custom (GST_EVENT_STREAM_GROUP_DONE, s);
+}
+
+/**
+ * gst_event_parse_stream_group_done:
+ * @event: a stream-group-done event.
+ * @group_id: (out): address of variable to store the group id into
+ *
+ * Parse a stream-group-done @event and store the result in the given
+ * @group_id location.
+ *
+ * Since: 1.10
+ */
+void
+gst_event_parse_stream_group_done (GstEvent * event, guint * group_id)
+{
+  g_return_if_fail (event != NULL);
+  g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_STREAM_GROUP_DONE);
+
+  if (group_id) {
+    gst_structure_id_get (GST_EVENT_STRUCTURE (event),
+        GST_QUARK (GROUP_ID), G_TYPE_UINT, group_id, NULL);
+  }
+}
+
+/**
  * gst_event_new_eos:
  *
  * Create a new EOS event. The eos event can only travel downstream
@@ -1508,6 +1637,48 @@
 }
 
 /**
+ * gst_event_set_stream:
+ * @event: a stream-start event
+ * @stream: (transfer none): the stream object to set
+ *
+ * Set the @stream on the stream-start @event 
+ *
+ * Since: 1.10
+ */
+void
+gst_event_set_stream (GstEvent * event, GstStream * stream)
+{
+  g_return_if_fail (event != NULL);
+  g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_STREAM_START);
+  g_return_if_fail (gst_event_is_writable (event));
+
+  gst_structure_id_set (GST_EVENT_STRUCTURE (event),
+      GST_QUARK (STREAM), GST_TYPE_STREAM, stream, NULL);
+}
+
+/**
+ * gst_event_parse_stream:
+ * @event: a stream-start event
+ * @stream: (out) (transfer full): adress of variable to store the stream
+ *
+ * Parse a stream-start @event and extract the #GstStream from it.
+ *
+ * Since: 1.10
+ */
+void
+gst_event_parse_stream (GstEvent * event, GstStream ** stream)
+{
+  g_return_if_fail (event != NULL);
+  g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_STREAM_START);
+
+  if (stream) {
+    gst_structure_id_get (GST_EVENT_STRUCTURE (event),
+        GST_QUARK (STREAM), GST_TYPE_STREAM, stream, NULL);
+  }
+
+}
+
+/**
  * gst_event_set_stream_flags:
  * @event: a stream-start event
  * @flags: the stream flags to set
@@ -1596,6 +1767,63 @@
 }
 
 /**
+ * gst_event_new_stream_collection:
+ * @collection: Active collection for this data flow
+ *
+ * Create a new STREAM_COLLECTION event. The stream collection event can only
+ * travel downstream synchronized with the buffer flow.
+ *
+ * Source elements, demuxers and other elements that manage collections
+ * of streams and post #GstStreamCollection messages on the bus also send
+ * this event downstream on each pad involved in the collection, so that
+ * activation of a new collection can be tracked through the downstream
+ * data flow.
+ *
+ * Returns: (transfer full): the new STREAM_COLLECTION event.
+ *
+ * Since: 1.10
+ */
+GstEvent *
+gst_event_new_stream_collection (GstStreamCollection * collection)
+{
+  GstStructure *s;
+
+  g_return_val_if_fail (collection != NULL, NULL);
+  g_return_val_if_fail (GST_IS_STREAM_COLLECTION (collection), NULL);
+
+  s = gst_structure_new_id (GST_QUARK (EVENT_STREAM_COLLECTION),
+      GST_QUARK (COLLECTION), GST_TYPE_STREAM_COLLECTION, collection, NULL);
+
+  return gst_event_new_custom (GST_EVENT_STREAM_COLLECTION, s);
+}
+
+/**
+ * gst_event_parse_stream_collection:
+ * @event: a stream-collection event
+ * @collection: (out): pointer to store the collection
+ *
+ * Retrieve new #GstStreamCollection from STREAM_COLLECTION event @event.
+ *
+ * Since: 1.10
+ */
+void
+gst_event_parse_stream_collection (GstEvent * event,
+    GstStreamCollection ** collection)
+{
+  const GstStructure *structure;
+
+  g_return_if_fail (event != NULL);
+  g_return_if_fail (GST_EVENT_TYPE (event) == GST_EVENT_STREAM_COLLECTION);
+
+  structure = gst_event_get_structure (event);
+
+  if (collection) {
+    gst_structure_id_get (structure,
+        GST_QUARK (COLLECTION), GST_TYPE_STREAM_COLLECTION, collection, NULL);
+  }
+}
+
+/**
  * gst_event_new_toc:
  * @toc: (transfer none): #GstToc structure.
  * @updated: whether @toc was updated or not.
diff --git a/gst/gstevent.h b/gst/gstevent.h
index e20c820..e7dbb25 100644
--- a/gst/gstevent.h
+++ b/gst/gstevent.h
@@ -79,6 +79,7 @@
  *                 from the pipeline and unblock all streaming threads.
  * @GST_EVENT_FLUSH_STOP: Stop a flush operation. This event resets the
  *                 running-time of the pipeline.
+ * @GST_EVENT_SELECT_STREAMS: A request to select one or more streams (Since 1.10)
  * @GST_EVENT_STREAM_START: Event to mark the start of a new stream. Sent before any
  *                 other serialized event and only sent at the start of a new stream,
  *                 not after flushing seeks.
@@ -87,14 +88,19 @@
  *                 segment events contains information for clipping buffers and
  *                 converting buffer timestamps to running-time and
  *                 stream-time.
+ * @GST_EVENT_STREAM_COLLECTION: A new #GstStreamCollection is available (Since 1.10)
  * @GST_EVENT_TAG: A new set of metadata tags has been found in the stream.
  * @GST_EVENT_BUFFERSIZE: Notification of buffering requirements. Currently not
  *                 used yet.
  * @GST_EVENT_SINK_MESSAGE: An event that sinks turn into a message. Used to
  *                          send messages that should be emitted in sync with
  *                          rendering.
+ * @GST_EVENT_STREAM_GROUP_DONE: Indicates that there is no more data for
+ *                 the stream group ID in the message. Sent before EOS
+ *                 in some instances and should be handled mostly the same. (Since 1.10)
  * @GST_EVENT_EOS: End-Of-Stream. No more data is to be expected to follow
- *                 without a SEGMENT event.
+ *                 without either a STREAM_START event, or a FLUSH_STOP and a SEGMENT
+ *                 event.
  * @GST_EVENT_SEGMENT_DONE: Marks the end of a segment playback.
  * @GST_EVENT_GAP: Marks a gap in the datastream.
  * @GST_EVENT_TOC: An event which indicates that a new table of contents (TOC)
@@ -144,9 +150,11 @@
   GST_EVENT_STREAM_START          = GST_EVENT_MAKE_TYPE (40, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
   GST_EVENT_CAPS                  = GST_EVENT_MAKE_TYPE (50, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
   GST_EVENT_SEGMENT               = GST_EVENT_MAKE_TYPE (70, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
+  GST_EVENT_STREAM_COLLECTION     = GST_EVENT_MAKE_TYPE (75, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI)),
   GST_EVENT_TAG                   = GST_EVENT_MAKE_TYPE (80, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI)),
   GST_EVENT_BUFFERSIZE            = GST_EVENT_MAKE_TYPE (90, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
   GST_EVENT_SINK_MESSAGE          = GST_EVENT_MAKE_TYPE (100, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI)),
+  GST_EVENT_STREAM_GROUP_DONE     = GST_EVENT_MAKE_TYPE (105, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
   GST_EVENT_EOS                   = GST_EVENT_MAKE_TYPE (110, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY)),
   GST_EVENT_TOC                   = GST_EVENT_MAKE_TYPE (120, FLAG(DOWNSTREAM) | FLAG(SERIALIZED) | FLAG(STICKY) | FLAG(STICKY_MULTI)),
   GST_EVENT_PROTECTION            = GST_EVENT_MAKE_TYPE (130, FLAG (DOWNSTREAM) | FLAG (SERIALIZED) | FLAG (STICKY) | FLAG (STICKY_MULTI)),
@@ -163,6 +171,7 @@
   GST_EVENT_STEP                  = GST_EVENT_MAKE_TYPE (230, FLAG(UPSTREAM)),
   GST_EVENT_RECONFIGURE           = GST_EVENT_MAKE_TYPE (240, FLAG(UPSTREAM)),
   GST_EVENT_TOC_SELECT            = GST_EVENT_MAKE_TYPE (250, FLAG(UPSTREAM)),
+  GST_EVENT_SELECT_STREAMS        = GST_EVENT_MAKE_TYPE (260, FLAG(UPSTREAM)),
 
   /* custom events start here */
   GST_EVENT_CUSTOM_UPSTREAM          = GST_EVENT_MAKE_TYPE (270, FLAG(UPSTREAM)),
@@ -174,6 +183,30 @@
 } GstEventType;
 #undef FLAG
 
+/**
+ * GstStreamFlags:
+ * @GST_STREAM_FLAG_NONE: This stream has no special attributes
+ * @GST_STREAM_FLAG_SPARSE: This stream is a sparse stream (e.g. a subtitle
+ *    stream), data may flow only in irregular intervals with large gaps in
+ *    between.
+ * @GST_STREAM_FLAG_SELECT: This stream should be selected by default. This
+ *    flag may be used by demuxers to signal that a stream should be selected
+ *    by default in a playback scenario.
+ * @GST_STREAM_FLAG_UNSELECT: This stream should not be selected by default.
+ *    This flag may be used by demuxers to signal that a stream should not
+ *    be selected by default in a playback scenario, but only if explicitly
+ *    selected by the user (e.g. an audio track for the hard of hearing or
+ *    a director's commentary track).
+ *
+ * Since: 1.2
+ */
+typedef enum {
+  GST_STREAM_FLAG_NONE,
+  GST_STREAM_FLAG_SPARSE       = (1 << 0),
+  GST_STREAM_FLAG_SELECT       = (1 << 1),
+  GST_STREAM_FLAG_UNSELECT     = (1 << 2)
+} GstStreamFlags;
+
 #include <gst/gstminiobject.h>
 #include <gst/gstformat.h>
 #include <gst/gstobject.h>
@@ -355,29 +388,6 @@
   GST_QOS_TYPE_THROTTLE        = 2
 } GstQOSType;
 
-/**
- * GstStreamFlags:
- * @GST_STREAM_FLAG_NONE: This stream has no special attributes
- * @GST_STREAM_FLAG_SPARSE: This stream is a sparse stream (e.g. a subtitle
- *    stream), data may flow only in irregular intervals with large gaps in
- *    between.
- * @GST_STREAM_FLAG_SELECT: This stream should be selected by default. This
- *    flag may be used by demuxers to signal that a stream should be selected
- *    by default in a playback scenario.
- * @GST_STREAM_FLAG_UNSELECT: This stream should not be selected by default.
- *    This flag may be used by demuxers to signal that a stream should not
- *    be selected by default in a playback scenario, but only if explicitly
- *    selected by the user (e.g. an audio track for the hard of hearing or
- *    a director's commentary track).
- *
- * Since: 1.2
- */
-typedef enum {
-  GST_STREAM_FLAG_NONE,
-  GST_STREAM_FLAG_SPARSE       = (1 << 0),
-  GST_STREAM_FLAG_SELECT       = (1 << 1),
-  GST_STREAM_FLAG_UNSELECT     = (1 << 2)
-} GstStreamFlags;
 
 /**
  * GstEvent:
@@ -467,6 +477,8 @@
 /* Stream start event */
 GstEvent *      gst_event_new_stream_start      (const gchar *stream_id) G_GNUC_MALLOC;
 void            gst_event_parse_stream_start    (GstEvent *event, const gchar **stream_id);
+void            gst_event_set_stream		(GstEvent *event, GstStream *stream);
+void            gst_event_parse_stream		(GstEvent *event, GstStream **stream);
 
 void            gst_event_set_stream_flags      (GstEvent *event, GstStreamFlags flags);
 void            gst_event_parse_stream_flags    (GstEvent *event, GstStreamFlags *flags);
@@ -480,6 +492,18 @@
 GstEvent *      gst_event_new_flush_stop        (gboolean reset_time) G_GNUC_MALLOC;
 void            gst_event_parse_flush_stop      (GstEvent *event, gboolean *reset_time);
 
+/* Stream collection event */
+GstEvent *      gst_event_new_stream_collection   (GstStreamCollection *collection) G_GNUC_MALLOC;
+void            gst_event_parse_stream_collection (GstEvent *event, GstStreamCollection **collection);
+
+/* select streams event */
+GstEvent *      gst_event_new_select_streams    (GList *streams);
+void            gst_event_parse_select_streams  (GstEvent *event, GList **streams);
+
+/* stream-group-done event */
+GstEvent *      gst_event_new_stream_group_done (const guint group_id) G_GNUC_MALLOC;
+void            gst_event_parse_stream_group_done (GstEvent *event, guint *group_id);
+
 /* EOS event */
 GstEvent *      gst_event_new_eos               (void) G_GNUC_MALLOC;
 
diff --git a/gst/gstghostpad.c b/gst/gstghostpad.c
index 96703ed..0489432 100644
--- a/gst/gstghostpad.c
+++ b/gst/gstghostpad.c
@@ -819,7 +819,7 @@
  * is unlinked and links to the new target are established. if @newtarget is
  * %NULL the target will be cleared.
  *
- * Returns: (transfer full): %TRUE if the new target could be set. This function
+ * Returns: %TRUE if the new target could be set. This function
  *     can return %FALSE when the internal pads could not be linked.
  */
 gboolean
diff --git a/gst/gstinfo.c b/gst/gstinfo.c
index 8bfa33b..75b5e4c 100644
--- a/gst/gstinfo.c
+++ b/gst/gstinfo.c
@@ -253,6 +253,9 @@
 static GMutex __log_func_mutex;
 static GSList *__log_functions = NULL;
 
+/* whether to add the default log function in gst_init() */
+static gboolean add_default_log_func = TRUE;
+
 #define PRETTY_TAGS_DEFAULT  TRUE
 static gboolean pretty_tags = PRETTY_TAGS_DEFAULT;
 
@@ -296,20 +299,24 @@
   const gchar *env;
   FILE *log_file;
 
-  env = g_getenv ("GST_DEBUG_FILE");
-  if (env != NULL && *env != '\0') {
-    if (strcmp (env, "-") == 0) {
-      log_file = stdout;
-    } else {
-      log_file = g_fopen (env, "w");
-      if (log_file == NULL) {
-        g_printerr ("Could not open log file '%s' for writing: %s\n", env,
-            g_strerror (errno));
-        log_file = stderr;
+  if (add_default_log_func) {
+    env = g_getenv ("GST_DEBUG_FILE");
+    if (env != NULL && *env != '\0') {
+      if (strcmp (env, "-") == 0) {
+        log_file = stdout;
+      } else {
+        log_file = g_fopen (env, "w");
+        if (log_file == NULL) {
+          g_printerr ("Could not open log file '%s' for writing: %s\n", env,
+              g_strerror (errno));
+          log_file = stderr;
+        }
       }
+    } else {
+      log_file = stderr;
     }
-  } else {
-    log_file = stderr;
+
+    gst_debug_add_log_function (gst_debug_log_default, log_file, NULL);
   }
 
   __gst_printf_pointer_extension_set_func
@@ -321,8 +328,6 @@
   _GST_CAT_DEBUG = _gst_debug_category_new ("GST_DEBUG",
       GST_DEBUG_BOLD | GST_DEBUG_FG_YELLOW, "debugging subsystem");
 
-  gst_debug_add_log_function (gst_debug_log_default, log_file, NULL);
-
   /* FIXME: add descriptions here */
   GST_CAT_GST_INIT = _gst_debug_category_new ("GST_INIT",
       GST_DEBUG_BOLD | GST_DEBUG_FG_RED, NULL);
@@ -1248,7 +1253,8 @@
 
 /**
  * gst_debug_remove_log_function:
- * @func: (scope call): the log function to remove
+ * @func: (scope call) (allow-none): the log function to remove, or %NULL to
+ *     remove the default log function
  *
  * Removes all registered instances of the given logging functions.
  *
@@ -1265,9 +1271,18 @@
   removals =
       gst_debug_remove_with_compare_func
       (gst_debug_compare_log_function_by_func, (gpointer) func);
-  if (gst_is_initialized ())
+
+  if (gst_is_initialized ()) {
     GST_DEBUG ("removed log function %p %d times from log function list", func,
         removals);
+  } else {
+    /* If the default log function is removed before gst_init() was called,
+     * set a flag so we don't add it in gst_init() later */
+    if (func == gst_debug_log_default) {
+      add_default_log_func = FALSE;
+      ++removals;
+    }
+  }
 
   return removals;
 }
diff --git a/gst/gstinfo.h b/gst/gstinfo.h
index 3b7ccd5..d2fd7e4 100644
--- a/gst/gstinfo.h
+++ b/gst/gstinfo.h
@@ -262,7 +262,15 @@
 /**
  * GST_PTR_FORMAT:
  *
- * printf format type used to debug GStreamer types.
+ * printf format type used to debug GStreamer types. You can use this in
+ * combination with GStreamer's debug logging system as well as the functions
+ * gst_info_vasprintf(), gst_info_strdup_vprintf() and gst_info_strdup_printf()
+ * to pretty-print the following types: #GstCaps, #GstStructure,
+ * #GstCapsFeatures, #GstTagList, #GstDateTime, #GstBuffer, #GstBufferList,
+ * #GstMessage, #GstEvent, #GstQuery, #GstContext, #GstPad, #GstObject. All
+ * #GObject types will be printed as typename plus pointer, and everything
+ * else will simply be printed as pointer address.
+ *
  * This can only be used on types whose size is >= sizeof(gpointer).
  */
 #define GST_PTR_FORMAT     "p\aA"
@@ -270,7 +278,10 @@
 /**
  * GST_SEGMENT_FORMAT:
  *
- * printf format type used to debug GStreamer segments.
+ * printf format type used to debug GStreamer segments. You can use this in
+ * combination with GStreamer's debug logging system as well as the functions
+ * gst_info_vasprintf(), gst_info_strdup_vprintf() and gst_info_strdup_printf()
+ * to pretty-print #GstSegment structures.
  * This can only be used on pointers to GstSegment structures.
  */
 #define GST_SEGMENT_FORMAT "p\aB"
@@ -404,9 +415,11 @@
 
 #ifndef GST_DISABLE_GST_DEBUG
 
+/* cast to void * avoids a warning with gcc 6
+ * see https://bugzilla.gnome.org/show_bug.cgi?id=764526 */
 #define gst_debug_add_log_function(func,data,notify) \
 G_STMT_START{                                        \
-  if (func == gst_debug_log_default) {               \
+  if (func == (void *) gst_debug_log_default) {               \
     gst_debug_add_log_function(NULL,data,notify);    \
   } else {                                           \
     gst_debug_add_log_function(func,data,notify);    \
@@ -414,7 +427,7 @@
 }G_STMT_END
 
 #define gst_debug_remove_log_function(func)   \
-    (func == gst_debug_log_default) ?         \
+    (func == (void *) gst_debug_log_default) ?         \
         gst_debug_remove_log_function(NULL) : \
         gst_debug_remove_log_function(func)
 
diff --git a/gst/gstiterator.c b/gst/gstiterator.c
index 77f0c02..b15b202 100644
--- a/gst/gstiterator.c
+++ b/gst/gstiterator.c
@@ -607,6 +607,8 @@
   GValue item = { 0, };
   GstIteratorResult result;
 
+  g_return_val_if_fail (it != NULL, GST_ITERATOR_ERROR);
+
   while (1) {
     result = gst_iterator_next (it, &item);
     switch (result) {
@@ -625,7 +627,13 @@
   }
 
 fold_done:
+
+#if GLIB_CHECK_VERSION (2, 48, 0)
   g_value_unset (&item);
+#else
+  if (item.g_type != 0)
+    g_value_unset (&item);
+#endif
 
   return result;
 }
diff --git a/gst/gstmemory.h b/gst/gstmemory.h
index 5d6edec..9ea1fa6 100644
--- a/gst/gstmemory.h
+++ b/gst/gstmemory.h
@@ -216,7 +216,7 @@
  *
  * Initializer for #GstMapInfo
  */
-#define GST_MAP_INFO_INIT { NULL, 0, NULL, 0, 0, {0, }, {0, }}
+#define GST_MAP_INFO_INIT { NULL, (GstMapFlags) 0, NULL, 0, 0, { NULL, NULL, NULL, NULL}, {NULL, NULL, NULL, NULL}}
 
 /**
  * GstMemoryMapFunction:
@@ -351,13 +351,13 @@
 #define        gst_memory_make_writable(m) GST_MEMORY_CAST (gst_mini_object_make_writable (GST_MINI_OBJECT_CAST (m)))
 
 /* retrieving data */
-GstMemory *    gst_memory_make_mapped  (GstMemory *mem, GstMapInfo *info, GstMapFlags flags);
+GstMemory *    gst_memory_make_mapped  (GstMemory *mem, GstMapInfo *info, GstMapFlags flags) G_GNUC_WARN_UNUSED_RESULT;
 gboolean       gst_memory_map          (GstMemory *mem, GstMapInfo *info, GstMapFlags flags);
 void           gst_memory_unmap        (GstMemory *mem, GstMapInfo *info);
 
 /* copy and subregions */
-GstMemory *    gst_memory_copy         (GstMemory *mem, gssize offset, gssize size);
-GstMemory *    gst_memory_share        (GstMemory *mem, gssize offset, gssize size);
+GstMemory *    gst_memory_copy         (GstMemory *mem, gssize offset, gssize size) G_GNUC_WARN_UNUSED_RESULT;
+GstMemory *    gst_memory_share        (GstMemory *mem, gssize offset, gssize size) G_GNUC_WARN_UNUSED_RESULT;
 
 /* span memory */
 gboolean       gst_memory_is_span      (GstMemory *mem1, GstMemory *mem2, gsize *offset);
diff --git a/gst/gstmessage.c b/gst/gstmessage.c
index 299ecfb..815485f 100644
--- a/gst/gstmessage.c
+++ b/gst/gstmessage.c
@@ -52,6 +52,7 @@
 #include "gsttaglist.h"
 #include "gstutils.h"
 #include "gstquark.h"
+#include "gstvalue.h"
 
 
 typedef struct
@@ -105,9 +106,15 @@
   {GST_MESSAGE_HAVE_CONTEXT, "have-context", 0},
   {GST_MESSAGE_DEVICE_ADDED, "device-added", 0},
   {GST_MESSAGE_DEVICE_REMOVED, "device-removed", 0},
+  {GST_MESSAGE_PROPERTY_NOTIFY, "property-notify", 0},
+  {GST_MESSAGE_STREAM_COLLECTION, "stream-collection", 0},
+  {GST_MESSAGE_STREAMS_SELECTED, "streams-selected", 0},
+  {GST_MESSAGE_REDIRECT, "redirect", 0},
   {0, NULL, 0}
 };
 
+static GQuark details_quark = 0;
+
 GType _gst_message_type = 0;
 GST_DEFINE_MINI_OBJECT_TYPE (GstMessage, gst_message);
 
@@ -122,6 +129,7 @@
     message_quarks[i].quark =
         g_quark_from_static_string (message_quarks[i].name);
   }
+  details_quark = g_quark_from_static_string ("details");
 
   _gst_message_type = gst_message_get_type ();
 }
@@ -385,6 +393,45 @@
 }
 
 /**
+ * gst_message_new_error_with_details:
+ * @src: (transfer none) (allow-none): The object originating the message.
+ * @error: (transfer none): The GError for this message.
+ * @debug: A debugging string.
+ * @details: (transfer full): (allow-none): A GstStructure with details
+ *
+ * Create a new error message. The message will copy @error and
+ * @debug. This message is posted by element when a fatal event
+ * occurred. The pipeline will probably (partially) stop. The application
+ * receiving this message should stop the pipeline.
+ *
+ * Returns: (transfer full): the new error message.
+ *
+ * Since: 1.10
+ */
+GstMessage *
+gst_message_new_error_with_details (GstObject * src, GError * error,
+    const gchar * debug, GstStructure * details)
+{
+  GstMessage *message;
+  GstStructure *structure;
+
+  structure = gst_structure_new_id (GST_QUARK (MESSAGE_ERROR),
+      GST_QUARK (GERROR), G_TYPE_ERROR, error,
+      GST_QUARK (DEBUG), G_TYPE_STRING, debug, NULL);
+  message = gst_message_new_custom (GST_MESSAGE_ERROR, src, structure);
+  if (details) {
+    GValue v = G_VALUE_INIT;
+
+    g_value_init (&v, GST_TYPE_STRUCTURE);
+    g_value_take_boxed (&v, details);
+    gst_structure_id_take_value (GST_MESSAGE_STRUCTURE (message), details_quark,
+        &v);
+  }
+
+  return message;
+}
+
+/**
  * gst_message_new_error:
  * @src: (transfer none) (allow-none): The object originating the message.
  * @error: (transfer none): The GError for this message.
@@ -402,13 +449,70 @@
 GstMessage *
 gst_message_new_error (GstObject * src, GError * error, const gchar * debug)
 {
+  return gst_message_new_error_with_details (src, error, debug, NULL);
+}
+
+/**
+ * gst_message_parse_error_details:
+ * @message: The message object
+ * @structure: (out): A pointer to the returned details
+ *
+ * Returns the optional details structure, may be NULL if none.
+ * The returned structure must not be freed.
+ *
+ * Since: 1.10
+ */
+void
+gst_message_parse_error_details (GstMessage * message,
+    const GstStructure ** structure)
+{
+  const GValue *v;
+
+  g_return_if_fail (GST_IS_MESSAGE (message));
+  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ERROR);
+  g_return_if_fail (structure != NULL);
+
+  *structure = NULL;
+  v = gst_structure_id_get_value (GST_MESSAGE_STRUCTURE (message),
+      details_quark);
+  if (v) {
+    *structure = g_value_get_boxed (v);
+  }
+}
+
+/**
+ * gst_message_new_warning_with_details:
+ * @src: (transfer none) (allow-none): The object originating the message.
+ * @error: (transfer none): The GError for this message.
+ * @debug: A debugging string.
+ * @details: (transfer full): (allow-none): A GstStructure with details
+ *
+ * Create a new warning message. The message will make copies of @error and
+ * @debug.
+ *
+ * Returns: (transfer full): the new warning message.
+ *
+ * Since: 1.10
+ */
+GstMessage *
+gst_message_new_warning_with_details (GstObject * src, GError * error,
+    const gchar * debug, GstStructure * details)
+{
   GstMessage *message;
   GstStructure *structure;
 
-  structure = gst_structure_new_id (GST_QUARK (MESSAGE_ERROR),
+  structure = gst_structure_new_id (GST_QUARK (MESSAGE_WARNING),
       GST_QUARK (GERROR), G_TYPE_ERROR, error,
       GST_QUARK (DEBUG), G_TYPE_STRING, debug, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_ERROR, src, structure);
+  message = gst_message_new_custom (GST_MESSAGE_WARNING, src, structure);
+  if (details) {
+    GValue v = G_VALUE_INIT;
+
+    g_value_init (&v, GST_TYPE_STRUCTURE);
+    g_value_take_boxed (&v, details);
+    gst_structure_id_take_value (GST_MESSAGE_STRUCTURE (message), details_quark,
+        &v);
+  }
 
   return message;
 }
@@ -422,20 +526,77 @@
  * Create a new warning message. The message will make copies of @error and
  * @debug.
  *
- * Returns: (transfer full): The new warning message.
+ * Returns: (transfer full): the new warning message.
  *
  * MT safe.
  */
 GstMessage *
 gst_message_new_warning (GstObject * src, GError * error, const gchar * debug)
 {
+  return gst_message_new_warning_with_details (src, error, debug, NULL);
+}
+
+/**
+ * gst_message_parse_warning_details:
+ * @message: The message object
+ * @structure: (out): A pointer to the returned details structure
+ *
+ * Returns the optional details structure, may be NULL if none
+ * The returned structure must not be freed.
+ *
+ * Since: 1.10
+ */
+void
+gst_message_parse_warning_details (GstMessage * message,
+    const GstStructure ** structure)
+{
+  const GValue *v;
+
+  g_return_if_fail (GST_IS_MESSAGE (message));
+  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_WARNING);
+  g_return_if_fail (structure != NULL);
+
+  *structure = NULL;
+  v = gst_structure_id_get_value (GST_MESSAGE_STRUCTURE (message),
+      details_quark);
+  if (v) {
+    *structure = g_value_get_boxed (v);
+  }
+}
+
+/**
+ * gst_message_new_info_with_details:
+ * @src: (transfer none) (allow-none): The object originating the message.
+ * @error: (transfer none): The GError for this message.
+ * @debug: A debugging string.
+ * @details: (transfer full): (allow-none): A GstStructure with details
+ *
+ * Create a new info message. The message will make copies of @error and
+ * @debug.
+ *
+ * Returns: (transfer full): the new warning message.
+ *
+ * Since: 1.10
+ */
+GstMessage *
+gst_message_new_info_with_details (GstObject * src, GError * error,
+    const gchar * debug, GstStructure * details)
+{
   GstMessage *message;
   GstStructure *structure;
 
-  structure = gst_structure_new_id (GST_QUARK (MESSAGE_WARNING),
+  structure = gst_structure_new_id (GST_QUARK (MESSAGE_INFO),
       GST_QUARK (GERROR), G_TYPE_ERROR, error,
       GST_QUARK (DEBUG), G_TYPE_STRING, debug, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_WARNING, src, structure);
+  message = gst_message_new_custom (GST_MESSAGE_INFO, src, structure);
+  if (details) {
+    GValue v = G_VALUE_INIT;
+
+    g_value_init (&v, GST_TYPE_STRUCTURE);
+    g_value_take_boxed (&v, details);
+    gst_structure_id_take_value (GST_MESSAGE_STRUCTURE (message), details_quark,
+        &v);
+  }
 
   return message;
 }
@@ -449,22 +610,42 @@
  * Create a new info message. The message will make copies of @error and
  * @debug.
  *
- * MT safe.
- *
  * Returns: (transfer full): the new info message.
+ *
+ * MT safe.
  */
 GstMessage *
 gst_message_new_info (GstObject * src, GError * error, const gchar * debug)
 {
-  GstMessage *message;
-  GstStructure *structure;
+  return gst_message_new_info_with_details (src, error, debug, NULL);
+}
 
-  structure = gst_structure_new_id (GST_QUARK (MESSAGE_INFO),
-      GST_QUARK (GERROR), G_TYPE_ERROR, error,
-      GST_QUARK (DEBUG), G_TYPE_STRING, debug, NULL);
-  message = gst_message_new_custom (GST_MESSAGE_INFO, src, structure);
+/**
+ * gst_message_parse_info_details:
+ * @message: The message object
+ * @structure: (out): A pointer to the returned details structure
+ *
+ * Returns the optional details structure, may be NULL if none
+ * The returned structure must not be freed.
+ *
+ * Since: 1.10
+ */
+void
+gst_message_parse_info_details (GstMessage * message,
+    const GstStructure ** structure)
+{
+  const GValue *v;
 
-  return message;
+  g_return_if_fail (GST_IS_MESSAGE (message));
+  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_INFO);
+  g_return_if_fail (structure != NULL);
+
+  *structure = NULL;
+  v = gst_structure_id_get_value (GST_MESSAGE_STRUCTURE (message),
+      details_quark);
+  if (v) {
+    *structure = g_value_get_boxed (v);
+  }
 }
 
 /**
@@ -826,10 +1007,7 @@
  * Create a new duration changed message. This message is posted by elements
  * that know the duration of a stream when the duration changes. This message
  * is received by bins and is used to calculate the total duration of a
- * pipeline. Elements may post a duration message with a duration of
- * GST_CLOCK_TIME_NONE to indicate that the duration has changed and the 
- * cached duration should be discarded. The new duration can then be 
- * retrieved via a query.
+ * pipeline.
  *
  * Returns: (transfer full): The new duration-changed message.
  *
@@ -2379,7 +2557,7 @@
 /**
  * gst_message_parse_device_added:
  * @message: a #GstMessage of type %GST_MESSAGE_DEVICE_ADDED
- * @device: (out) (allow-none) (transfer none): A location where to store a
+ * @device: (out) (allow-none) (transfer full): A location where to store a
  *  pointer to the new #GstDevice, or %NULL
  * 
  * Parses a device-added message. The device-added message is produced by
@@ -2431,7 +2609,7 @@
 /**
  * gst_message_parse_device_removed:
  * @message: a #GstMessage of type %GST_MESSAGE_DEVICE_REMOVED
- * @device: (out) (allow-none) (transfer none): A location where to store a
+ * @device: (out) (allow-none) (transfer full): A location where to store a
  *  pointer to the removed #GstDevice, or %NULL
  *
  * Parses a device-removed message. The device-removed message is produced by
@@ -2450,3 +2628,515 @@
     gst_structure_id_get (GST_MESSAGE_STRUCTURE (message),
         GST_QUARK (DEVICE), GST_TYPE_DEVICE, device, NULL);
 }
+
+/**
+ * gst_message_new_property_notify:
+ * @src: The #GstObject whose property changed (may or may not be a #GstElement)
+ * @property_name: name of the property that changed
+ * @val: (allow-none) (transfer full): new property value, or %NULL
+ *
+ * Returns: a newly allocated #GstMessage
+ *
+ * Since: 1.10
+ */
+GstMessage *
+gst_message_new_property_notify (GstObject * src, const gchar * property_name,
+    GValue * val)
+{
+  GstStructure *structure;
+  GValue name_val = G_VALUE_INIT;
+
+  g_return_val_if_fail (property_name != NULL, NULL);
+
+  structure = gst_structure_new_id_empty (GST_QUARK (MESSAGE_PROPERTY_NOTIFY));
+  g_value_init (&name_val, G_TYPE_STRING);
+  /* should already be interned, but let's make sure */
+  g_value_set_static_string (&name_val, g_intern_string (property_name));
+  gst_structure_id_take_value (structure, GST_QUARK (PROPERTY_NAME), &name_val);
+  if (val != NULL)
+    gst_structure_id_take_value (structure, GST_QUARK (PROPERTY_VALUE), val);
+
+  return gst_message_new_custom (GST_MESSAGE_PROPERTY_NOTIFY, src, structure);
+}
+
+/**
+ * gst_message_parse_property_notify:
+ * @message: a #GstMessage of type %GST_MESSAGE_PROPERTY_NOTIFY
+ * @object: (out) (allow-none) (transfer none): location where to store a
+ *     pointer to the object whose property got changed, or %NULL
+ * @property_name: (out) (allow-none): return location for the name of the
+ *     property that got changed, or %NULL
+ * @property_value: (out) (allow-none): return location for the new value of
+ *     the property that got changed, or %NULL. This will only be set if the
+ *     property notify watch was told to include the value when it was set up
+ *
+ * Parses a property-notify message. These will be posted on the bus only
+ * when set up with gst_element_add_property_notify_watch() or
+ * gst_element_add_property_deep_notify_watch().
+ *
+ * Since: 1.10
+ */
+void
+gst_message_parse_property_notify (GstMessage * message, GstObject ** object,
+    const gchar ** property_name, const GValue ** property_value)
+{
+  const GstStructure *s = GST_MESSAGE_STRUCTURE (message);
+
+  g_return_if_fail (GST_IS_MESSAGE (message));
+  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_PROPERTY_NOTIFY);
+
+  if (object)
+    *object = GST_MESSAGE_SRC (message);
+
+  if (property_name) {
+    const GValue *name_value;
+
+    name_value = gst_structure_id_get_value (s, GST_QUARK (PROPERTY_NAME));
+    *property_name = g_value_get_string (name_value);
+  }
+
+  if (property_value)
+    *property_value =
+        gst_structure_id_get_value (s, GST_QUARK (PROPERTY_VALUE));
+}
+
+/**
+ * gst_message_new_stream_collection:
+ * @src: The #GstObject that created the message
+ * @collection: (transfer none): The #GstStreamCollection
+ *
+ * Creates a new stream-collection message. The message is used to announce new
+ * #GstStreamCollection
+ *
+ * Returns: a newly allocated #GstMessage
+ *
+ * Since: 1.10
+ */
+GstMessage *
+gst_message_new_stream_collection (GstObject * src,
+    GstStreamCollection * collection)
+{
+  GstMessage *message;
+  GstStructure *structure;
+
+  g_return_val_if_fail (collection != NULL, NULL);
+  g_return_val_if_fail (GST_IS_STREAM_COLLECTION (collection), NULL);
+
+  structure =
+      gst_structure_new_id (GST_QUARK (MESSAGE_STREAM_COLLECTION),
+      GST_QUARK (COLLECTION), GST_TYPE_STREAM_COLLECTION, collection, NULL);
+  message =
+      gst_message_new_custom (GST_MESSAGE_STREAM_COLLECTION, src, structure);
+
+  return message;
+}
+
+/**
+ * gst_message_parse_stream_collection:
+ * @message: a #GstMessage of type %GST_MESSAGE_STREAM_COLLECTION
+ * @collection: (out) (allow-none) (transfer full): A location where to store a
+ *  pointer to the #GstStreamCollection, or %NULL
+ *
+ * Parses a stream-collection message. 
+ *
+ * Since: 1.10
+ */
+void
+gst_message_parse_stream_collection (GstMessage * message,
+    GstStreamCollection ** collection)
+{
+  g_return_if_fail (GST_IS_MESSAGE (message));
+  g_return_if_fail (GST_MESSAGE_TYPE (message) ==
+      GST_MESSAGE_STREAM_COLLECTION);
+
+  if (collection)
+    gst_structure_id_get (GST_MESSAGE_STRUCTURE (message),
+        GST_QUARK (COLLECTION), GST_TYPE_STREAM_COLLECTION, collection, NULL);
+}
+
+/**
+ * gst_message_new_streams_selected:
+ * @src: The #GstObject that created the message
+ * @collection: (transfer none): The #GstStreamCollection
+ *
+ * Creates a new steams-selected message. The message is used to announce
+ * that an array of streams has been selected. This is generally in response
+ * to a #GST_EVENT_SELECT_STREAMS event, or when an element (such as decodebin3)
+ * makes an initial selection of streams.
+ *
+ * The message also contains the #GstStreamCollection to which the various streams
+ * belong to.
+ *
+ * Users of gst_message_new_streams_selected() can add the selected streams with
+ * gst_message_streams_selected_add().
+ *
+ * Returns: a newly allocated #GstMessage
+ *
+ * Since: 1.10
+ */
+GstMessage *
+gst_message_new_streams_selected (GstObject * src,
+    GstStreamCollection * collection)
+{
+  GstMessage *message;
+  GstStructure *structure;
+  GValue val = G_VALUE_INIT;
+
+  g_return_val_if_fail (collection != NULL, NULL);
+  g_return_val_if_fail (GST_IS_STREAM_COLLECTION (collection), NULL);
+
+  structure =
+      gst_structure_new_id (GST_QUARK (MESSAGE_STREAMS_SELECTED),
+      GST_QUARK (COLLECTION), GST_TYPE_STREAM_COLLECTION, collection, NULL);
+  g_value_init (&val, GST_TYPE_ARRAY);
+  gst_structure_id_take_value (structure, GST_QUARK (STREAMS), &val);
+  message =
+      gst_message_new_custom (GST_MESSAGE_STREAMS_SELECTED, src, structure);
+
+  return message;
+}
+
+/**
+ * gst_message_streams_selected_get_size:
+ * @message: a #GstMessage of type %GST_MESSAGE_STREAMS_SELECTED
+ *
+ * Returns the number of streams contained in the @message.
+ *
+ * Returns: The number of streams contained within.
+ *
+ * Since: 1.10
+ */
+guint
+gst_message_streams_selected_get_size (GstMessage * msg)
+{
+  const GValue *val;
+
+  g_return_val_if_fail (GST_IS_MESSAGE (msg), 0);
+  g_return_val_if_fail (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_STREAMS_SELECTED,
+      0);
+
+  val =
+      gst_structure_id_get_value (GST_MESSAGE_STRUCTURE (msg),
+      GST_QUARK (STREAMS));
+  return gst_value_array_get_size (val);
+}
+
+/**
+ * gst_message_streams_selected_add:
+ * @message: a #GstMessage of type %GST_MESSAGE_STREAMS_SELECTED
+ * @stream: (transfer none): a #GstStream to add to @message
+ *
+ * Adds the @stream to the @message.
+ *
+ * Since: 1.10
+ */
+void
+gst_message_streams_selected_add (GstMessage * msg, GstStream * stream)
+{
+  GValue *val;
+  GValue to_add = G_VALUE_INIT;
+
+  g_return_if_fail (GST_IS_MESSAGE (msg));
+  g_return_if_fail (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_STREAMS_SELECTED);
+  g_return_if_fail (GST_IS_STREAM (stream));
+
+  val =
+      (GValue *) gst_structure_id_get_value (GST_MESSAGE_STRUCTURE (msg),
+      GST_QUARK (STREAMS));
+  g_value_init (&to_add, GST_TYPE_STREAM);
+  g_value_set_object (&to_add, stream);
+  gst_value_array_append_and_take_value (val, &to_add);
+}
+
+/**
+ * gst_message_streams_selected_get_stream:
+ * @message: a #GstMessage of type %GST_MESSAGE_STREAMS_SELECTED
+ * @idx: Index of the stream to retrieve
+ *
+ * Retrieves the #GstStream with index @index from the @message.
+ *
+ * Returns: (transfer full): A #GstStream
+ *
+ * Since: 1.10
+ */
+GstStream *
+gst_message_streams_selected_get_stream (GstMessage * msg, guint idx)
+{
+  const GValue *streams, *val;
+
+  g_return_val_if_fail (GST_IS_MESSAGE (msg), NULL);
+  g_return_val_if_fail (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_STREAMS_SELECTED,
+      NULL);
+
+  streams =
+      gst_structure_id_get_value (GST_MESSAGE_STRUCTURE (msg),
+      GST_QUARK (STREAMS));
+  val = gst_value_array_get_value (streams, idx);
+  if (val) {
+    return (GstStream *) g_value_dup_object (val);
+  }
+
+  return NULL;
+}
+
+/**
+ * gst_message_parse_streams_selected:
+ * @message: a #GstMessage of type %GST_MESSAGE_STREAMS_SELECTED
+ * @collection: (out) (allow-none) (transfer full): A location where to store a
+ *  pointer to the #GstStreamCollection, or %NULL
+ *
+ * Parses a streams-selected message. 
+ *
+ * Since: 1.10
+ */
+void
+gst_message_parse_streams_selected (GstMessage * message,
+    GstStreamCollection ** collection)
+{
+  g_return_if_fail (GST_IS_MESSAGE (message));
+  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_STREAMS_SELECTED);
+
+  if (collection)
+    gst_structure_id_get (GST_MESSAGE_STRUCTURE (message),
+        GST_QUARK (COLLECTION), GST_TYPE_STREAM_COLLECTION, collection, NULL);
+}
+
+/**
+ * gst_message_new_redirect:
+ * @src: The #GstObject whose property changed (may or may not be a #GstElement)
+ * @location: (transfer none): location string for the new entry
+ * @tag_list: (transfer full) (allow-none): tag list for the new entry
+ * @entry_struct: (transfer full) (allow-none): structure for the new entry
+ *
+ * Creates a new redirect message and adds a new entry to it. Redirect messages
+ * are posted when an element detects that the actual data has to be retrieved
+ * from a different location. This is useful if such a redirection cannot be
+ * handled inside a source element, for example when HTTP 302/303 redirects
+ * return a non-HTTP URL.
+ *
+ * The redirect message can hold multiple entries. The first one is added
+ * when the redirect message is created, with the given location, tag_list,
+ * entry_struct arguments. Use gst_message_add_redirect_entry() to add more
+ * entries.
+ *
+ * Each entry has a location, a tag list, and a structure. All of these are
+ * optional. The tag list and structure are useful for additional metadata,
+ * such as bitrate statistics for the given location.
+ *
+ * By default, message recipients should treat entries in the order they are
+ * stored. The recipient should therefore try entry #0 first, and if this
+ * entry is not acceptable or working, try entry #1 etc. Senders must make
+ * sure that they add entries in this order. However, recipients are free to
+ * ignore the order and pick an entry that is "best" for them. One example
+ * would be a recipient that scans the entries for the one with the highest
+ * bitrate tag.
+ *
+ * The specified location string is copied. However, ownership over the tag
+ * list and structure are transferred to the message.
+ *
+ * Returns: a newly allocated #GstMessage
+ *
+ * Since: 1.10
+ */
+GstMessage *
+gst_message_new_redirect (GstObject * src, const gchar * location,
+    GstTagList * tag_list, const GstStructure * entry_struct)
+{
+  GstStructure *structure;
+  GstMessage *message;
+  GValue entry_locations_gvalue = G_VALUE_INIT;
+  GValue entry_taglists_gvalue = G_VALUE_INIT;
+  GValue entry_structures_gvalue = G_VALUE_INIT;
+
+  g_return_val_if_fail (location != NULL, NULL);
+
+  g_value_init (&entry_locations_gvalue, GST_TYPE_LIST);
+  g_value_init (&entry_taglists_gvalue, GST_TYPE_LIST);
+  g_value_init (&entry_structures_gvalue, GST_TYPE_LIST);
+
+  structure = gst_structure_new_id_empty (GST_QUARK (MESSAGE_REDIRECT));
+  gst_structure_id_take_value (structure, GST_QUARK (REDIRECT_ENTRY_LOCATIONS),
+      &entry_locations_gvalue);
+  gst_structure_id_take_value (structure, GST_QUARK (REDIRECT_ENTRY_TAGLISTS),
+      &entry_taglists_gvalue);
+  gst_structure_id_take_value (structure, GST_QUARK (REDIRECT_ENTRY_STRUCTURES),
+      &entry_structures_gvalue);
+
+  message = gst_message_new_custom (GST_MESSAGE_REDIRECT, src, structure);
+  g_assert (message != NULL);
+
+  gst_message_add_redirect_entry (message, location, tag_list, entry_struct);
+
+  return message;
+}
+
+/**
+ * gst_message_add_redirect_entry:
+ * @message: a #GstMessage of type %GST_MESSAGE_REDIRECT
+ * @location: (transfer none): location string for the new entry
+ * @tag_list: (transfer full) (allow-none): tag list for the new entry
+ * @entry_struct: (transfer full) (allow-none): structure for the new entry
+ *
+ * Creates and appends a new entry.
+ *
+ * The specified location string is copied. However, ownership over the tag
+ * list and structure are transferred to the message.
+ *
+ * Since: 1.10
+ */
+void
+gst_message_add_redirect_entry (GstMessage * message, const gchar * location,
+    GstTagList * tag_list, const GstStructure * entry_struct)
+{
+  GValue val = G_VALUE_INIT;
+  GstStructure *structure;
+  GValue *entry_locations_gvalue;
+  GValue *entry_taglists_gvalue;
+  GValue *entry_structures_gvalue;
+
+  g_return_if_fail (location != NULL);
+  g_return_if_fail (GST_IS_MESSAGE (message));
+  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_REDIRECT);
+
+  structure = GST_MESSAGE_STRUCTURE (message);
+
+  entry_locations_gvalue =
+      (GValue *) gst_structure_id_get_value (structure,
+      GST_QUARK (REDIRECT_ENTRY_LOCATIONS));
+  g_return_if_fail (GST_VALUE_HOLDS_LIST (entry_locations_gvalue));
+  entry_taglists_gvalue =
+      (GValue *) gst_structure_id_get_value (structure,
+      GST_QUARK (REDIRECT_ENTRY_TAGLISTS));
+  g_return_if_fail (GST_VALUE_HOLDS_LIST (entry_taglists_gvalue));
+  entry_structures_gvalue =
+      (GValue *) gst_structure_id_get_value (structure,
+      GST_QUARK (REDIRECT_ENTRY_STRUCTURES));
+  g_return_if_fail (GST_VALUE_HOLDS_LIST (entry_structures_gvalue));
+
+  g_value_init (&val, G_TYPE_STRING);
+  if (location)
+    g_value_set_string (&val, location);
+  gst_value_list_append_and_take_value (entry_locations_gvalue, &val);
+
+  g_value_init (&val, GST_TYPE_TAG_LIST);
+  if (tag_list)
+    g_value_take_boxed (&val, tag_list);
+  gst_value_list_append_and_take_value (entry_taglists_gvalue, &val);
+
+  g_value_init (&val, GST_TYPE_STRUCTURE);
+  if (entry_struct)
+    g_value_take_boxed (&val, entry_struct);
+  gst_value_list_append_and_take_value (entry_structures_gvalue, &val);
+}
+
+/**
+ * gst_message_parse_redirect_entry:
+ * @message: a #GstMessage of type %GST_MESSAGE_REDIRECT
+ * @entry_index: index of the entry to parse
+ * @location: (out) (transfer none) (allow-none): return location for
+ *     the pointer to the entry's location string, or %NULL
+ * @tag_list: (out) (transfer none) (allow-none): return location for
+ *     the pointer to the entry's tag list, or %NULL
+ * @entry_struct: (out) (transfer none) (allow-none): return location
+ *     for the pointer to the entry's structure, or %NULL
+ *
+ * Parses the location and/or structure from the entry with the given index.
+ * The index must be between 0 and gst_message_get_num_redirect_entries() - 1.
+ * Returned pointers are valid for as long as this message exists.
+ *
+ * Since: 1.10
+ */
+void
+gst_message_parse_redirect_entry (GstMessage * message, gsize entry_index,
+    const gchar ** location, GstTagList ** tag_list,
+    const GstStructure ** entry_struct)
+{
+  const GValue *val;
+  GstStructure *structure;
+  const GValue *entry_locations_gvalue;
+  const GValue *entry_taglists_gvalue;
+  const GValue *entry_structures_gvalue;
+
+  g_return_if_fail (GST_IS_MESSAGE (message));
+  g_return_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_REDIRECT);
+
+  if (G_UNLIKELY (!location && !tag_list && !entry_struct))
+    return;
+
+  structure = GST_MESSAGE_STRUCTURE (message);
+
+  entry_locations_gvalue =
+      gst_structure_id_get_value (structure,
+      GST_QUARK (REDIRECT_ENTRY_LOCATIONS));
+  g_return_if_fail (GST_VALUE_HOLDS_LIST (entry_locations_gvalue));
+  entry_taglists_gvalue =
+      gst_structure_id_get_value (structure,
+      GST_QUARK (REDIRECT_ENTRY_TAGLISTS));
+  g_return_if_fail (GST_VALUE_HOLDS_LIST (entry_taglists_gvalue));
+  entry_structures_gvalue =
+      gst_structure_id_get_value (structure,
+      GST_QUARK (REDIRECT_ENTRY_STRUCTURES));
+  g_return_if_fail (GST_VALUE_HOLDS_LIST (entry_structures_gvalue));
+
+  if (location) {
+    val = gst_value_list_get_value (entry_locations_gvalue, entry_index);
+    g_return_if_fail (val != NULL);
+    *location = g_value_get_string (val);
+  }
+
+  if (tag_list) {
+    val = gst_value_list_get_value (entry_taglists_gvalue, entry_index);
+    g_return_if_fail (val != NULL);
+    *tag_list = (GstTagList *) g_value_get_boxed (val);
+  }
+
+  if (entry_struct) {
+    val = gst_value_list_get_value (entry_structures_gvalue, entry_index);
+    g_return_if_fail (val != NULL);
+    *entry_struct = (const GstStructure *) g_value_get_boxed (val);
+  }
+}
+
+/**
+ * gst_message_get_num_redirect_entries:
+ * @message: a #GstMessage of type %GST_MESSAGE_REDIRECT
+ *
+ * Returns: the number of entries stored in the message
+ *
+ * Since: 1.10
+ */
+gsize
+gst_message_get_num_redirect_entries (GstMessage * message)
+{
+  GstStructure *structure;
+  const GValue *entry_locations_gvalue;
+  const GValue *entry_taglists_gvalue;
+  const GValue *entry_structures_gvalue;
+  gsize size;
+
+  g_return_val_if_fail (GST_IS_MESSAGE (message), 0);
+  g_return_val_if_fail (GST_MESSAGE_TYPE (message) == GST_MESSAGE_REDIRECT, 0);
+
+  structure = GST_MESSAGE_STRUCTURE (message);
+
+  entry_locations_gvalue =
+      gst_structure_id_get_value (structure,
+      GST_QUARK (REDIRECT_ENTRY_LOCATIONS));
+  g_return_val_if_fail (GST_VALUE_HOLDS_LIST (entry_locations_gvalue), 0);
+  entry_taglists_gvalue =
+      gst_structure_id_get_value (structure,
+      GST_QUARK (REDIRECT_ENTRY_TAGLISTS));
+  g_return_val_if_fail (GST_VALUE_HOLDS_LIST (entry_taglists_gvalue), 0);
+  entry_structures_gvalue =
+      gst_structure_id_get_value (structure,
+      GST_QUARK (REDIRECT_ENTRY_STRUCTURES));
+  g_return_val_if_fail (GST_VALUE_HOLDS_LIST (entry_structures_gvalue), 0);
+
+  size = gst_value_list_get_size (entry_locations_gvalue);
+
+  g_return_val_if_fail ((size ==
+          gst_value_list_get_size (entry_structures_gvalue))
+      && (size == gst_value_list_get_size (entry_taglists_gvalue)), 0);
+
+  return size;
+}
diff --git a/gst/gstmessage.h b/gst/gstmessage.h
index 1ea4085..68213eb 100644
--- a/gst/gstmessage.h
+++ b/gst/gstmessage.h
@@ -108,6 +108,15 @@
  *     a #GstDeviceProvider (Since 1.4)
  * @GST_MESSAGE_DEVICE_REMOVED: Message indicating a #GstDevice was removed
  *     from a #GstDeviceProvider (Since 1.4)
+ * @GST_MESSAGE_PROPERTY_NOTIFY: Message indicating a #GObject property has
+ *     changed (Since 1.10)
+ * @GST_MESSAGE_STREAM_COLLECTION: Message indicating a new #GstStreamCollection
+ *     is available (Since 1.10)
+ * @GST_MESSAGE_STREAMS_SELECTED: Message indicating the active selection of
+ *     #GstStreams has changed (Since 1.10)
+ * @GST_MESSAGE_REDIRECT: Message indicating to request the application to
+ *     try to play the given URL(s). Useful if for example a HTTP 302/303
+ *     response is received with a non-HTTP URL inside. (Since 1.10)
  * @GST_MESSAGE_ANY: mask for all of the above messages.
  *
  * The different message types that are available.
@@ -156,6 +165,10 @@
   GST_MESSAGE_EXTENDED          = (1 << 31),
   GST_MESSAGE_DEVICE_ADDED      = GST_MESSAGE_EXTENDED + 1,
   GST_MESSAGE_DEVICE_REMOVED    = GST_MESSAGE_EXTENDED + 2,
+  GST_MESSAGE_PROPERTY_NOTIFY   = GST_MESSAGE_EXTENDED + 3,
+  GST_MESSAGE_STREAM_COLLECTION = GST_MESSAGE_EXTENDED + 4,
+  GST_MESSAGE_STREAMS_SELECTED  = GST_MESSAGE_EXTENDED + 5,
+  GST_MESSAGE_REDIRECT          = GST_MESSAGE_EXTENDED + 6,
   GST_MESSAGE_ANY               = (gint) (0xffffffff)
 } GstMessageType;
 
@@ -167,6 +180,7 @@
 #include <gst/gstquery.h>
 #include <gst/gsttoc.h>
 #include <gst/gstdevice.h>
+#include <gst/gststreamcollection.h>
 
 GST_EXPORT GType _gst_message_type;
 
@@ -435,15 +449,21 @@
 /* ERROR */
 
 GstMessage *    gst_message_new_error           (GstObject * src, GError * error, const gchar * debug) G_GNUC_MALLOC;
+GstMessage *    gst_message_new_error_with_details (GstObject * src, GError * error, const gchar * debug, GstStructure * details) G_GNUC_MALLOC;
 void            gst_message_parse_error         (GstMessage *message, GError **gerror, gchar **debug);
+void            gst_message_parse_error_details (GstMessage *message, const GstStructure **structure);
 
 /* WARNING */
 GstMessage *    gst_message_new_warning         (GstObject * src, GError * error, const gchar * debug) G_GNUC_MALLOC;
+GstMessage *    gst_message_new_warning_with_details (GstObject * src, GError * error, const gchar * debug, GstStructure * details) G_GNUC_MALLOC;
 void            gst_message_parse_warning       (GstMessage *message, GError **gerror, gchar **debug);
+void            gst_message_parse_warning_details (GstMessage *message, const GstStructure **structure);
 
 /* INFO */
 GstMessage *    gst_message_new_info            (GstObject * src, GError * error, const gchar * debug) G_GNUC_MALLOC;
+GstMessage *    gst_message_new_info_with_details (GstObject * src, GError * error, const gchar * debug, GstStructure * details) G_GNUC_MALLOC;
 void            gst_message_parse_info          (GstMessage *message, GError **gerror, gchar **debug);
+void            gst_message_parse_info_details  (GstMessage *message, const GstStructure **structure);
 
 /* TAG */
 GstMessage *    gst_message_new_tag             (GstObject * src, GstTagList * tag_list) G_GNUC_MALLOC;
@@ -592,6 +612,26 @@
 GstMessage *    gst_message_new_device_removed    (GstObject * src, GstDevice * device) G_GNUC_MALLOC;
 void            gst_message_parse_device_removed  (GstMessage * message, GstDevice ** device);
 
+/* PROPERTY_NOTIFY */
+GstMessage *    gst_message_new_property_notify   (GstObject * src, const gchar * property_name, GValue * val) G_GNUC_MALLOC;
+void            gst_message_parse_property_notify (GstMessage * message, GstObject ** object, const gchar ** property_name, const GValue ** property_value);
+
+/* STREAM_COLLECTION */
+GstMessage *    gst_message_new_stream_collection   (GstObject * src, GstStreamCollection * collection) G_GNUC_MALLOC;
+void            gst_message_parse_stream_collection (GstMessage *message, GstStreamCollection **collection);
+
+/* STREAMS_SELECTED */
+GstMessage *    gst_message_new_streams_selected (GstObject *src, GstStreamCollection *collection);
+void            gst_message_streams_selected_add (GstMessage *message, GstStream *stream);
+void            gst_message_parse_streams_selected (GstMessage * message, GstStreamCollection **collection);
+guint           gst_message_streams_selected_get_size (GstMessage * message);
+GstStream      *gst_message_streams_selected_get_stream (GstMessage *message, guint idx);
+
+/* REDIRECT */
+GstMessage *    gst_message_new_redirect             (GstObject * src, const gchar * location, GstTagList * tag_list, const GstStructure * entry_struct) G_GNUC_MALLOC;
+void            gst_message_add_redirect_entry       (GstMessage * message, const gchar * location, GstTagList * tag_list, const GstStructure * entry_struct);
+void            gst_message_parse_redirect_entry     (GstMessage * message, gsize entry_index, const gchar ** location, GstTagList ** tag_list, const GstStructure ** entry_struct);
+gsize           gst_message_get_num_redirect_entries (GstMessage * message);
 
 #ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstMessage, gst_message_unref)
diff --git a/gst/gstmeta.c b/gst/gstmeta.c
index 1269c56..daa26ca 100644
--- a/gst/gstmeta.c
+++ b/gst/gstmeta.c
@@ -172,6 +172,10 @@
   g_return_val_if_fail (impl != NULL, NULL);
   g_return_val_if_fail (size != 0, NULL);
 
+  if (init_func == NULL)
+    g_critical ("Registering meta implementation '%s' without init function",
+        impl);
+
   /* first try to register the implementation name. It's possible
    * that this fails because it was already registered. Don't warn,
    * glib did this for us already. */
diff --git a/gst/gstminiobject.c b/gst/gstminiobject.c
index 4812f31..db571ab 100644
--- a/gst/gstminiobject.c
+++ b/gst/gstminiobject.c
@@ -57,11 +57,6 @@
 #include "gst/gstinfo.h"
 #include <gobject/gvaluecollector.h>
 
-#ifndef GST_DISABLE_TRACE
-#include "gsttrace.h"
-static GstAllocTrace *_gst_mini_object_trace;
-#endif
-
 /* Mutex used for weak referencing */
 G_LOCK_DEFINE_STATIC (qdata_mutex);
 static GQuark weak_ref_quark;
@@ -93,10 +88,6 @@
 _priv_gst_mini_object_initialize (void)
 {
   weak_ref_quark = g_quark_from_static_string ("GstMiniObjectWeakRefQuark");
-
-#ifndef GST_DISABLE_TRACE
-  _gst_mini_object_trace = _gst_alloc_trace_register ("GstMiniObject", 0);
-#endif
 }
 
 /**
@@ -129,9 +120,7 @@
   mini_object->n_qdata = 0;
   mini_object->qdata = NULL;
 
-#ifndef GST_DISABLE_TRACE
-  _gst_alloc_trace_new (_gst_mini_object_trace, mini_object);
-#endif
+  GST_TRACER_MINI_OBJECT_CREATED (mini_object);
 }
 
 /**
@@ -460,9 +449,7 @@
         call_finalize_notify (mini_object);
         g_free (mini_object->qdata);
       }
-#ifndef GST_DISABLE_TRACE
-      _gst_alloc_trace_free (_gst_mini_object_trace, mini_object);
-#endif
+      GST_TRACER_MINI_OBJECT_DESTROYED (mini_object);
       if (mini_object->free)
         mini_object->free (mini_object);
     }
@@ -631,7 +618,8 @@
   if ((i = find_notify (object, weak_ref_quark, TRUE, notify, data)) != -1) {
     remove_notify (object, i);
   } else {
-    g_warning ("%s: couldn't find weak ref %p(%p)", G_STRFUNC, notify, data);
+    g_warning ("%s: couldn't find weak ref %p (object:%p data:%p)", G_STRFUNC,
+        notify, object, data);
   }
   G_UNLOCK (qdata_mutex);
 }
diff --git a/gst/gstminiobject.h b/gst/gstminiobject.h
index 15556fb..88eb080 100644
--- a/gst/gstminiobject.h
+++ b/gst/gstminiobject.h
@@ -124,6 +124,9 @@
  * gst_mini_object_lock() and gst_mini_object_unlock().
  * @GST_MINI_OBJECT_FLAG_LOCK_READONLY: the object is permanently locked in
  * READONLY mode. Only read locks can be performed on the object.
+ * @GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED: the object is expected to stay alive
+ * even after gst_deinit() has been called and so should be ignored by leak
+ * detection tools. (Since 1.10)
  * @GST_MINI_OBJECT_FLAG_LAST: first flag that can be used by subclasses.
  *
  * Flags for the mini object
@@ -132,6 +135,7 @@
 {
   GST_MINI_OBJECT_FLAG_LOCKABLE      = (1 << 0),
   GST_MINI_OBJECT_FLAG_LOCK_READONLY = (1 << 1),
+  GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED = (1 << 2),
   /* padding */
   GST_MINI_OBJECT_FLAG_LAST          = (1 << 4)
 } GstMiniObjectFlags;
@@ -237,10 +241,10 @@
 void            gst_mini_object_unlock          (GstMiniObject *object, GstLockFlags flags);
 
 gboolean        gst_mini_object_is_writable     (const GstMiniObject *mini_object);
-GstMiniObject * gst_mini_object_make_writable	(GstMiniObject *mini_object);
+GstMiniObject * gst_mini_object_make_writable	(GstMiniObject *mini_object) G_GNUC_WARN_UNUSED_RESULT;
 
 /* copy */
-GstMiniObject * gst_mini_object_copy		(const GstMiniObject *mini_object) G_GNUC_MALLOC;
+GstMiniObject * gst_mini_object_copy		(const GstMiniObject *mini_object) G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT;
 
 
 void            gst_mini_object_set_qdata       (GstMiniObject *object, GQuark quark,
@@ -251,7 +255,7 @@
 
 gboolean        gst_mini_object_replace         (GstMiniObject **olddata, GstMiniObject *newdata);
 gboolean        gst_mini_object_take            (GstMiniObject **olddata, GstMiniObject *newdata);
-GstMiniObject * gst_mini_object_steal           (GstMiniObject **olddata);
+GstMiniObject * gst_mini_object_steal           (GstMiniObject **olddata) G_GNUC_WARN_UNUSED_RESULT;
 
 /**
  * GST_DEFINE_MINI_OBJECT_TYPE:
diff --git a/gst/gstobject.c b/gst/gstobject.c
index 1f58c8d..2e75086 100644
--- a/gst/gstobject.c
+++ b/gst/gstobject.c
@@ -101,11 +101,6 @@
 #include "gstparamspecs.h"
 #include "gstutils.h"
 
-#ifndef GST_DISABLE_TRACE
-#include "gsttrace.h"
-static GstAllocTrace *_gst_object_trace;
-#endif
-
 #define DEBUG_REFCOUNT
 
 /* Object signals and args */
@@ -154,15 +149,18 @@
 G_DEFINE_ABSTRACT_TYPE (GstObject, gst_object, G_TYPE_INITIALLY_UNOWNED);
 
 static void
+gst_object_constructed (GObject * object)
+{
+  GST_TRACER_OBJECT_CREATED (GST_OBJECT_CAST (object));
+
+  ((GObjectClass *) gst_object_parent_class)->constructed (object);
+}
+
+static void
 gst_object_class_init (GstObjectClass * klass)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
-#ifndef GST_DISABLE_TRACE
-  _gst_object_trace =
-      _gst_alloc_trace_register (g_type_name (GST_TYPE_OBJECT), -2);
-#endif
-
   gobject_class->set_property = gst_object_set_property;
   gobject_class->get_property = gst_object_get_property;
 
@@ -208,6 +206,7 @@
   gobject_class->dispatch_properties_changed
       = GST_DEBUG_FUNCPTR (gst_object_dispatch_properties_changed);
 
+  gobject_class->constructed = gst_object_constructed;
   gobject_class->dispose = gst_object_dispose;
   gobject_class->finalize = gst_object_finalize;
 }
@@ -220,10 +219,6 @@
   object->name = NULL;
   GST_CAT_TRACE_OBJECT (GST_CAT_REFCOUNTING, object, "%p new", object);
 
-#ifndef GST_DISABLE_TRACE
-  _gst_alloc_trace_new (_gst_object_trace, object);
-#endif
-
   object->flags = 0;
 
   object->control_rate = 100 * GST_MSECOND;
@@ -366,7 +361,7 @@
   GstObject *self = (GstObject *) object;
   GstObject *parent;
 
-  GST_CAT_TRACE_OBJECT (GST_CAT_REFCOUNTING, object, "dispose");
+  GST_CAT_TRACE_OBJECT (GST_CAT_REFCOUNTING, object, "%p dispose", object);
 
   GST_OBJECT_LOCK (object);
   if ((parent = GST_OBJECT_PARENT (object)))
@@ -408,16 +403,14 @@
 {
   GstObject *gstobject = GST_OBJECT_CAST (object);
 
-  GST_CAT_TRACE_OBJECT (GST_CAT_REFCOUNTING, object, "finalize");
+  GST_CAT_TRACE_OBJECT (GST_CAT_REFCOUNTING, object, "%p finalize", object);
 
   g_signal_handlers_destroy (object);
 
   g_free (gstobject->name);
   g_mutex_clear (&gstobject->lock);
 
-#ifndef GST_DISABLE_TRACE
-  _gst_alloc_trace_free (_gst_object_trace, object);
-#endif
+  GST_TRACER_OBJECT_DESTROYED (gstobject);
 
   ((GObjectClass *) gst_object_parent_class)->finalize (object);
 }
@@ -623,10 +616,8 @@
     GST_OBJECT_UNLOCK (object);
     result = gst_object_set_name_default (object);
   }
-  /* FIXME-0.11: this misses a g_object_notify (object, "name"); unless called
-   * from gst_object_set_property.
-   * Ideally remove such custom setters (or make it static).
-   */
+
+  g_object_notify (G_OBJECT (object), "name");
   return result;
 
   /* error */
diff --git a/gst/gstobject.h b/gst/gstobject.h
index ad033e8..1ca6063 100644
--- a/gst/gstobject.h
+++ b/gst/gstobject.h
@@ -41,12 +41,16 @@
 
 /**
  * GstObjectFlags:
+ * @GST_OBJECT_FLAG_MAY_BE_LEAKED: the object is expected to stay alive even
+ * after gst_deinit() has been called and so should be ignored by leak
+ * detection tools. (Since 1.10)
  * @GST_OBJECT_FLAG_LAST: subclasses can add additional flags starting from this flag
  *
  * The standard flags that an gstobject may have.
  */
 typedef enum
 {
+  GST_OBJECT_FLAG_MAY_BE_LEAKED = (1 << 0),
   /* padding */
   GST_OBJECT_FLAG_LAST = (1<<4)
 } GstObjectFlags;
diff --git a/gst/gstpad.c b/gst/gstpad.c
index e52313c..cd9fff1 100644
--- a/gst/gstpad.c
+++ b/gst/gstpad.c
@@ -643,8 +643,8 @@
 {
   gint64 offset;
 
-  GST_DEBUG_OBJECT (pad, "apply pad offset %" GST_TIME_FORMAT,
-      GST_TIME_ARGS (pad->offset));
+  GST_DEBUG_OBJECT (pad, "apply pad offset %" GST_STIME_FORMAT,
+      GST_STIME_ARGS (pad->offset));
 
   if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT) {
     GstSegment segment;
@@ -699,7 +699,7 @@
   GstPad *pad = GST_PAD_CAST (object);
   GstPad *peer;
 
-  GST_CAT_DEBUG_OBJECT (GST_CAT_REFCOUNTING, pad, "dispose");
+  GST_CAT_DEBUG_OBJECT (GST_CAT_REFCOUNTING, pad, "%p dispose", pad);
 
   /* unlink the peer pad */
   if ((peer = gst_pad_get_peer (pad))) {
@@ -3184,6 +3184,7 @@
 /* Default latency implementation */
 typedef struct
 {
+  guint count;
   gboolean live;
   GstClockTime min, max;
 } LatencyFoldData;
@@ -3215,7 +3216,8 @@
     GST_LOG_OBJECT (pad, "got latency live:%s min:%" G_GINT64_FORMAT
         " max:%" G_GINT64_FORMAT, live ? "true" : "false", min, max);
 
-    if (live) {
+    /* FIXME : Why do we only take values into account if it's live ? */
+    if (live || fold_data->count == 0) {
       if (min > fold_data->min)
         fold_data->min = min;
 
@@ -3224,8 +3226,9 @@
       else if (max < fold_data->max)
         fold_data->max = max;
 
-      fold_data->live = TRUE;
+      fold_data->live = live;
     }
+    fold_data->count += 1;
   } else if (peer) {
     GST_DEBUG_OBJECT (pad, "latency query failed");
     g_value_set_boolean (ret, FALSE);
@@ -3256,6 +3259,7 @@
   g_value_init (&ret, G_TYPE_BOOLEAN);
 
 retry:
+  fold_data.count = 0;
   fold_data.live = FALSE;
   fold_data.min = 0;
   fold_data.max = GST_CLOCK_TIME_NONE;
@@ -3417,13 +3421,25 @@
   type = info->type;
   original_data = info->data;
 
-  /* one of the data types for non-idle probes */
-  if ((type & GST_PAD_PROBE_TYPE_IDLE) == 0
-      && (flags & _PAD_PROBE_TYPE_ALL_BOTH_AND_FLUSH & type) == 0)
-    goto no_match;
   /* one of the scheduling types */
   if ((flags & GST_PAD_PROBE_TYPE_SCHEDULING & type) == 0)
     goto no_match;
+
+  if (type & GST_PAD_PROBE_TYPE_PUSH) {
+    /* one of the data types for non-idle probes */
+    if ((type & GST_PAD_PROBE_TYPE_IDLE) == 0
+        && (flags & _PAD_PROBE_TYPE_ALL_BOTH_AND_FLUSH & type) == 0)
+      goto no_match;
+  } else if (type & GST_PAD_PROBE_TYPE_PULL) {
+    /* one of the data types for non-idle probes */
+    if ((type & GST_PAD_PROBE_TYPE_BLOCKING) == 0
+        && (flags & _PAD_PROBE_TYPE_ALL_BOTH_AND_FLUSH & type) == 0)
+      goto no_match;
+  } else {
+    /* Type must have PULL or PUSH probe types */
+    g_assert_not_reached ();
+  }
+
   /* one of the blocking types must match */
   if ((type & GST_PAD_PROBE_TYPE_BLOCKING) &&
       (flags & GST_PAD_PROBE_TYPE_BLOCKING & type) == 0)
@@ -3740,7 +3756,8 @@
     goto done;
 
   pad->offset = offset;
-  GST_DEBUG_OBJECT (pad, "changed offset to %" G_GINT64_FORMAT, offset);
+  GST_DEBUG_OBJECT (pad, "changed offset to %" GST_STIME_FORMAT,
+      GST_STIME_ARGS (offset));
 
   /* resend all sticky events with updated offset on next buffer push */
   events_foreach (pad, mark_event_not_received, NULL);
@@ -5018,8 +5035,9 @@
   /* Unset the EOS flag when received STREAM_START event, so pad can
    * store sticky event and then push it later */
   if (type == GST_EVENT_STREAM_START) {
-    GST_LOG_OBJECT (pad, "Removing pending EOS events");
+    GST_LOG_OBJECT (pad, "Removing pending EOS and StreamGroupDone events");
     remove_event_by_type (pad, GST_EVENT_EOS);
+    remove_event_by_type (pad, GST_EVENT_STREAM_GROUP_DONE);
     GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_EOS);
   }
 
@@ -5115,7 +5133,7 @@
 /**
  * gst_pad_store_sticky_event:
  * @pad: a #GstPad
- * @event: a #GstEvent
+ * @event: (transfer none): a #GstEvent
  *
  * Store the sticky @event on @pad
  *
@@ -5185,6 +5203,7 @@
       /* Remove sticky EOS events */
       GST_LOG_OBJECT (pad, "Removing pending EOS events");
       remove_event_by_type (pad, GST_EVENT_EOS);
+      remove_event_by_type (pad, GST_EVENT_STREAM_GROUP_DONE);
       remove_event_by_type (pad, GST_EVENT_SEGMENT);
       GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_EOS);
       pad->ABI.abi.last_flowret = GST_FLOW_OK;
@@ -5509,6 +5528,7 @@
       /* Remove pending EOS events */
       GST_LOG_OBJECT (pad, "Removing pending EOS and SEGMENT events");
       remove_event_by_type (pad, GST_EVENT_EOS);
+      remove_event_by_type (pad, GST_EVENT_STREAM_GROUP_DONE);
       remove_event_by_type (pad, GST_EVENT_SEGMENT);
       GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_EOS);
       pad->ABI.abi.last_flowret = GST_FLOW_OK;
@@ -5536,6 +5556,7 @@
           /* Remove sticky EOS events */
           GST_LOG_OBJECT (pad, "Removing pending EOS events");
           remove_event_by_type (pad, GST_EVENT_EOS);
+          remove_event_by_type (pad, GST_EVENT_STREAM_GROUP_DONE);
           GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_EOS);
           break;
         default:
diff --git a/gst/gstpadtemplate.c b/gst/gstpadtemplate.c
index a7789d4..4c834bb 100644
--- a/gst/gstpadtemplate.c
+++ b/gst/gstpadtemplate.c
@@ -51,7 +51,7 @@
  *
  * A padtemplate can be used to create a pad (see gst_pad_new_from_template()
  * or gst_pad_new_from_static_template ()) or to add to an element class
- * (see gst_element_class_add_pad_template ()).
+ * (see gst_element_class_add_static_pad_template ()).
  *
  * The following code example shows the code to create a pad from a padtemplate.
  * |[<!-- language="C" -->
@@ -82,8 +82,7 @@
  *   {
  *     GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
  *
- *     gst_element_class_add_pad_template (gstelement_class,
- *         gst_static_pad_template_get (&amp;my_template));
+ *     gst_element_class_add_static_pad_template (gstelement_class, &amp;my_template);
  *   }
  * ]|
  */
@@ -201,6 +200,8 @@
 static void
 gst_pad_template_init (GstPadTemplate * templ)
 {
+  /* GstPadTemplate objects are usually leaked */
+  GST_OBJECT_FLAG_SET (templ, GST_OBJECT_FLAG_MAY_BE_LEAKED);
 }
 
 static void
@@ -396,6 +397,9 @@
       break;
     case PROP_CAPS:
       GST_PAD_TEMPLATE_CAPS (object) = g_value_dup_boxed (value);
+      /* GstPadTemplate are usually leaked so are their caps */
+      GST_MINI_OBJECT_FLAG_SET (GST_PAD_TEMPLATE_CAPS (object),
+          GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
diff --git a/gst/gstparse.c b/gst/gstparse.c
index a85fcf0..329578e 100644
--- a/gst/gstparse.c
+++ b/gst/gstparse.c
@@ -306,7 +306,9 @@
  *
  * Returns: (transfer floating): a new element on success, %NULL on failure. If
  *    more than one toplevel element is specified by the @pipeline_description,
- *    all elements are put into a #GstPipeline, which then is returned.
+ *    all elements are put into a #GstPipeline, which then is returned (unless
+ *    the GST_PARSE_FLAG_PLACE_IN_BIN flag is set, in which case they are put
+ *    in a #GstBin instead).
  */
 GstElement *
 gst_parse_launch_full (const gchar * pipeline_description,
diff --git a/gst/gstparse.h b/gst/gstparse.h
index 44912f0..55f28eb 100644
--- a/gst/gstparse.h
+++ b/gst/gstparse.h
@@ -70,6 +70,9 @@
  *      in some cases)
  * @GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS: If a bin only has a single element,
  *     just return the element.
+ * @GST_PARSE_FLAG_PLACE_IN_BIN: If more than one toplevel element is described
+ *     by the pipeline description string, put them in a #GstBin instead of a
+ *     #GstPipeline. (Since 1.10)
  *
  * Parsing options.
  */
@@ -77,7 +80,8 @@
 {
   GST_PARSE_FLAG_NONE = 0,
   GST_PARSE_FLAG_FATAL_ERRORS = (1 << 0),
-  GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS = (1 << 1)
+  GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS = (1 << 1),
+  GST_PARSE_FLAG_PLACE_IN_BIN = (1 << 2)
 } GstParseFlags;
 
 #define GST_TYPE_PARSE_CONTEXT (gst_parse_context_get_type())
diff --git a/gst/gstpipeline.c b/gst/gstpipeline.c
index a258c34..554ff6e 100644
--- a/gst/gstpipeline.c
+++ b/gst/gstpipeline.c
@@ -243,7 +243,7 @@
   GstPipeline *pipeline = GST_PIPELINE (object);
   GstClock **clock_p = &pipeline->fixed_clock;
 
-  GST_CAT_DEBUG_OBJECT (GST_CAT_REFCOUNTING, pipeline, "dispose");
+  GST_CAT_DEBUG_OBJECT (GST_CAT_REFCOUNTING, pipeline, "%p dispose", pipeline);
 
   /* clear and unref any fixed clock */
   gst_object_replace ((GstObject **) clock_p, NULL);
diff --git a/gst/gstpoll.c b/gst/gstpoll.c
index 04165a5..23bceab 100644
--- a/gst/gstpoll.c
+++ b/gst/gstpoll.c
@@ -84,6 +84,12 @@
 #include <sys/socket.h>
 #endif
 
+#ifdef G_OS_WIN32
+#  ifndef EWOULDBLOCK
+#  define EWOULDBLOCK EAGAIN    /* This is just to placate gcc */
+#  endif
+#endif /* G_OS_WIN32 */
+
 /* OS/X needs this because of bad headers */
 #include <string.h>
 
@@ -133,7 +139,6 @@
   GArray *active_fds;
 
 #ifndef G_OS_WIN32
-  gchar buf[1];
   GstPollFD control_read_fd;
   GstPollFD control_write_fd;
 #else
@@ -167,11 +172,104 @@
 #define MARK_REBUILD(s)     (g_atomic_int_set(&(s)->rebuild, 1))
 
 #ifndef G_OS_WIN32
-#define WAKE_EVENT(s)       (write ((s)->control_write_fd.fd, "W", 1) == 1)
-#define RELEASE_EVENT(s)    (read ((s)->control_read_fd.fd, (s)->buf, 1) == 1)
+
+static gboolean
+wake_event (GstPoll * set)
+{
+  ssize_t num_written;
+  while ((num_written = write (set->control_write_fd.fd, "W", 1)) != 1) {
+    if (num_written == -1 && errno != EAGAIN && errno != EINTR) {
+      g_critical ("%p: failed to wake event: %s", set, strerror (errno));
+      return FALSE;
+    }
+  }
+  return TRUE;
+}
+
+static gboolean
+release_event (GstPoll * set)
+{
+  gchar buf[1] = { '\0' };
+  ssize_t num_read;
+  while ((num_read = read (set->control_read_fd.fd, buf, 1)) != 1) {
+    if (num_read == -1 && errno != EAGAIN && errno != EINTR) {
+      g_critical ("%p: failed to release event: %s", set, strerror (errno));
+      return FALSE;
+    }
+  }
+  return TRUE;
+}
+
 #else
-#define WAKE_EVENT(s)       (SetLastError (0), SetEvent ((s)->wakeup_event), errno = GetLastError () == NO_ERROR ? 0 : EACCES, errno == 0 ? 1 : 0)
-#define RELEASE_EVENT(s)    (ResetEvent ((s)->wakeup_event))
+
+static void
+format_last_error (gchar * buf, size_t buf_len)
+{
+  DWORD flags = FORMAT_MESSAGE_FROM_SYSTEM;
+  LPCVOID src = NULL;
+  DWORD lang = 0;
+  DWORD id;
+  id = GetLastError ();
+  FormatMessage (flags, src, id, lang, buf, (DWORD) buf_len, NULL);
+  SetLastError (id);
+}
+
+static gboolean
+wake_event (GstPoll * set)
+{
+  SetLastError (0);
+  errno = 0;
+  if (!SetEvent (set->wakeup_event)) {
+    gchar msg[1024] = "<unknown>";
+    format_last_error (msg, sizeof (msg));
+    g_critical ("%p: failed to set wakup_event: %s", set, msg);
+    errno = EBADF;
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
+static gboolean
+release_event (GstPoll * set)
+{
+  DWORD status;
+  SetLastError (0);
+  errno = 0;
+  if (status = WaitForSingleObject (set->wakeup_event, INFINITE)) {
+    const gchar *reason = "unknown";
+    gchar msg[1024] = "<unknown>";
+    switch (status) {
+      case WAIT_ABANDONED:
+        reason = "WAIT_ABANDONED";
+        break;
+      case WAIT_TIMEOUT:
+        reason = "WAIT_TIMEOUT";
+        break;
+      case WAIT_FAILED:
+        format_last_error (msg, sizeof (msg));
+        reason = msg;
+        break;
+      default:
+        reason = "other";
+        break;
+    }
+    g_critical ("%p: failed to block on wakup_event: %s", set, reason);
+    errno = EBADF;
+    return FALSE;
+  }
+
+  if (!ResetEvent (set->wakeup_event)) {
+    gchar msg[1024] = "<unknown>";
+    format_last_error (msg, sizeof (msg));
+    g_critical ("%p: failed to reset wakup_event: %s", set, msg);
+    errno = EBADF;
+    return FALSE;
+  }
+
+  return TRUE;
+}
+
 #endif
 
 /* the poll/select call is also performed on a control socket, that way
@@ -181,26 +279,50 @@
 {
   gboolean result = TRUE;
 
-  if (g_atomic_int_add (&set->control_pending, 1) == 0) {
+  /* makes testing control_pending and WAKE_EVENT() atomic. */
+  g_mutex_lock (&set->lock);
+
+  if (set->control_pending == 0) {
     /* raise when nothing pending */
     GST_LOG ("%p: raise", set);
-    result = WAKE_EVENT (set);
+    result = wake_event (set);
   }
+
+  if (result) {
+    set->control_pending++;
+  }
+
+  g_mutex_unlock (&set->lock);
+
   return result;
 }
 
-/* note how bad things can happen when the 2 threads both raise and release the
- * wakeup. This is however not a problem because you must always pair a raise
- * with a release */
 static inline gboolean
 release_wakeup (GstPoll * set)
 {
-  gboolean result = TRUE;
+  gboolean result = FALSE;
 
-  if (g_atomic_int_dec_and_test (&set->control_pending)) {
-    GST_LOG ("%p: release", set);
-    result = RELEASE_EVENT (set);
+  /* makes testing/modifying control_pending and RELEASE_EVENT() atomic. */
+  g_mutex_lock (&set->lock);
+
+  if (set->control_pending > 0) {
+    /* release, only if this was the last pending. */
+    if (set->control_pending == 1) {
+      GST_LOG ("%p: release", set);
+      result = release_event (set);
+    } else {
+      result = TRUE;
+    }
+
+    if (result) {
+      set->control_pending--;
+    }
+  } else {
+    errno = EWOULDBLOCK;
   }
+
+  g_mutex_unlock (&set->lock);
+
   return result;
 }
 
@@ -209,21 +331,20 @@
 {
   gint old;
 
-  while (TRUE) {
-    if (!(old = g_atomic_int_get (&set->control_pending)))
-      /* nothing pending, just exit */
-      break;
+  /* makes testing control_pending and RELEASE_EVENT() atomic. */
+  g_mutex_lock (&set->lock);
 
-    /* try to remove all pending control messages */
-    if (g_atomic_int_compare_and_exchange (&set->control_pending, old, 0)) {
-      /* we managed to remove all messages, read the control socket */
-      if (RELEASE_EVENT (set))
-        break;
-      else
-        /* retry again until we read it successfully */
-        g_atomic_int_add (&set->control_pending, 1);
+  if ((old = set->control_pending) > 0) {
+    GST_LOG ("%p: releasing %d", set, old);
+    if (release_event (set)) {
+      set->control_pending = 0;
+    } else {
+      old = 0;
     }
   }
+
+  g_mutex_unlock (&set->lock);
+
   return old;
 }
 
@@ -568,9 +689,6 @@
     if (socketpair (PF_UNIX, SOCK_STREAM, 0, control_sock) < 0)
       goto no_socket_pair;
 
-    fcntl (control_sock[0], F_SETFL, O_NONBLOCK);
-    fcntl (control_sock[1], F_SETFL, O_NONBLOCK);
-
     nset->control_read_fd.fd = control_sock[0];
     nset->control_write_fd.fd = control_sock[1];
 
@@ -592,6 +710,7 @@
   MARK_REBUILD (nset);
 
   nset->controllable = controllable;
+  nset->control_pending = 0;
 
   return nset;
 
@@ -1434,12 +1553,16 @@
  * gst_poll_wait() will be affected by gst_poll_restart() and
  * gst_poll_set_flushing().
  *
+ * This function only works for non-timer #GstPoll objects created with
+ * gst_poll_new().
+ *
  * Returns: %TRUE if the controllability of @set could be updated.
  */
 gboolean
 gst_poll_set_controllable (GstPoll * set, gboolean controllable)
 {
   g_return_val_if_fail (set != NULL, FALSE);
+  g_return_val_if_fail (!set->timer, FALSE);
 
   GST_LOG ("%p: controllable : %d", set, controllable);
 
@@ -1456,11 +1579,15 @@
  * used after adding or removing descriptors to @set.
  *
  * If @set is not controllable, then this call will have no effect.
+ *
+ * This function only works for non-timer #GstPoll objects created with
+ * gst_poll_new().
  */
 void
 gst_poll_restart (GstPoll * set)
 {
   g_return_if_fail (set != NULL);
+  g_return_if_fail (!set->timer);
 
   if (set->controllable && GET_WAITING (set) > 0) {
     /* we are controllable and waiting, wake up the waiter. The socket will be
@@ -1478,11 +1605,15 @@
  * to gst_poll_wait() will return -1, with errno set to EBUSY.
  *
  * Unsetting the flushing state will restore normal operation of @set.
+ *
+ * This function only works for non-timer #GstPoll objects created with
+ * gst_poll_new().
  */
 void
 gst_poll_set_flushing (GstPoll * set, gboolean flushing)
 {
   g_return_if_fail (set != NULL);
+  g_return_if_fail (!set->timer);
 
   GST_LOG ("%p: flushing: %d", set, flushing);
 
@@ -1510,8 +1641,12 @@
  * gst_poll_read_control() have been performed, calls to gst_poll_wait() will
  * block again until their timeout expired.
  *
- * Returns: %TRUE on success. %FALSE when @set is not controllable or when the
- * byte could not be written.
+ * This function only works for timer #GstPoll objects created with
+ * gst_poll_new_timer().
+ *
+ * Returns: %TRUE on success. %FALSE when when the byte could not be written.
+ * errno contains the detailed error code but will never be EAGAIN, EINTR or
+ * EWOULDBLOCK. %FALSE always signals a critical error.
  */
 gboolean
 gst_poll_write_control (GstPoll * set)
@@ -1531,11 +1666,14 @@
  * @set: a #GstPoll.
  *
  * Read a byte from the control socket of the controllable @set.
- * This function is mostly useful for timer #GstPoll objects created with
- * gst_poll_new_timer(). 
  *
- * Returns: %TRUE on success. %FALSE when @set is not controllable or when there
- * was no byte to read.
+ * This function only works for timer #GstPoll objects created with
+ * gst_poll_new_timer().
+ *
+ * Returns: %TRUE on success. %FALSE when when there was no byte to read or
+ * reading the byte failed. If there was no byte to read, and only then, errno
+ * will contain EWOULDBLOCK or EAGAIN. For all other values of errno this always signals a
+ * critical error.
  */
 gboolean
 gst_poll_read_control (GstPoll * set)
diff --git a/gst/gstpoll.h b/gst/gstpoll.h
index 8bf64fd..ef6dcea 100644
--- a/gst/gstpoll.h
+++ b/gst/gstpoll.h
@@ -88,7 +88,7 @@
 void            gst_poll_set_flushing     (GstPoll *set, gboolean flushing);
 
 gboolean        gst_poll_write_control    (GstPoll *set);
-gboolean        gst_poll_read_control     (GstPoll *set);
+gboolean        gst_poll_read_control     (GstPoll *set) G_GNUC_WARN_UNUSED_RESULT;
 
 G_END_DECLS
 
diff --git a/gst/gstquark.c b/gst/gstquark.c
index cf5c766..4500cc6 100644
--- a/gst/gstquark.c
+++ b/gst/gstquark.c
@@ -70,7 +70,12 @@
   "GstMessageNeedContext", "GstMessageHaveContext", "context", "context-type",
   "GstMessageStreamStart", "group-id", "uri-redirection",
   "GstMessageDeviceAdded", "GstMessageDeviceRemoved", "device",
-  "uri-redirection-permanent"
+  "uri-redirection-permanent", "GstMessagePropertyNotify", "property-name",
+  "property-value", "streams", "GstEventSelectStreams",
+  "GstMessageStreamCollection", "collection", "stream", "stream-collection",
+  "GstMessageStreamsSelected", "GstMessageRedirect", "redirect-entry-locations",
+  "redirect-entry-taglists", "redirect-entry-structures",
+  "GstEventStreamGroupDone"
 };
 
 GQuark _priv_gst_quark_table[GST_QUARK_MAX];
diff --git a/gst/gstquark.h b/gst/gstquark.h
index b8daeb0..e41466b 100644
--- a/gst/gstquark.h
+++ b/gst/gstquark.h
@@ -202,7 +202,22 @@
   GST_QUARK_MESSAGE_DEVICE_REMOVED = 171,
   GST_QUARK_DEVICE = 172,
   GST_QUARK_URI_REDIRECTION_PERMANENT = 173,
-  GST_QUARK_MAX = 174
+  GST_QUARK_MESSAGE_PROPERTY_NOTIFY = 174,
+  GST_QUARK_PROPERTY_NAME = 175,
+  GST_QUARK_PROPERTY_VALUE = 176,
+  GST_QUARK_STREAMS = 177,
+  GST_QUARK_EVENT_SELECT_STREAMS = 178,
+  GST_QUARK_MESSAGE_STREAM_COLLECTION = 179,
+  GST_QUARK_COLLECTION = 180,
+  GST_QUARK_STREAM = 181,
+  GST_QUARK_EVENT_STREAM_COLLECTION = 182,
+  GST_QUARK_MESSAGE_STREAMS_SELECTED = 183,
+  GST_QUARK_MESSAGE_REDIRECT = 184,
+  GST_QUARK_REDIRECT_ENTRY_LOCATIONS = 185,
+  GST_QUARK_REDIRECT_ENTRY_TAGLISTS = 186,
+  GST_QUARK_REDIRECT_ENTRY_STRUCTURES = 187,
+  GST_QUARK_EVENT_STREAM_GROUP_DONE = 188,
+  GST_QUARK_MAX = 189
 } GstQuarkId;
 
 extern GQuark _priv_gst_quark_table[GST_QUARK_MAX];
diff --git a/gst/gstquery.c b/gst/gstquery.c
index 63ad182..769ccaa 100644
--- a/gst/gstquery.c
+++ b/gst/gstquery.c
@@ -221,7 +221,7 @@
  * when done with it. A position query is used to query the current position
  * of playback in the streams, in some format.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  */
@@ -300,7 +300,7 @@
  * Use gst_query_unref() when done with it. A duration query will give the
  * total length of the stream.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  */
@@ -377,7 +377,7 @@
  * by sinks to compensate for additional latency introduced by elements in the
  * pipeline.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a #GstQuery
  */
@@ -390,7 +390,7 @@
   structure = gst_structure_new_id (GST_QUARK (QUERY_LATENCY),
       GST_QUARK (LIVE), G_TYPE_BOOLEAN, FALSE,
       GST_QUARK (MIN_LATENCY), G_TYPE_UINT64, G_GUINT64_CONSTANT (0),
-      GST_QUARK (MAX_LATENCY), G_TYPE_UINT64, G_GUINT64_CONSTANT (-1), NULL);
+      GST_QUARK (MAX_LATENCY), G_TYPE_UINT64, GST_CLOCK_TIME_NONE, NULL);
 
   query = gst_query_new_custom (GST_QUERY_LATENCY, structure);
 
@@ -462,7 +462,7 @@
  * when done with it. A convert query is used to ask for a conversion between
  * one format and another.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a #GstQuery
  */
@@ -557,7 +557,7 @@
  * when done with it. A segment query is used to discover information about the
  * currently configured segment for playback.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  */
@@ -660,7 +660,7 @@
  * Constructs a new custom query object. Use gst_query_unref()
  * when done with it.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  */
@@ -743,7 +743,7 @@
  * Constructs a new query object for querying seeking properties of
  * the stream.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  */
@@ -859,7 +859,7 @@
  * Constructs a new query object for querying formats of
  * the stream.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  */
@@ -1019,7 +1019,7 @@
  * Constructs a new query object for querying the buffering status of
  * a stream.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  */
@@ -1351,7 +1351,7 @@
  * when done with it. An URI query is used to query the current URI
  * that is used by the source or sink.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  */
@@ -1521,7 +1521,7 @@
  *
  * Constructs a new query object for querying the allocation properties.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  */
@@ -1549,6 +1549,9 @@
  * Parse an allocation query, writing the requested caps in @caps and
  * whether a pool is needed in @need_pool, if the respective parameters
  * are non-%NULL.
+ *
+ * Pool details can be retrieved using gst_query_get_n_allocation_pools() and
+ * gst_query_parse_nth_allocation_pool().
  */
 void
 gst_query_parse_allocation (GstQuery * query, GstCaps ** caps,
@@ -1586,7 +1589,7 @@
  * gst_query_add_allocation_pool:
  * @query: A valid #GstQuery of type GST_QUERY_ALLOCATION.
  * @pool: (transfer none) (allow-none): the #GstBufferPool
- * @size: the size
+ * @size: the buffer size
  * @min_buffers: the min buffers
  * @max_buffers: the max buffers
  *
@@ -1616,7 +1619,6 @@
   g_array_append_val (array, ap);
 }
 
-
 /**
  * gst_query_get_n_allocation_pools:
  * @query: a GST_QUERY_ALLOCATION type query #GstQuery
@@ -1646,7 +1648,7 @@
  * @query: A valid #GstQuery of type GST_QUERY_ALLOCATION.
  * @index: index to parse
  * @pool: (out) (allow-none) (transfer full): the #GstBufferPool
- * @size: (out) (allow-none): the size
+ * @size: (out) (allow-none): the buffer size
  * @min_buffers: (out) (allow-none): the min buffers
  * @max_buffers: (out) (allow-none): the max buffers
  *
@@ -2096,7 +2098,7 @@
  *
  * Constructs a new query object for querying the scheduling properties.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  */
@@ -2315,7 +2317,7 @@
  *
  * Constructs a new query object for querying if @caps are accepted.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  */
@@ -2418,7 +2420,7 @@
  * @filter should be returned from the CAPS query. Specifying a filter might
  * greatly reduce the amount of processing an element needs to do.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  */
@@ -2516,7 +2518,7 @@
  *
  * Constructs a new query object for querying the drain state.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  */
@@ -2538,7 +2540,7 @@
  *
  * Constructs a new query object for querying the pipeline-local context.
  *
- * Free-function: gst_query_unref
+ * Free-function: gst_query_unref()
  *
  * Returns: (transfer full): a new #GstQuery
  *
diff --git a/gst/gstregistry.c b/gst/gstregistry.c
index 090f814..541e31c 100644
--- a/gst/gstregistry.c
+++ b/gst/gstregistry.c
@@ -148,6 +148,7 @@
   GList *plugins;
   GList *features;
 
+  guint n_plugins;
 #if 0
   GList *paths;
 #endif
@@ -271,6 +272,7 @@
 
   plugins = registry->priv->plugins;
   registry->priv->plugins = NULL;
+  registry->priv->n_plugins = 0;
 
   GST_DEBUG_OBJECT (registry, "registry finalize");
   p = plugins;
@@ -465,6 +467,7 @@
       }
       registry->priv->plugins =
           g_list_remove (registry->priv->plugins, existing_plugin);
+      --registry->priv->n_plugins;
       if (G_LIKELY (existing_plugin->basename))
         g_hash_table_remove (registry->priv->basename_hash,
             existing_plugin->basename);
@@ -476,6 +479,8 @@
       plugin, GST_STR_NULL (plugin->filename));
 
   registry->priv->plugins = g_list_prepend (registry->priv->plugins, plugin);
+  ++registry->priv->n_plugins;
+
   if (G_LIKELY (plugin->basename))
     g_hash_table_replace (registry->priv->basename_hash, plugin->basename,
         plugin);
@@ -541,6 +546,7 @@
 
   GST_OBJECT_LOCK (registry);
   registry->priv->plugins = g_list_remove (registry->priv->plugins, plugin);
+  --registry->priv->n_plugins;
   if (G_LIKELY (plugin->basename))
     g_hash_table_remove (registry->priv->basename_hash, plugin->basename);
   gst_registry_remove_features_for_plugin_unlocked (registry, plugin);
@@ -657,26 +663,30 @@
 gst_registry_plugin_filter (GstRegistry * registry,
     GstPluginFilter filter, gboolean first, gpointer user_data)
 {
-  GList *list = NULL;
+  GstPlugin **plugins;
+  GList *walk, *list = NULL;
+  guint n_plugins, i;
 
   g_return_val_if_fail (GST_IS_REGISTRY (registry), NULL);
 
   GST_OBJECT_LOCK (registry);
-  {
-    const GList *walk;
+  n_plugins = registry->priv->n_plugins;
+  plugins = g_newa (GstPlugin *, n_plugins + 1);
+  for (walk = registry->priv->plugins, i = 0; walk != NULL; walk = walk->next)
+    plugins[i++] = gst_object_ref (walk->data);
+  GST_OBJECT_UNLOCK (registry);
 
-    for (walk = registry->priv->plugins; walk != NULL; walk = walk->next) {
-      GstPlugin *plugin = walk->data;
+  for (i = 0; i < n_plugins; ++i) {
+    if (filter == NULL || filter (plugins[i], user_data)) {
+      list = g_list_prepend (list, gst_object_ref (plugins[i]));
 
-      if (filter == NULL || filter (plugin, user_data)) {
-        list = g_list_prepend (list, gst_object_ref (plugin));
-
-        if (first)
-          break;
-      }
+      if (first)
+        break;
     }
   }
-  GST_OBJECT_UNLOCK (registry);
+
+  for (i = 0; i < n_plugins; ++i)
+    gst_object_unref (plugins[i]);
 
   return list;
 }
@@ -830,26 +840,30 @@
 gst_registry_feature_filter (GstRegistry * registry,
     GstPluginFeatureFilter filter, gboolean first, gpointer user_data)
 {
-  GList *list = NULL;
+  GstPluginFeature **features;
+  GList *walk, *list = NULL;
+  guint n_features, i;
 
   g_return_val_if_fail (GST_IS_REGISTRY (registry), NULL);
 
   GST_OBJECT_LOCK (registry);
-  {
-    const GList *walk;
+  n_features = g_hash_table_size (registry->priv->feature_hash);
+  features = g_newa (GstPluginFeature *, n_features + 1);
+  for (walk = registry->priv->features, i = 0; walk != NULL; walk = walk->next)
+    features[i++] = gst_object_ref (walk->data);
+  GST_OBJECT_UNLOCK (registry);
 
-    for (walk = registry->priv->features; walk != NULL; walk = walk->next) {
-      GstPluginFeature *feature = walk->data;
+  for (i = 0; i < n_features; ++i) {
+    if (filter == NULL || filter (features[i], user_data)) {
+      list = g_list_prepend (list, gst_object_ref (features[i]));
 
-      if (filter == NULL || filter (feature, user_data)) {
-        list = g_list_prepend (list, gst_object_ref (feature));
-
-        if (first)
-          break;
-      }
+      if (first)
+        break;
     }
   }
-  GST_OBJECT_UNLOCK (registry);
+
+  for (i = 0; i < n_features; ++i)
+    gst_object_unref (features[i]);
 
   return list;
 }
@@ -1533,6 +1547,7 @@
       GST_DEBUG_OBJECT (registry, "removing cached plugin \"%s\"",
           GST_STR_NULL (plugin->filename));
       registry->priv->plugins = g_list_delete_link (registry->priv->plugins, g);
+      --registry->priv->n_plugins;
       if (G_LIKELY (plugin->basename))
         g_hash_table_remove (registry->priv->basename_hash, plugin->basename);
       gst_registry_remove_features_for_plugin_unlocked (registry, plugin);
diff --git a/gst/gststreamcollection.c b/gst/gststreamcollection.c
new file mode 100644
index 0000000..8e848de
--- /dev/null
+++ b/gst/gststreamcollection.c
@@ -0,0 +1,335 @@
+/* GStreamer
+ *
+ * Copyright (C) 2015 Centricular Ltd
+ *  @author: Edward Hervey <edward@centricular.com>
+ *  @author: Jan Schmidt <jan@centricular.com>
+ *
+ * gststreams.c: GstStreamCollection object and methods
+ *
+ * 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.
+ *
+ * MT safe.
+ */
+
+/**
+ * SECTION:gststreamcollection
+ * @short_description: Base class for collection of streams
+ *
+ * Since: 1.10
+ */
+
+#include "gst_private.h"
+
+#include "gstenumtypes.h"
+#include "gstevent.h"
+#include "gststreamcollection.h"
+
+GST_DEBUG_CATEGORY_STATIC (stream_collection_debug);
+#define GST_CAT_DEFAULT stream_collection_debug
+
+#define GST_STREAM_COLLECTION_GET_PRIVATE(obj)  \
+   (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_STREAM_COLLECTION, GstStreamCollectionPrivate))
+
+struct _GstStreamCollectionPrivate
+{
+  /* Maybe switch this to a GArray if performance is
+   * ever an issue? */
+  GQueue *streams;
+};
+
+/* stream signals and properties */
+enum
+{
+  SIG_STREAM_NOTIFY,
+  LAST_SIGNAL
+};
+
+enum
+{
+  PROP_0,
+  PROP_UPSTREAM_ID,
+  PROP_LAST
+};
+
+static guint gst_stream_collection_signals[LAST_SIGNAL] = { 0 };
+
+static void gst_stream_collection_dispose (GObject * object);
+
+static void gst_stream_collection_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_stream_collection_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+
+static void
+proxy_stream_notify_cb (GstStream * stream, GParamSpec * pspec,
+    GstStreamCollection * collection);
+
+#define _do_init				\
+{ \
+  GST_DEBUG_CATEGORY_INIT (stream_collection_debug, "streamcollection", GST_DEBUG_BOLD, \
+      "debugging info for the stream collection objects"); \
+  \
+}
+
+#define gst_stream_collection_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstStreamCollection, gst_stream_collection,
+    GST_TYPE_OBJECT, _do_init);
+
+static void
+gst_stream_collection_class_init (GstStreamCollectionClass * klass)
+{
+  GObjectClass *gobject_class;
+
+  gobject_class = (GObjectClass *) klass;
+
+  g_type_class_add_private (klass, sizeof (GstStreamCollectionPrivate));
+
+  gobject_class->set_property = gst_stream_collection_set_property;
+  gobject_class->get_property = gst_stream_collection_get_property;
+
+  /**
+   * GstStream:upstream-id:
+   *
+   * stream-id
+   */
+  g_object_class_install_property (gobject_class, PROP_UPSTREAM_ID,
+      g_param_spec_string ("upstream-id", "Upstream ID",
+          "The stream ID of the parent stream",
+          NULL,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
+
+  /**
+   * GstStream::stream-notify:
+   * @collection: a #GstStreamCollection
+   * @prop_stream: the #GstStream that originated the signal
+   * @prop: the property that changed
+   *
+   * The stream notify signal is used to be notified of property changes to
+   * streams within the collection.
+   */
+  gst_stream_collection_signals[SIG_STREAM_NOTIFY] =
+      g_signal_new ("stream-notify", G_TYPE_FROM_CLASS (klass),
+      G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE | G_SIGNAL_DETAILED |
+      G_SIGNAL_NO_HOOKS, G_STRUCT_OFFSET (GstStreamCollectionClass,
+          stream_notify), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE,
+      2, GST_TYPE_STREAM, G_TYPE_PARAM);
+
+  gobject_class->dispose = gst_stream_collection_dispose;
+}
+
+static void
+gst_stream_collection_init (GstStreamCollection * collection)
+{
+  collection->priv = GST_STREAM_COLLECTION_GET_PRIVATE (collection);
+  collection->priv->streams = g_queue_new ();
+}
+
+static void
+release_gst_stream (GstStream * stream, GstStreamCollection * collection)
+{
+  g_signal_handlers_disconnect_by_func (stream,
+      proxy_stream_notify_cb, collection);
+  gst_object_unref (stream);
+}
+
+static void
+gst_stream_collection_dispose (GObject * object)
+{
+  GstStreamCollection *collection = GST_STREAM_COLLECTION_CAST (object);
+
+  if (collection->upstream_id) {
+    g_free (collection->upstream_id);
+    collection->upstream_id = NULL;
+  }
+
+  if (collection->priv->streams) {
+    g_queue_foreach (collection->priv->streams,
+        (GFunc) release_gst_stream, collection);
+    g_queue_free (collection->priv->streams);
+    collection->priv->streams = NULL;
+  }
+
+  G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+/**
+ * gst_stream_collection_new:
+ * @upstream_id: (allow-none): The stream id of the parent stream
+ *
+ * Create a new #GstStreamCollection.
+ *
+ * Returns: The new #GstStreamCollection.
+ *
+ * Since: 1.10
+ */
+GstStreamCollection *
+gst_stream_collection_new (const gchar * upstream_id)
+{
+  return g_object_new (GST_TYPE_STREAM_COLLECTION, "upstream-id", upstream_id,
+      NULL);
+}
+
+static void
+gst_stream_collection_set_upstream_id (GstStreamCollection * collection,
+    const gchar * upstream_id)
+{
+  g_return_if_fail (collection->upstream_id == NULL);
+
+  /* Upstream ID should only be set once on construction, but let's
+   * not leak in case someone does something silly */
+  if (collection->upstream_id)
+    g_free (collection->upstream_id);
+
+  if (upstream_id)
+    collection->upstream_id = g_strdup (upstream_id);
+}
+
+/**
+ * gst_stream_collection_get_upstream_id:
+ * @collection: a #GstStreamCollection
+ *
+ * Returns the upstream id of the @collection.
+ *
+ * Returns: (transfer none): The upstream id
+ *
+ * Since: 1.10
+ */
+const gchar *
+gst_stream_collection_get_upstream_id (GstStreamCollection * collection)
+{
+  const gchar *res;
+
+  res = collection->upstream_id;
+
+  return res;
+}
+
+static void
+gst_stream_collection_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstStreamCollection *collection;
+
+  collection = GST_STREAM_COLLECTION_CAST (object);
+
+  switch (prop_id) {
+    case PROP_UPSTREAM_ID:
+      gst_stream_collection_set_upstream_id (collection,
+          g_value_get_string (value));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_stream_collection_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstStreamCollection *collection;
+
+  collection = GST_STREAM_COLLECTION_CAST (object);
+
+  switch (prop_id) {
+    case PROP_UPSTREAM_ID:
+      g_value_set_string (value,
+          gst_stream_collection_get_upstream_id (collection));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+proxy_stream_notify_cb (GstStream * stream, GParamSpec * pspec,
+    GstStreamCollection * collection)
+{
+  GST_DEBUG_OBJECT (collection, "Stream %" GST_PTR_FORMAT " updated %s",
+      stream, pspec->name);
+  g_signal_emit (collection, gst_stream_collection_signals[SIG_STREAM_NOTIFY],
+      g_quark_from_string (pspec->name), stream, pspec);
+}
+
+/**
+ * gst_stream_collection_add_stream:
+ * @collection: a #GstStreamCollection
+ * @stream: (transfer full): the #GstStream to add
+ *
+ * Add the given @stream to the @collection.
+ *
+ * Returns: %TRUE if the @stream was properly added, else %FALSE
+ *
+ * Since: 1.10
+ */
+gboolean
+gst_stream_collection_add_stream (GstStreamCollection * collection,
+    GstStream * stream)
+{
+  g_return_val_if_fail (GST_IS_STREAM_COLLECTION (collection), FALSE);
+  g_return_val_if_fail (GST_IS_STREAM (stream), FALSE);
+  g_return_val_if_fail (collection->priv->streams, FALSE);
+
+  GST_DEBUG_OBJECT (collection, "Adding stream %" GST_PTR_FORMAT, stream);
+
+  g_queue_push_tail (collection->priv->streams, stream);
+  g_signal_connect (stream, "notify", (GCallback) proxy_stream_notify_cb,
+      collection);
+
+  return TRUE;
+}
+
+/**
+ * gst_stream_collection_get_size:
+ * @collection: a #GstStreamCollection
+ *
+ * Get the number of streams this collection contains
+ *
+ * Returns: The number of streams that @collection contains
+ *
+ * Since: 1.10
+ */
+guint
+gst_stream_collection_get_size (GstStreamCollection * collection)
+{
+  g_return_val_if_fail (GST_IS_STREAM_COLLECTION (collection), 0);
+  g_return_val_if_fail (collection->priv->streams, 0);
+
+  return g_queue_get_length (collection->priv->streams);
+}
+
+/**
+ * gst_stream_collection_get_stream:
+ * @collection: a #GstStreamCollection
+ * @index: Index of the stream to retrieve
+ *
+ * Retrieve the #GstStream with index @index from the collection.
+ *
+ * The caller should not modify the returned #GstStream
+ *
+ * Returns: (transfer none): A #GstStream
+ *
+ * Since: 1.10
+ */
+GstStream *
+gst_stream_collection_get_stream (GstStreamCollection * collection, guint index)
+{
+  g_return_val_if_fail (GST_IS_STREAM_COLLECTION (collection), NULL);
+  g_return_val_if_fail (collection->priv->streams, NULL);
+
+  return g_queue_peek_nth (collection->priv->streams, index);
+}
diff --git a/gst/gststreamcollection.h b/gst/gststreamcollection.h
new file mode 100644
index 0000000..49734bd
--- /dev/null
+++ b/gst/gststreamcollection.h
@@ -0,0 +1,108 @@
+/* GStreamer
+ * Copyright (C) 2015 Centricular Ltd
+ *  @author: Edward Hervey <edward@centricular.com>
+ *  @author: Jan Schmidt <jan@centricular.com>
+ *
+ * gststreams.h : Header for GstStreamCollection subsystem
+ *
+ * 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_STREAM_COLLECTION_H__
+#define __GST_STREAM_COLLECTION_H__
+
+#include <gst/gstobject.h>
+#include <gst/gststreams.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_STREAM_COLLECTION             (gst_stream_collection_get_type ())
+#define GST_IS_STREAM_COLLECTION(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_STREAM_COLLECTION))
+#define GST_IS_STREAM_COLLECTION_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_STREAM_COLLECTION))
+#define GST_STREAM_COLLECTION_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_STREAM_COLLECTION, GstStreamCollectionClass))
+#define GST_STREAM_COLLECTION(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_STREAM_COLLECTION, GstStreamCollection))
+#define GST_STREAM_COLLECTION_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_STREAM_COLLECTION, GstStreamCollectionClass))
+#define GST_STREAM_COLLECTION_CAST(obj)        ((GstStreamCollection*)(obj))
+
+typedef struct _GstStreamCollection GstStreamCollection;
+typedef struct _GstStreamCollectionClass GstStreamCollectionClass;
+typedef struct _GstStreamCollectionPrivate GstStreamCollectionPrivate;
+
+/**
+ * GstStreamCollection:
+ *
+ * A collection of #GstStream that are available.
+ *
+ * A #GstStreamCollection will be provided by elements that can make those
+ * streams available. Applications can use the collection to show the user
+ * what streams are available by using %gst_stream_collection_get_stream()
+ *
+ * Once posted, a #GstStreamCollection is immutable. Updates are made by sending
+ * a new #GstStreamCollection message, which may or may not share some of
+ * the #GstStream objects from the collection it replaces. The receiver can check
+ * the sender of a stream collection message to know which collection is
+ * obsoleted.
+ *
+ * Several elements in a pipeline can provide #GstStreamCollection.
+ *
+ * Applications can activate streams from a collection by using the
+ * #GST_EVENT_SELECT_STREAMS event on a pipeline, bin or element.
+ *
+ * Since: 1.10
+ */
+struct _GstStreamCollection {
+  GstObject object;
+
+  /*< private >*/
+  gchar *upstream_id;
+  GstStreamCollectionPrivate *priv;
+
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+/**
+ * GstStreamCollectionClass:
+ * @parent_class: the parent class structure
+ * @stream_notify: default signal handler for the stream-notify signal
+ *
+ * GstStreamCollection class structure
+ */
+struct _GstStreamCollectionClass {
+  GstObjectClass parent_class;
+
+  /* signals */
+  void  (*stream_notify)      (GstStreamCollection *collection, GstStream *stream, GParamSpec * pspec);
+
+  /*< private >*/
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+GType gst_stream_collection_get_type (void);
+
+GstStreamCollection *gst_stream_collection_new (const gchar *upstream_id);
+
+const gchar *gst_stream_collection_get_upstream_id (GstStreamCollection *collection);
+
+guint gst_stream_collection_get_size (GstStreamCollection *collection);
+GstStream *gst_stream_collection_get_stream (GstStreamCollection *collection, guint index);
+
+gboolean gst_stream_collection_add_stream (GstStreamCollection *collection,
+                                           GstStream *stream);
+
+G_END_DECLS
+
+#endif /* __GST_STREAM_COLLECTION_H__ */
diff --git a/gst/gststreams.c b/gst/gststreams.c
new file mode 100644
index 0000000..28741d8
--- /dev/null
+++ b/gst/gststreams.c
@@ -0,0 +1,544 @@
+/* GStreamer
+ *
+ * Copyright (C) 2015 Centricular Ltd
+ *  @author: Edward Hervey <edward@centricular.com>
+ *  @author: Jan Schmidt <jan@centricular.com>
+ *
+ * gststreams.c: GstStream and GstStreamCollection object and methods
+ *
+ * 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.
+ *
+ * MT safe.
+ */
+
+/**
+ * SECTION:gststreams
+ * @short_description: Base class for stream objects
+ *
+ * A #GstStream is a high-level object defining a stream of data which is, or
+ * can be, present in a #GstPipeline.
+ *
+ * It is defined by a unique identifier, a "Stream ID". A #GstStream does not
+ * automatically imply the stream is present within a pipeline or element.
+ *
+ * Any element that can introduce new streams in a pipeline should create the
+ * appropriate #GstStream object, and can convey that object via the
+ * %GST_EVENT_STREAM_START event and/or the #GstStreamCollection.
+ *
+ * Elements that do not modify the nature of the stream can add extra information
+ * on it (such as enrich the #GstCaps, or #GstTagList). This is typically done
+ * by parsing elements.
+ *
+ * Since: 1.10
+ */
+
+#include "gst_private.h"
+
+#include "gstenumtypes.h"
+#include "gstevent.h"
+#include "gststreams.h"
+
+GST_DEBUG_CATEGORY_STATIC (streams_debug);
+#define GST_CAT_DEFAULT streams_debug
+
+#define GST_STREAM_GET_PRIVATE(obj)  \
+   (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_STREAM, GstStreamPrivate))
+
+struct _GstStreamPrivate
+{
+  GstStreamFlags flags;
+  GstStreamType type;
+  GstTagList *tags;
+  GstCaps *caps;
+};
+
+/* stream signals and properties */
+enum
+{
+  LAST_SIGNAL
+};
+
+enum
+{
+  PROP_0,
+  PROP_STREAM_ID,
+  PROP_STREAM_FLAGS,
+  PROP_STREAM_TYPE,
+  PROP_TAGS,
+  PROP_CAPS,
+  PROP_LAST
+};
+
+static GParamSpec *gst_stream_pspecs[PROP_LAST] = { 0 };
+
+#if 0
+static guint gst_stream_signals[LAST_SIGNAL] = { 0 };
+#endif
+
+static void gst_stream_finalize (GObject * object);
+
+static void gst_stream_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec);
+static void gst_stream_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec);
+
+#define _do_init				\
+{ \
+  GST_DEBUG_CATEGORY_INIT (streams_debug, "streams", GST_DEBUG_BOLD, \
+      "debugging info for the stream and stream collection objects"); \
+  \
+}
+
+#define gst_stream_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstStream, gst_stream, GST_TYPE_OBJECT, _do_init);
+
+static void
+gst_stream_class_init (GstStreamClass * klass)
+{
+  GObjectClass *gobject_class;
+
+  gobject_class = (GObjectClass *) klass;
+
+  g_type_class_add_private (klass, sizeof (GstStreamPrivate));
+
+  gobject_class->set_property = gst_stream_set_property;
+  gobject_class->get_property = gst_stream_get_property;
+
+  /**
+   * GstStream:stream-id:
+   *
+   * The unique identifier of the #GstStream. Can only be set at construction
+   * time.
+   */
+  g_object_class_install_property (gobject_class, PROP_STREAM_ID,
+      g_param_spec_string ("stream-id", "Stream ID",
+          "The stream ID of the stream",
+          NULL,
+          G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
+
+  /**
+   * GstStream:flags:
+   *
+   * The #GstStreamFlags of the #GstStream. Can only be set at construction time.
+   **/
+  gst_stream_pspecs[PROP_STREAM_FLAGS] =
+      g_param_spec_flags ("stream-flags", "Stream Flags", "The stream flags",
+      GST_TYPE_STREAM_FLAGS, GST_STREAM_FLAG_NONE,
+      G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_STREAM_FLAGS,
+      gst_stream_pspecs[PROP_STREAM_FLAGS]);
+
+  /**
+   * GstStream:stream-type:
+   *
+   * The #GstStreamType of the #GstStream. Can only be set at construction time.
+   **/
+  gst_stream_pspecs[PROP_STREAM_TYPE] =
+      g_param_spec_flags ("stream-type", "Stream Type", "The type of stream",
+      GST_TYPE_STREAM_TYPE, GST_STREAM_TYPE_UNKNOWN,
+      G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_STREAM_TYPE,
+      gst_stream_pspecs[PROP_STREAM_TYPE]);
+
+  /**
+   * GstStream:caps:
+   *
+   * The #GstCaps of the #GstStream.
+   **/
+  gst_stream_pspecs[PROP_CAPS] =
+      g_param_spec_boxed ("caps", "Caps", "The caps of the stream",
+      GST_TYPE_CAPS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_CAPS,
+      gst_stream_pspecs[PROP_CAPS]);
+
+  /**
+   * GstStream:tags:
+   *
+   * The #GstTagList of the #GstStream.
+   **/
+  gst_stream_pspecs[PROP_TAGS] =
+      g_param_spec_boxed ("tags", "Tags", "The tags of the stream",
+      GST_TYPE_TAG_LIST, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+  g_object_class_install_property (gobject_class, PROP_TAGS,
+      gst_stream_pspecs[PROP_TAGS]);
+
+  gobject_class->finalize = gst_stream_finalize;
+}
+
+static void
+gst_stream_init (GstStream * stream)
+{
+  stream->priv = GST_STREAM_GET_PRIVATE (stream);
+  stream->priv->type = GST_STREAM_TYPE_UNKNOWN;
+}
+
+static void
+gst_stream_finalize (GObject * object)
+{
+  GstStream *stream = GST_STREAM_CAST (object);
+
+  gst_mini_object_replace ((GstMiniObject **) & stream->priv->tags,
+      (GstMiniObject *) NULL);
+  gst_caps_replace (&stream->priv->caps, NULL);
+  g_free ((gchar *) stream->stream_id);
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+/**
+ * gst_stream_new:
+ * @stream_id: (allow-none): the id for the new stream. If %NULL,
+ * a new one will be automatically generated
+ * @caps: (allow-none) (transfer none): the #GstCaps of the stream
+ * @type: the #GstStreamType of the stream
+ * @flags: the #GstStreamFlags of the stream
+ *
+ * Create a new #GstStream for the given @stream_id, @caps, @type
+ * and @flags
+ *
+ * Returns: The new #GstStream
+ *
+ * Since: 1.10
+ */
+GstStream *
+gst_stream_new (const gchar * stream_id, GstCaps * caps, GstStreamType type,
+    GstStreamFlags flags)
+{
+  return g_object_new (GST_TYPE_STREAM, "stream-id", stream_id, "caps", caps,
+      "stream-type", type, "stream-flags", flags, NULL);
+}
+
+static void
+gst_stream_set_stream_id (GstStream * stream, const gchar * stream_id)
+{
+  GST_OBJECT_LOCK (stream);
+  g_assert (stream->stream_id == NULL);
+  if (stream_id)
+    stream->stream_id = g_strdup (stream_id);
+  else {
+    /* Create a randoom stream_id if NULL */
+    GST_FIXME_OBJECT (stream, "Creating random stream-id, consider "
+        "implementing a deterministic way of creating a stream-id");
+    stream->stream_id =
+        g_strdup_printf ("%08x%08x%08x%08x", g_random_int (), g_random_int (),
+        g_random_int (), g_random_int ());
+  }
+
+  GST_OBJECT_UNLOCK (stream);
+}
+
+/**
+ * gst_stream_get_stream_id:
+ * @stream: a #GstStream
+ *
+ * Returns the stream ID of @stream.
+ *
+ * Returns: (transfer none) (nullable): the stream ID of @stream. Only valid
+ * during the lifetime of @stream.
+ *
+ * Since: 1.10
+ */
+const gchar *
+gst_stream_get_stream_id (GstStream * stream)
+{
+  return stream->stream_id;
+}
+
+/**
+ * gst_stream_set_stream_flags:
+ * @stream: a #GstStream
+ * @flags: the flags to set on @stream
+ *
+ * Set the @flags for the @stream.
+ *
+ * Since: 1.10
+ */
+void
+gst_stream_set_stream_flags (GstStream * stream, GstStreamFlags flags)
+{
+  GST_OBJECT_LOCK (stream);
+  stream->priv->flags = flags;
+  GST_OBJECT_UNLOCK (stream);
+
+  g_object_notify_by_pspec (G_OBJECT (stream),
+      gst_stream_pspecs[PROP_STREAM_FLAGS]);
+}
+
+/**
+ * gst_stream_get_stream_flags:
+ * @stream: a #GstStream
+ *
+ * Retrieve the current stream flags for @stream
+ *
+ * Returns: The #GstStreamFlags for @stream
+ *
+ * Since: 1.10
+ */
+GstStreamFlags
+gst_stream_get_stream_flags (GstStream * stream)
+{
+  GstStreamFlags res;
+
+  GST_OBJECT_LOCK (stream);
+  res = stream->priv->flags;
+  GST_OBJECT_UNLOCK (stream);
+
+  return res;
+}
+
+/**
+ * gst_stream_set_stream_type:
+ * @stream: a #GstStream
+ * @stream_type: the type to set on @stream
+ *
+ * Set the stream type of @stream
+ *
+ * Since: 1.10
+ */
+void
+gst_stream_set_stream_type (GstStream * stream, GstStreamType stream_type)
+{
+  GST_OBJECT_LOCK (stream);
+  stream->priv->type = stream_type;
+  GST_OBJECT_UNLOCK (stream);
+
+  g_object_notify_by_pspec (G_OBJECT (stream),
+      gst_stream_pspecs[PROP_STREAM_TYPE]);
+}
+
+/**
+ * gst_stream_get_stream_type:
+ * @stream: a #GstStream
+ *
+ * Retrieve the stream type for @stream
+ *
+ * Returns: The #GstStreamType for @stream
+ *
+ * Since: 1.10
+ */
+GstStreamType
+gst_stream_get_stream_type (GstStream * stream)
+{
+  GstStreamType res;
+
+  GST_OBJECT_LOCK (stream);
+  res = stream->priv->type;
+  GST_OBJECT_UNLOCK (stream);
+
+  return res;
+}
+
+/**
+ * gst_stream_set_tags:
+ * @stream: a #GstStream
+ * @tags: (transfer none) (allow-none): a #GstTagList
+ *
+ * Set the tags for the #GstStream
+ *
+ * Since: 1.10
+ */
+void
+gst_stream_set_tags (GstStream * stream, GstTagList * tags)
+{
+  gboolean notify = FALSE;
+
+  GST_OBJECT_LOCK (stream);
+  if (stream->priv->tags == NULL || tags == NULL
+      || !gst_tag_list_is_equal (stream->priv->tags, tags)) {
+    gst_mini_object_replace ((GstMiniObject **) & stream->priv->tags,
+        (GstMiniObject *) tags);
+    notify = TRUE;
+  }
+  GST_OBJECT_UNLOCK (stream);
+
+  if (notify)
+    g_object_notify_by_pspec (G_OBJECT (stream), gst_stream_pspecs[PROP_TAGS]);
+}
+
+/**
+ * gst_stream_get_tags:
+ * @stream: a #GstStream
+ *
+ * Retrieve the tags for @stream, if any
+ *
+ * Returns: (transfer full) (nullable): The #GstTagList for @stream
+ *
+ * Since: 1.10
+ */
+GstTagList *
+gst_stream_get_tags (GstStream * stream)
+{
+  GstTagList *res = NULL;
+
+  GST_OBJECT_LOCK (stream);
+  if (stream->priv->tags)
+    res = gst_tag_list_ref (stream->priv->tags);
+  GST_OBJECT_UNLOCK (stream);
+
+  return res;
+}
+
+/**
+ * gst_stream_set_caps:
+ * @stream: a #GstStream
+ * @caps: (transfer none) (allow-none): a #GstCaps
+ *
+ * Set the caps for the #GstStream
+ *
+ * Since: 1.10
+ */
+void
+gst_stream_set_caps (GstStream * stream, GstCaps * caps)
+{
+  gboolean notify = FALSE;
+
+  GST_OBJECT_LOCK (stream);
+  if (stream->priv->caps == NULL || (caps
+          && !gst_caps_is_equal (stream->priv->caps, caps))) {
+    gst_caps_replace (&stream->priv->caps, caps);
+    notify = TRUE;
+  }
+  GST_OBJECT_UNLOCK (stream);
+
+  if (notify)
+    g_object_notify_by_pspec (G_OBJECT (stream), gst_stream_pspecs[PROP_CAPS]);
+}
+
+
+/**
+ * gst_stream_get_caps:
+ * @stream: a #GstStream
+ *
+ * Retrieve the caps for @stream, if any
+ *
+ * Returns: (transfer full) (nullable): The #GstCaps for @stream
+ *
+ * Since: 1.10
+ */
+GstCaps *
+gst_stream_get_caps (GstStream * stream)
+{
+  GstCaps *res = NULL;
+
+  GST_OBJECT_LOCK (stream);
+  if (stream->priv->caps)
+    res = gst_caps_ref (stream->priv->caps);
+  GST_OBJECT_UNLOCK (stream);
+
+  return res;
+}
+
+static void
+gst_stream_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstStream *stream;
+
+  stream = GST_STREAM_CAST (object);
+
+  switch (prop_id) {
+    case PROP_STREAM_ID:
+      gst_stream_set_stream_id (stream, g_value_get_string (value));
+      break;
+    case PROP_STREAM_FLAGS:
+      GST_OBJECT_LOCK (stream);
+      stream->priv->flags = g_value_get_flags (value);
+      GST_OBJECT_UNLOCK (stream);
+      break;
+    case PROP_STREAM_TYPE:
+      GST_OBJECT_LOCK (stream);
+      stream->priv->type = g_value_get_flags (value);
+      GST_OBJECT_UNLOCK (stream);
+      break;
+    case PROP_TAGS:
+      GST_OBJECT_LOCK (stream);
+      gst_mini_object_replace ((GstMiniObject **) & stream->priv->tags,
+          (GstMiniObject *) g_value_get_boxed (value));
+      GST_OBJECT_UNLOCK (stream);
+      break;
+    case PROP_CAPS:
+      GST_OBJECT_LOCK (stream);
+      gst_mini_object_replace ((GstMiniObject **) & stream->priv->caps,
+          (GstMiniObject *) g_value_get_boxed (value));
+      GST_OBJECT_UNLOCK (stream);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_stream_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstStream *stream;
+
+  stream = GST_STREAM_CAST (object);
+
+  switch (prop_id) {
+    case PROP_STREAM_ID:
+      g_value_set_string (value, gst_stream_get_stream_id (stream));
+      break;
+    case PROP_STREAM_FLAGS:
+      g_value_set_flags (value, gst_stream_get_stream_flags (stream));
+      break;
+    case PROP_STREAM_TYPE:
+      g_value_set_flags (value, gst_stream_get_stream_type (stream));
+      break;
+    case PROP_TAGS:
+      g_value_take_boxed (value, gst_stream_get_tags (stream));
+      break;
+    case PROP_CAPS:
+      g_value_take_boxed (value, gst_stream_get_caps (stream));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+/**
+ * gst_stream_type_get_name:
+ * @stype: a #GstStreamType
+ *
+ * Get a descriptive string for a given #GstStreamType
+ *
+ * Returns: A string describing the stream type
+ *
+ * Since: 1.10
+ */
+const gchar *
+gst_stream_type_get_name (GstStreamType stype)
+{
+  /* FIXME : Make this more flexible */
+  switch (stype) {
+    case GST_STREAM_TYPE_UNKNOWN:
+      return "unknown";
+    case GST_STREAM_TYPE_AUDIO:
+      return "audio";
+    case GST_STREAM_TYPE_VIDEO:
+      return "video";
+    case GST_STREAM_TYPE_CONTAINER:
+      return "container";
+    case GST_STREAM_TYPE_TEXT:
+      return "text";
+    default:
+      return NULL;
+  }
+
+  return NULL;
+}
diff --git a/gst/gststreams.h b/gst/gststreams.h
new file mode 100644
index 0000000..a82d81f
--- /dev/null
+++ b/gst/gststreams.h
@@ -0,0 +1,131 @@
+/* GStreamer
+ * Copyright (C) 2015 Centricular Ltd
+ *  @author: Edward Hervey <edward@centricular.com>
+ *  @author: Jan Schmidt <jan@centricular.com>
+ *
+ * gststreams.h : Header for GstStream subsystem
+ *
+ * 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_STREAMS_H__
+#define __GST_STREAMS_H__
+
+#include <gst/gstobject.h>
+#include <gst/gstevent.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_STREAM             (gst_stream_get_type ())
+#define GST_IS_STREAM(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_STREAM))
+#define GST_IS_STREAM_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_STREAM))
+#define GST_STREAM_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_STREAM, GstStreamClass))
+#define GST_STREAM(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_STREAM, GstStream))
+#define GST_STREAM_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_STREAM, GstStreamClass))
+#define GST_STREAM_CAST(obj)        ((GstStream*)(obj))
+
+/**
+ * GstStreamType:
+ * @GST_STREAM_TYPE_UNKNOWN: The stream is of unknown (unclassified) type.
+ * @GST_STREAM_TYPE_AUDIO: The stream is of audio data
+ * @GST_STREAM_TYPE_VIDEO: The stream carries video data
+ * @GST_STREAM_TYPE_CONTAINER: The stream is a muxed container type
+ * @GST_STREAM_TYPE_TEXT: The stream contains subtitle / subpicture data.
+ *
+ * #GstStreamType describes a high level classification set for
+ * flows of data in #GstStream objects.
+ */
+typedef enum {
+  GST_STREAM_TYPE_UNKNOWN   = 1 << 0,
+  GST_STREAM_TYPE_AUDIO     = 1 << 1,
+  GST_STREAM_TYPE_VIDEO     = 1 << 2,
+  GST_STREAM_TYPE_CONTAINER = 1 << 3,
+  GST_STREAM_TYPE_TEXT      = 1 << 4
+} GstStreamType;
+
+
+typedef struct _GstStream GstStream;
+typedef struct _GstStreamClass GstStreamClass;
+typedef struct _GstStreamPrivate GstStreamPrivate;
+
+/**
+ * GstStream:
+ * @stream_id: The Stream Identifier for this #GstStream
+ * 
+ * A high-level object representing a single stream. It might be backed, or
+ * not, by an actual flow of data in a pipeline (#GstPad).
+ *
+ * A #GstStream does not care about data changes (such as decoding, encoding,
+ * parsing,...) as long as the underlying data flow corresponds to the same
+ * high-level flow (ex: a certain audio track).
+ *
+ * A #GstStream contains all the information pertinent to a stream, such as
+ * stream-id, tags, caps, type, ...
+ *
+ * Elements can subclass a #GstStream for internal usage (to contain information
+ * pertinent to streams of data).
+ */
+struct _GstStream {
+  GstObject object;
+
+  /*< public >*/
+  const gchar *stream_id;
+
+  /*< private >*/
+  GstStreamPrivate *priv;
+
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+/**
+ * GstStreamClass:
+ * @parent_class: the parent class structure
+ *
+ * GstStream class structure
+ */
+struct _GstStreamClass {
+  GstObjectClass parent_class;
+  
+  /*< private >*/
+  gpointer _gst_reserved[GST_PADDING];
+};
+
+GType     gst_stream_get_type (void);
+
+GstStream *gst_stream_new            (const gchar *stream_id,
+				      GstCaps *caps,
+				      GstStreamType type,
+				      GstStreamFlags flags);
+
+const gchar *gst_stream_get_stream_id (GstStream *stream);
+
+void           gst_stream_set_stream_flags (GstStream *stream, GstStreamFlags flags);
+GstStreamFlags gst_stream_get_stream_flags (GstStream *stream);
+
+void          gst_stream_set_stream_type (GstStream *stream, GstStreamType stream_type);
+GstStreamType gst_stream_get_stream_type (GstStream *stream);
+
+void        gst_stream_set_tags (GstStream *stream, GstTagList *tags);
+GstTagList *gst_stream_get_tags (GstStream *stream);
+
+void     gst_stream_set_caps (GstStream *stream, GstCaps *caps);
+GstCaps *gst_stream_get_caps (GstStream *stream);
+
+const gchar *gst_stream_type_get_name (GstStreamType stype);
+G_END_DECLS
+
+#endif /* __GST_STREAMS_H__ */
diff --git a/gst/gststructure.c b/gst/gststructure.c
index 3c705f3..581b00e 100644
--- a/gst/gststructure.c
+++ b/gst/gststructure.c
@@ -1978,6 +1978,8 @@
   } else if (g_type_is_a (type, G_TYPE_ENUM)
       || g_type_is_a (type, G_TYPE_FLAGS)) {
     g_string_append (s, "%i");
+  } else if (type == G_TYPE_POINTER) {
+    g_string_append_len (s, "%p", 2);
   } else {
     GST_WARNING ("unhandled type: %s", g_type_name (type));
     g_string_append (s, "%" GST_WRAPPED_PTR_FORMAT);
diff --git a/gst/gstsystemclock.c b/gst/gstsystemclock.c
index 2f152ca..dbdecff 100644
--- a/gst/gstsystemclock.c
+++ b/gst/gstsystemclock.c
@@ -374,14 +374,18 @@
   g_return_if_fail (sysclock->priv->wakeup_count > 0);
 
   sysclock->priv->wakeup_count--;
-  if (sysclock->priv->wakeup_count == 0) {
-    /* read the control socket byte when we removed the last wakeup count */
-    GST_CAT_DEBUG (GST_CAT_CLOCK, "reading control");
-    while (!gst_poll_read_control (sysclock->priv->timer)) {
-      g_warning ("gstsystemclock: read control failed, trying again\n");
+  GST_CAT_DEBUG (GST_CAT_CLOCK, "reading control");
+  while (!gst_poll_read_control (sysclock->priv->timer)) {
+    if (errno == EWOULDBLOCK) {
+      /* Try again and give other threads the chance to do something */
+      g_thread_yield ();
+      continue;
+    } else {
+      /* Critical error, GstPoll will have printed a critical warning already */
+      break;
     }
-    GST_SYSTEM_CLOCK_BROADCAST (sysclock);
   }
+  GST_SYSTEM_CLOCK_BROADCAST (sysclock);
   GST_CAT_DEBUG (GST_CAT_CLOCK, "wakeup count %d",
       sysclock->priv->wakeup_count);
 }
@@ -389,22 +393,8 @@
 static void
 gst_system_clock_add_wakeup (GstSystemClock * sysclock)
 {
-  /* only write the control socket for the first wakeup */
-  if (sysclock->priv->wakeup_count == 0) {
-    GST_CAT_DEBUG (GST_CAT_CLOCK, "writing control");
-    while (!gst_poll_write_control (sysclock->priv->timer)) {
-      if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR) {
-        g_warning
-            ("gstsystemclock: write control failed in wakeup_async, trying again: %d:%s\n",
-            errno, g_strerror (errno));
-      } else {
-        g_critical
-            ("gstsystemclock: write control failed in wakeup_async: %d:%s\n",
-            errno, g_strerror (errno));
-        return;
-      }
-    }
-  }
+  GST_CAT_DEBUG (GST_CAT_CLOCK, "writing control");
+  gst_poll_write_control (sysclock->priv->timer);
   sysclock->priv->wakeup_count++;
   GST_CAT_DEBUG (GST_CAT_CLOCK, "wakeup count %d",
       sysclock->priv->wakeup_count);
diff --git a/gst/gsttask.c b/gst/gsttask.c
index 0d2f523..d8f17a7 100644
--- a/gst/gsttask.c
+++ b/gst/gsttask.c
@@ -163,6 +163,8 @@
     gst_object_unref (klass->pool);
   }
   klass->pool = gst_task_pool_new ();
+  /* Classes are never destroyed so this ref will never be dropped */
+  GST_OBJECT_FLAG_SET (klass->pool, GST_OBJECT_FLAG_MAY_BE_LEAKED);
   gst_task_pool_prepare (klass->pool, NULL);
   g_mutex_unlock (&pool_lock);
 }
@@ -384,6 +386,9 @@
   if ((klass = g_type_class_peek (GST_TYPE_TASK))) {
     init_klass_pool (klass);
   }
+
+  /* GstElement owns a GThreadPool */
+  _priv_gst_element_cleanup ();
 }
 
 /**
diff --git a/gst/gsttrace.c b/gst/gsttrace.c
deleted file mode 100644
index 7cb0a3d..0000000
--- a/gst/gsttrace.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/* GStreamer
- * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
- *                    2000 Wim Taymans <wtay@chello.be>
- *
- * gsttrace.c: Tracing functions (deprecated)
- *
- * 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>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
-
-#if defined (_MSC_VER) && _MSC_VER >= 1400
-# include <io.h>
-#endif
-
-#include "gst_private.h"
-#include "gstinfo.h"
-
-#include "gsttrace.h"
-
-GMutex _gst_trace_mutex;
-
-/* global flags */
-static GstAllocTraceFlags _gst_trace_flags = GST_ALLOC_TRACE_NONE;
-
-/* list of registered tracers */
-static GList *_gst_alloc_tracers = NULL;
-
-static void
-_at_exit (void)
-{
-  if (_gst_trace_flags)
-    _priv_gst_alloc_trace_dump ();
-}
-
-void
-_priv_gst_alloc_trace_initialize (void)
-{
-  const gchar *trace;
-
-  trace = g_getenv ("GST_TRACE");
-  if (trace != NULL) {
-    const GDebugKey keys[] = {
-      {"live", GST_ALLOC_TRACE_LIVE},
-      {"mem-live", GST_ALLOC_TRACE_MEM_LIVE},
-    };
-    _gst_trace_flags = g_parse_debug_string (trace, keys, G_N_ELEMENTS (keys));
-    atexit (_at_exit);
-  }
-
-  g_mutex_init (&_gst_trace_mutex);
-}
-
-void
-_priv_gst_alloc_trace_deinit (void)
-{
-  g_mutex_clear (&_gst_trace_mutex);
-}
-
-/**
- * _priv_gst_alloc_trace_register:
- * @name: the name of the new alloc trace object.
- * @offset: the offset in the object where a GType an be found. -1 when the
- * object has no gtype.
- *
- * Register an get a handle to a GstAllocTrace object that
- * can be used to trace memory allocations.
- *
- * Returns: A handle to a GstAllocTrace.
- */
-GstAllocTrace *
-_priv_gst_alloc_trace_register (const gchar * name, goffset offset)
-{
-  GstAllocTrace *trace;
-
-  g_return_val_if_fail (name, NULL);
-
-  trace = g_slice_new (GstAllocTrace);
-  trace->name = g_strdup (name);
-  trace->live = 0;
-  trace->mem_live = NULL;
-  trace->flags = _gst_trace_flags;
-  trace->offset = offset;
-
-  _gst_alloc_tracers = g_list_prepend (_gst_alloc_tracers, trace);
-
-  return trace;
-}
-
-static gint
-compare_func (GstAllocTrace * a, GstAllocTrace * b)
-{
-  return strcmp (a->name, b->name);
-}
-
-static GList *
-gst_alloc_trace_list_sorted (void)
-{
-  GList *ret;
-
-  ret = g_list_sort (g_list_copy (_gst_alloc_tracers),
-      (GCompareFunc) compare_func);
-
-  return ret;
-}
-
-static void
-gst_alloc_trace_print (const GstAllocTrace * trace)
-{
-  GSList *mem_live;
-
-  g_return_if_fail (trace != NULL);
-
-  if (trace->flags & GST_ALLOC_TRACE_LIVE) {
-    g_print ("%-22.22s : %d\n", trace->name, trace->live);
-  } else {
-    g_print ("%-22.22s : (no live count)\n", trace->name);
-  }
-
-  if (trace->flags & GST_ALLOC_TRACE_MEM_LIVE) {
-    mem_live = trace->mem_live;
-
-    while (mem_live) {
-      gpointer data = mem_live->data;
-      const gchar *type_name;
-      gchar *extra = NULL;
-      gint refcount = -1;
-
-      if (trace->offset == -2) {
-        if (G_IS_OBJECT (data)) {
-          type_name = G_OBJECT_TYPE_NAME (data);
-          refcount = G_OBJECT (data)->ref_count;
-        } else
-          type_name = "<invalid>";
-      } else if (trace->offset == -1) {
-        type_name = "<unknown>";
-      } else {
-        GType type;
-
-        type = G_STRUCT_MEMBER (GType, data, trace->offset);
-        type_name = g_type_name (type);
-
-        if (type == GST_TYPE_CAPS) {
-          extra = gst_caps_to_string (data);
-        } else if (type == GST_TYPE_EVENT) {
-          const GstStructure *s = gst_event_get_structure (data);
-
-          if (s == NULL)
-            extra = g_strdup_printf ("%s", GST_EVENT_TYPE_NAME (data));
-          else
-            extra = gst_structure_to_string (s);
-        } else if (type == GST_TYPE_MESSAGE) {
-          const GstStructure *s = gst_message_get_structure (data);
-
-          if (s == NULL)
-            extra = g_strdup_printf ("%s", GST_MESSAGE_TYPE_NAME (data));
-          else
-            extra = gst_structure_to_string (s);
-        }
-        refcount = GST_MINI_OBJECT_REFCOUNT_VALUE (data);
-      }
-
-      if (extra) {
-        g_print ("  %-20.20s : (%d) %p (\"%s\")\n", type_name, refcount, data,
-            extra);
-        g_free (extra);
-      } else
-        g_print ("  %-20.20s : (%d) %p\n", type_name, refcount, data);
-
-      mem_live = mem_live->next;
-    }
-  }
-}
-
-/**
- * _priv_gst_alloc_trace_dump:
- *
- * Print the status of all registered alloc trace objects.
- */
-void
-_priv_gst_alloc_trace_dump (void)
-{
-  GList *orig, *walk;
-
-  orig = walk = gst_alloc_trace_list_sorted ();
-
-  while (walk) {
-    GstAllocTrace *trace = (GstAllocTrace *) walk->data;
-
-    gst_alloc_trace_print (trace);
-
-    walk = g_list_next (walk);
-  }
-
-  g_list_free (orig);
-}
diff --git a/gst/gsttrace.h b/gst/gsttrace.h
deleted file mode 100644
index 33ff633..0000000
--- a/gst/gsttrace.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/* GStreamer
- * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
- *                    2000 Wim Taymans <wtay@chello.be>
- *
- * gsttrace.h: Header for tracing functions (deprecated)
- *
- * 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_TRACE_H__
-#define __GST_TRACE_H__
-
-#include <glib.h>
-#include <gst/gstconfig.h>
-
-G_BEGIN_DECLS
-
-/**
- * GstAllocTraceFlags:
- * @GST_ALLOC_TRACE_NONE: No tracing specified or desired.
- * @GST_ALLOC_TRACE_LIVE: Trace number of non-freed memory.
- * @GST_ALLOC_TRACE_MEM_LIVE: Trace pointers of unfreed memory.
- *
- * Flags indicating which tracing feature to enable.
- */
-typedef enum {
-  GST_ALLOC_TRACE_NONE      = 0,
-  GST_ALLOC_TRACE_LIVE      = (1 << 0),
-  GST_ALLOC_TRACE_MEM_LIVE  = (1 << 1)
-} GstAllocTraceFlags;
-
-typedef struct _GstAllocTrace   GstAllocTrace;
-
-/**
- * GstAllocTrace:
- * @name: The name of the tracing object
- * @flags: Flags for this object
- * @offset: offset of the GType
- * @live: counter for live memory
- * @mem_live: list with pointers to unfreed memory
- *
- * The main tracing object
- */
-struct _GstAllocTrace {
-  gchar         *name;
-  gint           flags;
-
-  goffset        offset;
-  gint           live;
-  GSList        *mem_live;
-};
-
-#ifndef GST_DISABLE_TRACE
-
-GST_EXPORT GMutex       _gst_trace_mutex;
-
-void                    _priv_gst_alloc_trace_initialize (void);
-void                    _priv_gst_alloc_trace_deinit     (void);
-GstAllocTrace*          _priv_gst_alloc_trace_register   (const gchar *name, goffset offset);
-
-void                    _priv_gst_alloc_trace_dump       (void);
-
-#ifndef GST_DISABLE_ALLOC_TRACE
-/**
- * gst_alloc_trace_register:
- * @name: The name of the tracer object
- *
- * Register a new alloc tracer with the given name
- */
-#define _gst_alloc_trace_register(name,offset) _priv_gst_alloc_trace_register (name,offset)
-
-#define _gst_alloc_trace_dump                  _priv_gst_alloc_trace_dump
-
-/**
- * gst_alloc_trace_new:
- * @trace: The tracer to use
- * @mem: The memory allocated
- *
- * Use the tracer to trace a new memory allocation
- */
-#define _gst_alloc_trace_new(trace, mem)           \
-G_STMT_START {                                          \
-  if (G_UNLIKELY ((trace)->flags)) {                    \
-    g_mutex_lock (&_gst_trace_mutex);            \
-    if ((trace)->flags & GST_ALLOC_TRACE_LIVE)          \
-      (trace)->live++;                                  \
-    if ((trace)->flags & GST_ALLOC_TRACE_MEM_LIVE)      \
-      (trace)->mem_live =                               \
-        g_slist_prepend ((trace)->mem_live, mem);       \
-    g_mutex_unlock (&_gst_trace_mutex);          \
-  }                                                     \
-} G_STMT_END
-
-/**
- * gst_alloc_trace_free:
- * @trace: The tracer to use
- * @mem: The memory that is freed
- *
- * Trace a memory free operation
- */
-#define _gst_alloc_trace_free(trace, mem)                \
-G_STMT_START {                                          \
-  if (G_UNLIKELY ((trace)->flags)) {                    \
-    g_mutex_lock (&_gst_trace_mutex);            \
-    if ((trace)->flags & GST_ALLOC_TRACE_LIVE)          \
-      (trace)->live--;                                  \
-    if ((trace)->flags & GST_ALLOC_TRACE_MEM_LIVE)      \
-      (trace)->mem_live =                               \
-        g_slist_remove ((trace)->mem_live, mem);        \
-    g_mutex_unlock (&_gst_trace_mutex);          \
-  }                                                     \
-} G_STMT_END
-
-#else
-#define _gst_alloc_trace_register(name) (NULL)
-#define _gst_alloc_trace_new(trace, mem)
-#define _gst_alloc_trace_free(trace, mem)
-#define _gst_alloc_trace_dump()
-#endif
-
-#else /* GST_DISABLE_TRACE */
-
-#define _gst_alloc_trace_register(name, offset)  (NULL)
-#define _gst_alloc_trace_new(trace, mem)
-#define _gst_alloc_trace_free(trace, mem)
-#define _gst_alloc_trace_dump()
-
-#endif /* GST_DISABLE_TRACE */
-
-G_END_DECLS
-
-#endif /* __GST_TRACE_H__ */
diff --git a/gst/gsttracerutils.c b/gst/gsttracerutils.c
index 3088b06..d46deff 100644
--- a/gst/gsttracerutils.c
+++ b/gst/gsttracerutils.c
@@ -19,9 +19,7 @@
  * Boston, MA 02110-1301, USA.
  */
 
-/**
- * SECTION:gsttracerutils
- * @short_description: Tracing subsystem
+/* Tracing subsystem:
  *
  * The tracing subsystem provides hooks in the core library and API for modules
  * to attach to them.
@@ -55,7 +53,9 @@
   "element-new", "element-add-pad", "element-remove-pad",
   "bin-add-pre", "bin-add-post", "bin-remove-pre", "bin-remove-post",
   "pad-link-pre", "pad-link-post", "pad-unlink-pre", "pad-unlink-post",
-  "element-change-state-pre", "element-change-state-post"
+  "element-change-state-pre", "element-change-state-post",
+  "mini-object-created", "mini-object-destroyed", "object-created",
+  "object-destroyed",
 };
 
 GQuark _priv_gst_tracer_quark_table[GST_TRACER_QUARK_MAX];
diff --git a/gst/gsttracerutils.h b/gst/gsttracerutils.h
index 64cc14c..e61d66d 100644
--- a/gst/gsttracerutils.h
+++ b/gst/gsttracerutils.h
@@ -27,6 +27,7 @@
 #include <glib-object.h>
 #include <gst/gstconfig.h>
 #include <gst/gstbin.h>
+#include <gst/gstutils.h>
 
 G_BEGIN_DECLS
 
@@ -70,6 +71,10 @@
   GST_TRACER_QUARK_HOOK_PAD_UNLINK_POST,
   GST_TRACER_QUARK_HOOK_ELEMENT_CHANGE_STATE_PRE,
   GST_TRACER_QUARK_HOOK_ELEMENT_CHANGE_STATE_POST,
+  GST_TRACER_QUARK_HOOK_MINI_OBJECT_CREATED,
+  GST_TRACER_QUARK_HOOK_MINI_OBJECT_DESTROYED,
+  GST_TRACER_QUARK_HOOK_OBJECT_CREATED,
+  GST_TRACER_QUARK_HOOK_OBJECT_DESTROYED,
   GST_TRACER_QUARK_MAX
 } GstTracerQuarkId;
 
@@ -555,6 +560,69 @@
     GstTracerHookPadUnlinkPost, (GST_TRACER_ARGS, srcpad, sinkpad, result)); \
 }G_STMT_END
 
+/**
+ * GstTracerHookMiniObjectCreated:
+ * @self: the tracer instance
+ * @ts: the current timestamp
+ * @object: the mini object being created
+ *
+ * Hook called when a #GstMiniObject is created named "mini-object-created".
+ */
+typedef void (*GstTracerHookMiniObjectCreated) (GObject *self, GstClockTime ts,
+    GstMiniObject *object);
+#define GST_TRACER_MINI_OBJECT_CREATED(object) G_STMT_START{ \
+  GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_MINI_OBJECT_CREATED), \
+    GstTracerHookMiniObjectCreated, (GST_TRACER_ARGS, object)); \
+}G_STMT_END
+
+/**
+ * GstTracerHookMiniObjectDestroyed:
+ * @self: the tracer instance
+ * @ts: the current timestamp
+ * @object: the mini object being destroyed
+ *
+ * Hook called when a #GstMiniObject is being destroyed named
+ * "mini-object-destroyed".
+ */
+typedef void (*GstTracerHookMiniObjectDestroyed) (GObject *self, GstClockTime ts,
+    GstMiniObject *object);
+#define GST_TRACER_MINI_OBJECT_DESTROYED(object) G_STMT_START{ \
+  GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_MINI_OBJECT_DESTROYED), \
+    GstTracerHookMiniObjectDestroyed, (GST_TRACER_ARGS, object)); \
+}G_STMT_END
+
+/**
+ * GstTracerHookObjectCreated:
+ * @self: the tracer instance
+ * @ts: the current timestamp
+ * @object: the object being created
+ *
+ * Hook called when a #GstObject is created named "object-created".
+ */
+typedef void (*GstTracerHookObjectCreated) (GObject *self, GstClockTime ts,
+    GstObject *object);
+#define GST_TRACER_OBJECT_CREATED(object) G_STMT_START{ \
+  GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_OBJECT_CREATED), \
+    GstTracerHookObjectCreated, (GST_TRACER_ARGS, object)); \
+}G_STMT_END
+
+/**
+ * GstTracerHookObjectDestroyed:
+ * @self: the tracer instance
+ * @ts: the current timestamp
+ * @object: the object being destroyed
+ *
+ * Hook called when a #GstObject is being destroyed named
+ * "object-destroyed".
+ */
+typedef void (*GstTracerHookObjectDestroyed) (GObject *self, GstClockTime ts,
+    GstObject *object);
+#define GST_TRACER_OBJECT_DESTROYED(object) G_STMT_START{ \
+  GST_TRACER_DISPATCH(GST_TRACER_QUARK(HOOK_OBJECT_DESTROYED), \
+    GstTracerHookObjectDestroyed, (GST_TRACER_ARGS, object)); \
+}G_STMT_END
+
+
 #else /* !GST_DISABLE_GST_TRACER_HOOKS */
 
 #define GST_TRACER_PAD_PUSH_PRE(pad, buffer)
@@ -584,6 +652,10 @@
 #define GST_TRACER_PAD_LINK_POST(srcpad, sinkpad, res)
 #define GST_TRACER_PAD_UNLINK_PRE(srcpad, sinkpad)
 #define GST_TRACER_PAD_UNLINK_POST(srcpad, sinkpad, res)
+#define GST_TRACER_MINI_OBJECT_CREATED(object)
+#define GST_TRACER_MINI_OBJECT_DESTROYED(object)
+#define GST_TRACER_OBJECT_CREATED(object)
+#define GST_TRACER_OBJECT_DESTROYED(object)
 
 #endif /* GST_DISABLE_GST_TRACER_HOOKS */
 
diff --git a/gst/gsturi.c b/gst/gsturi.c
index 4ad7d3d..d87d4db 100644
--- a/gst/gsturi.c
+++ b/gst/gsturi.c
@@ -1556,7 +1556,7 @@
         if (eoh == NULL || eoh > eoa) {
           GST_DEBUG ("Unable to parse the host part of the URI '%s'.",
               orig_uri);
-          _gst_uri_free (uri_obj);
+          gst_uri_unref (uri_obj);
           return NULL;
         }
         reoh = eoh + 1;
@@ -1576,7 +1576,7 @@
         if (uri[0] != ':' || strspn (uri + 1, "0123456789") != eoa - uri - 1) {
           GST_DEBUG ("Unable to parse host/port part of the URI '%s'.",
               orig_uri);
-          _gst_uri_free (uri_obj);
+          gst_uri_unref (uri_obj);
           return NULL;
         }
         /* otherwise treat port as unsigned decimal number */
diff --git a/gst/gsturi.h b/gst/gsturi.h
index 6e1504c..7e0f0b3 100644
--- a/gst/gsturi.h
+++ b/gst/gsturi.h
@@ -209,11 +209,11 @@
 gboolean gst_uri_equal                 (const GstUri * first,
                                         const GstUri * second);
 GstUri * gst_uri_join                  (GstUri * base_uri,
-                                        GstUri * ref_uri);
+                                        GstUri * ref_uri) G_GNUC_WARN_UNUSED_RESULT;
 gchar *  gst_uri_join_strings          (const gchar * base_uri,
                                         const gchar * ref_uri) G_GNUC_MALLOC;
 gboolean gst_uri_is_writable           (const GstUri * uri);
-GstUri * gst_uri_make_writable         (GstUri * uri);
+GstUri * gst_uri_make_writable         (GstUri * uri) G_GNUC_WARN_UNUSED_RESULT;
 gchar *  gst_uri_to_string             (const GstUri * uri) G_GNUC_MALLOC;
 gboolean gst_uri_is_normalized         (const GstUri * uri);
 gboolean gst_uri_normalize             (GstUri * uri);
diff --git a/gst/gstutils.c b/gst/gstutils.c
index a26bde6..e1265a0 100644
--- a/gst/gstutils.c
+++ b/gst/gstutils.c
@@ -1389,20 +1389,20 @@
   gpad = gst_ghost_pad_new (name, pad);
   g_free (name);
 
-  GST_STATE_LOCK (e);
-  gst_element_get_state (e, &current, &next, 0);
+  GST_STATE_LOCK (parent);
+  gst_element_get_state (GST_ELEMENT (parent), &current, &next, 0);
 
-  if (current > GST_STATE_READY || next == GST_STATE_PAUSED)
+  if (current > GST_STATE_READY || next >= GST_STATE_PAUSED)
     gst_pad_set_active (gpad, TRUE);
 
   if (!gst_element_add_pad ((GstElement *) parent, gpad)) {
     g_warning ("Pad named %s already exists in element %s\n",
         GST_OBJECT_NAME (gpad), GST_OBJECT_NAME (parent));
     gst_object_unref ((GstObject *) gpad);
-    GST_STATE_UNLOCK (e);
+    GST_STATE_UNLOCK (parent);
     return NULL;
   }
-  GST_STATE_UNLOCK (e);
+  GST_STATE_UNLOCK (parent);
 
   return gpad;
 }
@@ -1520,6 +1520,65 @@
   return ret;
 }
 
+/**
+ * gst_pad_link_maybe_ghosting_full:
+ * @src: a #GstPad
+ * @sink: a #GstPad
+ * @flags: some #GstPadLinkCheck flags
+ *
+ * Links @src to @sink, creating any #GstGhostPad's in between as necessary.
+ *
+ * This is a convenience function to save having to create and add intermediate
+ * #GstGhostPad's as required for linking across #GstBin boundaries.
+ *
+ * If @src or @sink pads don't have parent elements or do not share a common
+ * ancestor, the link will fail.
+ *
+ * Calling gst_pad_link_maybe_ghosting_full() with
+ * @flags == %GST_PAD_LINK_CHECK_DEFAULT is the recommended way of linking
+ * pads with safety checks applied.
+ *
+ * Returns: whether the link succeeded.
+ *
+ * Since: 1.10
+ */
+gboolean
+gst_pad_link_maybe_ghosting_full (GstPad * src, GstPad * sink,
+    GstPadLinkCheck flags)
+{
+  g_return_val_if_fail (GST_IS_PAD (src), FALSE);
+  g_return_val_if_fail (GST_IS_PAD (sink), FALSE);
+
+  return pad_link_maybe_ghosting (src, sink, flags);
+}
+
+/**
+ * gst_pad_link_maybe_ghosting:
+ * @src: a #GstPad
+ * @sink: a #GstPad
+ *
+ * Links @src to @sink, creating any #GstGhostPad's in between as necessary.
+ *
+ * This is a convenience function to save having to create and add intermediate
+ * #GstGhostPad's as required for linking across #GstBin boundaries.
+ *
+ * If @src or @sink pads don't have parent elements or do not share a common
+ * ancestor, the link will fail.
+ *
+ * Returns: whether the link succeeded.
+ *
+ * Since: 1.10
+ */
+gboolean
+gst_pad_link_maybe_ghosting (GstPad * src, GstPad * sink)
+{
+  g_return_val_if_fail (GST_IS_PAD (src), FALSE);
+  g_return_val_if_fail (GST_IS_PAD (sink), FALSE);
+
+  return gst_pad_link_maybe_ghosting_full (src, sink,
+      GST_PAD_LINK_CHECK_DEFAULT);
+}
+
 static void
 release_and_unref_pad (GstElement * element, GstPad * pad, gboolean requestpad)
 {
@@ -2356,7 +2415,7 @@
   g_return_val_if_fail (seek_pos >= 0, FALSE);
 
   return gst_element_seek (element, 1.0, format, seek_flags,
-      GST_SEEK_TYPE_SET, seek_pos, GST_SEEK_TYPE_NONE, 0);
+      GST_SEEK_TYPE_SET, seek_pos, GST_SEEK_TYPE_SET, GST_CLOCK_TIME_NONE);
 }
 
 /**
@@ -3935,6 +3994,41 @@
 }
 
 /**
+ * gst_pad_get_stream:
+ * @pad: A source #GstPad
+ *
+ * Returns the current #GstStream for the @pad, or %NULL if none has been
+ * set yet, i.e. the pad has not received a stream-start event yet.
+ *
+ * This is a convenience wrapper around gst_pad_get_sticky_event() and
+ * gst_event_parse_stream().
+ *
+ * Returns: (nullable) (transfer full): the current #GstStream for @pad, or %NULL.
+ *     unref the returned stream when no longer needed.
+ *
+ * Since: 1.10
+ */
+GstStream *
+gst_pad_get_stream (GstPad * pad)
+{
+  GstStream *stream = NULL;
+  GstEvent *event;
+
+  g_return_val_if_fail (GST_IS_PAD (pad), NULL);
+
+  event = gst_pad_get_sticky_event (pad, GST_EVENT_STREAM_START, 0);
+  if (event != NULL) {
+    gst_event_parse_stream (event, &stream);
+    gst_event_unref (event);
+    GST_LOG_OBJECT (pad, "pad has stream object %p", stream);
+  } else {
+    GST_DEBUG_OBJECT (pad, "pad has not received a stream-start event yet");
+  }
+
+  return stream;
+}
+
+/**
  * gst_util_group_id_next:
  *
  * Return a constantly incrementing group id.
diff --git a/gst/gstutils.h b/gst/gstutils.h
index 457a76a..9360c53 100644
--- a/gst/gstutils.h
+++ b/gst/gstutils.h
@@ -924,6 +924,11 @@
 GstCaps *               gst_pad_query_caps              (GstPad *pad, GstCaps *filter);
 gboolean                gst_pad_query_accept_caps       (GstPad *pad, GstCaps *caps);
 
+gboolean                gst_pad_link_maybe_ghosting      (GstPad            *src,
+                                                          GstPad            *sink);
+gboolean                gst_pad_link_maybe_ghosting_full (GstPad            *src,
+                                                          GstPad            *sink,
+                                                          GstPadLinkCheck   flags);
 
 gboolean                gst_pad_peer_query_position     (GstPad *pad, GstFormat format, gint64 *cur);
 gboolean                gst_pad_peer_query_duration     (GstPad *pad, GstFormat format, gint64 *duration);
@@ -937,6 +942,7 @@
 gchar *                 gst_pad_create_stream_id_printf_valist (GstPad * pad, GstElement * parent, const gchar *stream_id, va_list var_args) G_GNUC_PRINTF (3, 0) G_GNUC_MALLOC;
 
 gchar *                 gst_pad_get_stream_id           (GstPad * pad);
+GstStream *             gst_pad_get_stream              (GstPad * pad);
 
 /* bin functions */
 void                    gst_bin_add_many                (GstBin *bin, GstElement *element_1, ...) G_GNUC_NULL_TERMINATED;
diff --git a/gst/gstvalue.c b/gst/gstvalue.c
index b9f76de..6c96bfb 100644
--- a/gst/gstvalue.c
+++ b/gst/gstvalue.c
@@ -4951,6 +4951,20 @@
   if (type1 == GST_TYPE_LIST || type2 == GST_TYPE_LIST)
     return TRUE;
 
+  if (G_UNLIKELY (GST_VALUE_HOLDS_FLAG_SET (value1) &&
+          GST_VALUE_HOLDS_FLAG_SET (value2))) {
+    GType type1, type2, flagset_type;
+
+    type1 = G_VALUE_TYPE (value1);
+    type2 = G_VALUE_TYPE (value2);
+    flagset_type = GST_TYPE_FLAG_SET;
+
+    /* Allow intersection with the generic FlagSet type, on one
+     * side, but not 2 different subtypes - that makes no sense */
+    if (type1 == type2 || type1 == flagset_type || type2 == flagset_type)
+      return TRUE;
+  }
+
   /* check registered intersect functions */
   len = gst_value_intersect_funcs->len;
   for (i = 0; i < len; i++) {
diff --git a/gst/parse/Makefile.am b/gst/parse/Makefile.am
index bb873aa..844349a 100644
--- a/gst/parse/Makefile.am
+++ b/gst/parse/Makefile.am
@@ -14,7 +14,7 @@
 nodist_libgstparse_la_SOURCES = lex.priv_gst_parse_yy.c grammar.tab.c grammar.tag.h parse_lex.h
 CLEANFILES += grammar.tab.c lex.priv_gst_parse_yy.c
 
-libgstparse_la_CFLAGS = $(GST_ALL_CFLAGS) -DYYMALLOC=g_malloc -DYYFREE=g_free
+libgstparse_la_CFLAGS = $(GST_ALL_CFLAGS) -DGST_EXPORTS -DYYMALLOC=g_malloc -DYYFREE=g_free
 libgstparse_la_LIBADD = $(GST_ALL_LIBS)
 
 noinst_HEADERS = types.h
diff --git a/gst/parse/Makefile.in b/gst/parse/Makefile.in
index 366d0db..d13c7ad 100644
--- a/gst/parse/Makefile.in
+++ b/gst/parse/Makefile.in
@@ -287,6 +287,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -294,17 +295,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -429,6 +427,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
@@ -522,7 +522,7 @@
 
 # uncomment these lines to _NOT_ dist the generated sources
 nodist_libgstparse_la_SOURCES = lex.priv_gst_parse_yy.c grammar.tab.c grammar.tag.h parse_lex.h
-libgstparse_la_CFLAGS = $(GST_ALL_CFLAGS) -DYYMALLOC=g_malloc -DYYFREE=g_free
+libgstparse_la_CFLAGS = $(GST_ALL_CFLAGS) -DGST_EXPORTS -DYYMALLOC=g_malloc -DYYFREE=g_free
 libgstparse_la_LIBADD = $(GST_ALL_LIBS)
 noinst_HEADERS = types.h
 all: all-am
diff --git a/gst/parse/grammar.y b/gst/parse/grammar.y
index 49c3170..3f1a8bc 100644
--- a/gst/parse/grammar.y
+++ b/gst/parse/grammar.y
@@ -333,7 +333,7 @@
        GstElement *bin;
 
        bin = gst_parse_bin_from_description_full (set->value_str, TRUE, NULL,
-           GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS, NULL);
+           GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS | GST_PARSE_FLAG_PLACE_IN_BIN, NULL);
        if (bin) {
          g_value_set_object (&v, bin);
          got_value = TRUE;
@@ -429,7 +429,7 @@
        GstElement *bin;
 
        bin = gst_parse_bin_from_description_full (pos, TRUE, NULL,
-           GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS, NULL);
+           GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS | GST_PARSE_FLAG_PLACE_IN_BIN, NULL);
        if (bin) {
          g_value_set_object (&v, bin);
          got_value = TRUE;
@@ -1107,7 +1107,10 @@
 
   /* put all elements in our bin if necessary */
   if(g.chain->elements->next){
-    bin = GST_BIN (gst_element_factory_make ("pipeline", NULL));
+    if (flags & GST_PARSE_FLAG_PLACE_IN_BIN)
+      bin = GST_BIN (gst_element_factory_make ("bin", NULL));
+    else
+      bin = GST_BIN (gst_element_factory_make ("pipeline", NULL));
     g_assert (bin);
 
     for (walk = g.chain->elements; walk; walk = walk->next) {
diff --git a/gst/printf/Makefile.in b/gst/printf/Makefile.in
index d8c5e39..6ea65ca 100644
--- a/gst/printf/Makefile.in
+++ b/gst/printf/Makefile.in
@@ -284,6 +284,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -291,17 +292,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -426,6 +424,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/gstreamer.doap b/gstreamer.doap
index cd1310c..d5881cc 100644
--- a/gstreamer.doap
+++ b/gstreamer.doap
@@ -40,31 +40,31 @@
 
  <release>
   <Version>
-   <revision>1.8.3</revision>
-   <branch>1.8</branch>
+   <revision>1.9.90</revision>
+   <branch>master</branch>
    <name></name>
-   <created>2016-08-19</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.8.3.tar.xz" />
+   <created>2016-09-30</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.9.90.tar.xz" />
   </Version>
  </release>
 
  <release>
   <Version>
-   <revision>1.8.2</revision>
-   <branch>1.8</branch>
+   <revision>1.9.2</revision>
+   <branch>master</branch>
    <name></name>
-   <created>2016-06-09</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.8.2.tar.xz" />
+   <created>2016-09-01</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.9.2.tar.xz" />
   </Version>
  </release>
 
  <release>
   <Version>
-   <revision>1.8.1</revision>
-   <branch>1.8</branch>
+   <revision>1.9.1</revision>
+   <branch>master</branch>
    <name></name>
-   <created>2016-04-20</created>
-   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.8.1.tar.xz" />
+   <created>2016-06-06</created>
+   <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.9.1.tar.xz" />
   </Version>
  </release>
 
diff --git a/gstreamer.spec b/gstreamer.spec
index 7c81f7f..d37e44e 100644
--- a/gstreamer.spec
+++ b/gstreamer.spec
@@ -4,7 +4,7 @@
 %define 	_glib2		2.40.0
 
 Name: 		%{gstreamer}
-Version: 	1.8.3
+Version: 	1.9.90
 Release: 	1
 Summary: 	GStreamer streaming media framework runtime
 
diff --git a/libs/Makefile.in b/libs/Makefile.in
index f7b95dc..da903ad 100644
--- a/libs/Makefile.in
+++ b/libs/Makefile.in
@@ -288,6 +288,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -295,17 +296,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -430,6 +428,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/libs/gst/Makefile.in b/libs/gst/Makefile.in
index 0a3c322..b46618a 100644
--- a/libs/gst/Makefile.in
+++ b/libs/gst/Makefile.in
@@ -287,6 +287,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -294,17 +295,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -429,6 +427,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/libs/gst/base/Makefile.in b/libs/gst/base/Makefile.in
index 64cc5a4..7d1d67a 100644
--- a/libs/gst/base/Makefile.in
+++ b/libs/gst/base/Makefile.in
@@ -334,6 +334,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -341,17 +342,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -476,6 +474,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/libs/gst/base/gstadapter.c b/libs/gst/base/gstadapter.c
index c017486..079a2b5 100644
--- a/libs/gst/base/gstadapter.c
+++ b/libs/gst/base/gstadapter.c
@@ -92,6 +92,18 @@
  * gst_adapter_prev_pts_at_offset() can be used to determine the last
  * seen timestamp at a particular offset in the adapter.
  *
+ * The adapter will also keep track of the offset of the buffers
+ * (#GST_BUFFER_OFFSET) that were pushed. The last seen offset before the
+ * current position can be queried with gst_adapter_prev_offset(). This function
+ * can optionally return the number of bytes between the start of the buffer
+ * that carried the offset and the current adapter position.
+ *
+ * Additionally the adapter also keeps track of the PTS, DTS and buffer offset
+ * at the last discontinuity, which can be retrieved with
+ * gst_adapter_pts_at_discont(), gst_adapter_dts_at_discont() and
+ * gst_adapter_offset_at_discont(). The number of bytes that were consumed
+ * since then can be queried with gst_adapter_distance_from_discont().
+ *
  * A last thing to note is that while #GstAdapter is pretty optimized,
  * merging buffers still might be an operation that requires a malloc() and
  * memcpy() operation, and these operations are not the fastest. Because of
@@ -143,10 +155,18 @@
   guint64 pts_distance;
   GstClockTime dts;
   guint64 dts_distance;
+  guint64 offset;
+  guint64 offset_distance;
 
   gsize scan_offset;
   GSList *scan_entry;
 
+  GstClockTime pts_at_discont;
+  GstClockTime dts_at_discont;
+  guint64 offset_at_discont;
+
+  guint64 distance_from_discont;
+
   GstMapInfo info;
 };
 
@@ -181,6 +201,12 @@
   adapter->pts_distance = 0;
   adapter->dts = GST_CLOCK_TIME_NONE;
   adapter->dts_distance = 0;
+  adapter->offset = GST_BUFFER_OFFSET_NONE;
+  adapter->offset_distance = 0;
+  adapter->pts_at_discont = GST_CLOCK_TIME_NONE;
+  adapter->dts_at_discont = GST_CLOCK_TIME_NONE;
+  adapter->offset_at_discont = GST_BUFFER_OFFSET_NONE;
+  adapter->distance_from_discont = 0;
 }
 
 static void
@@ -242,14 +268,21 @@
   adapter->pts_distance = 0;
   adapter->dts = GST_CLOCK_TIME_NONE;
   adapter->dts_distance = 0;
+  adapter->offset = GST_BUFFER_OFFSET_NONE;
+  adapter->offset_distance = 0;
+  adapter->pts_at_discont = GST_CLOCK_TIME_NONE;
+  adapter->dts_at_discont = GST_CLOCK_TIME_NONE;
+  adapter->offset_at_discont = GST_BUFFER_OFFSET_NONE;
+  adapter->distance_from_discont = 0;
   adapter->scan_offset = 0;
   adapter->scan_entry = NULL;
 }
 
 static inline void
-update_timestamps (GstAdapter * adapter, GstBuffer * buf)
+update_timestamps_and_offset (GstAdapter * adapter, GstBuffer * buf)
 {
   GstClockTime pts, dts;
+  guint64 offset;
 
   pts = GST_BUFFER_PTS (buf);
   if (GST_CLOCK_TIME_IS_VALID (pts)) {
@@ -263,6 +296,20 @@
     adapter->dts = dts;
     adapter->dts_distance = 0;
   }
+  offset = GST_BUFFER_OFFSET (buf);
+  if (offset != GST_BUFFER_OFFSET_NONE) {
+    GST_LOG_OBJECT (adapter, "new offset %" G_GUINT64_FORMAT, offset);
+    adapter->offset = offset;
+    adapter->offset_distance = 0;
+  }
+
+  if (GST_BUFFER_IS_DISCONT (buf)) {
+    /* Take values as-is (might be NONE) */
+    adapter->pts_at_discont = pts;
+    adapter->dts_at_discont = dts;
+    adapter->offset_at_discont = offset;
+    adapter->distance_from_discont = 0;
+  }
 }
 
 /* copy data into @dest, skipping @skip bytes from the head buffers */
@@ -340,7 +387,7 @@
     GST_LOG_OBJECT (adapter, "pushing %p first %" G_GSIZE_FORMAT " bytes",
         buf, size);
     adapter->buflist = adapter->buflist_end = g_slist_append (NULL, buf);
-    update_timestamps (adapter, buf);
+    update_timestamps_and_offset (adapter, buf);
   } else {
     /* Otherwise append to the end, and advance our end pointer */
     GST_LOG_OBJECT (adapter, "pushing %p %" G_GSIZE_FORMAT " bytes at end, "
@@ -597,6 +644,8 @@
   /* distance is always at least the amount of skipped bytes */
   adapter->pts_distance -= adapter->skip;
   adapter->dts_distance -= adapter->skip;
+  adapter->offset_distance -= adapter->skip;
+  adapter->distance_from_discont -= adapter->skip;
 
   g = adapter->buflist;
   cur = g->data;
@@ -606,6 +655,8 @@
     GST_LOG_OBJECT (adapter, "flushing out head buffer");
     adapter->pts_distance += size;
     adapter->dts_distance += size;
+    adapter->offset_distance += size;
+    adapter->distance_from_discont += size;
     flush -= size;
 
     gst_buffer_unref (cur);
@@ -619,7 +670,7 @@
     }
     /* there is a new head buffer, update the timestamps */
     cur = g->data;
-    update_timestamps (adapter, cur);
+    update_timestamps_and_offset (adapter, cur);
     size = gst_buffer_get_size (cur);
   }
   adapter->buflist = g;
@@ -627,6 +678,8 @@
   adapter->skip = flush;
   adapter->pts_distance += flush;
   adapter->dts_distance += flush;
+  adapter->offset_distance += flush;
+  adapter->distance_from_discont += flush;
   /* invalidate scan position */
   adapter->scan_offset = 0;
   adapter->scan_entry = NULL;
@@ -1312,6 +1365,113 @@
 }
 
 /**
+ * gst_adapter_get_distance_from_discont:
+ * @adapter: a #GstAdapter
+ *
+ * Get the distance in bytes since the last buffer with the
+ * %GST_BUFFER_FLAG_DISCONT flag.
+ *
+ * The distance will be reset to 0 for all buffers with
+ * %GST_BUFFER_FLAG_DISCONT on them, and then calculated for all other
+ * following buffers based on their size.
+ *
+ * Since: 1.10
+ *
+ * Returns: The offset. Can be %GST_BUFFER_OFFSET_NONE.
+ */
+guint64
+gst_adapter_distance_from_discont (GstAdapter * adapter)
+{
+  return adapter->distance_from_discont;
+}
+
+/**
+ * gst_adapter_offset_at_discont:
+ * @adapter: a #GstAdapter
+ *
+ * Get the offset that was on the last buffer with the GST_BUFFER_FLAG_DISCONT
+ * flag, or GST_BUFFER_OFFSET_NONE.
+ *
+ * Since: 1.10
+ *
+ * Returns: The offset at the last discont or GST_BUFFER_OFFSET_NONE.
+ */
+guint64
+gst_adapter_offset_at_discont (GstAdapter * adapter)
+{
+  g_return_val_if_fail (GST_IS_ADAPTER (adapter), GST_BUFFER_OFFSET_NONE);
+
+  return adapter->offset_at_discont;
+}
+
+/**
+ * gst_adapter_pts_at_discont:
+ * @adapter: a #GstAdapter
+ *
+ * Get the PTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT
+ * flag, or GST_CLOCK_TIME_NONE.
+ *
+ * Since: 1.10
+ *
+ * Returns: The PTS at the last discont or GST_CLOCK_TIME_NONE.
+ */
+GstClockTime
+gst_adapter_pts_at_discont (GstAdapter * adapter)
+{
+  g_return_val_if_fail (GST_IS_ADAPTER (adapter), GST_CLOCK_TIME_NONE);
+
+  return adapter->pts_at_discont;
+}
+
+/**
+ * gst_adapter_dts_at_discont:
+ * @adapter: a #GstAdapter
+ *
+ * Get the DTS that was on the last buffer with the GST_BUFFER_FLAG_DISCONT
+ * flag, or GST_CLOCK_TIME_NONE.
+ *
+ * Since: 1.10
+ *
+ * Returns: The DTS at the last discont or GST_CLOCK_TIME_NONE.
+ */
+GstClockTime
+gst_adapter_dts_at_discont (GstAdapter * adapter)
+{
+  g_return_val_if_fail (GST_IS_ADAPTER (adapter), GST_CLOCK_TIME_NONE);
+
+  return adapter->dts_at_discont;
+}
+
+/**
+ * gst_adapter_prev_offset:
+ * @adapter: a #GstAdapter
+ * @distance: (out) (allow-none): pointer to a location for distance, or %NULL
+ *
+ * Get the offset that was before the current byte in the adapter. When
+ * @distance is given, the amount of bytes between the offset and the current
+ * position is returned.
+ *
+ * The offset is reset to GST_BUFFER_OFFSET_NONE and the distance is set to 0
+ * when the adapter is first created or when it is cleared. This also means that
+ * before the first byte with an offset is removed from the adapter, the offset
+ * and distance returned are GST_BUFFER_OFFSET_NONE and 0 respectively.
+ *
+ * Since: 1.10
+ *
+ * Returns: The previous seen offset.
+ */
+guint64
+gst_adapter_prev_offset (GstAdapter * adapter, guint64 * distance)
+{
+  g_return_val_if_fail (GST_IS_ADAPTER (adapter), GST_BUFFER_OFFSET_NONE);
+
+  if (distance)
+    *distance = adapter->offset_distance;
+
+  return adapter->offset;
+}
+
+/**
  * gst_adapter_prev_pts:
  * @adapter: a #GstAdapter
  * @distance: (out) (allow-none): pointer to location for distance, or %NULL
diff --git a/libs/gst/base/gstadapter.h b/libs/gst/base/gstadapter.h
index bb8c77d..23cc250 100644
--- a/libs/gst/base/gstadapter.h
+++ b/libs/gst/base/gstadapter.h
@@ -75,6 +75,13 @@
 GstClockTime            gst_adapter_prev_dts            (GstAdapter *adapter, guint64 *distance);
 GstClockTime            gst_adapter_prev_pts_at_offset  (GstAdapter * adapter, gsize offset, guint64 * distance);
 GstClockTime            gst_adapter_prev_dts_at_offset  (GstAdapter * adapter, gsize offset, guint64 * distance);
+guint64                 gst_adapter_prev_offset         (GstAdapter *adapter, guint64 *distance);
+
+GstClockTime            gst_adapter_pts_at_discont      (GstAdapter *adapter);
+GstClockTime            gst_adapter_dts_at_discont      (GstAdapter *adapter);
+guint64                 gst_adapter_offset_at_discont   (GstAdapter *adapter);
+
+guint64                 gst_adapter_distance_from_discont (GstAdapter *adapter);
 
 gssize                  gst_adapter_masked_scan_uint32  (GstAdapter * adapter, guint32 mask,
                                                          guint32 pattern, gsize offset, gsize size);
diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c
index 45bc869..816b7ab 100644
--- a/libs/gst/base/gstbaseparse.c
+++ b/libs/gst/base/gstbaseparse.c
@@ -952,23 +952,25 @@
     return;
   }
 
-  /* only add bitrate tags to non-empty taglists for now, and only if neither
-   * upstream tags nor the subclass sets the bitrate tag in question already */
-  if (parse->priv->min_bitrate != G_MAXUINT && parse->priv->post_min_bitrate) {
-    GST_LOG_OBJECT (parse, "adding min bitrate %u", parse->priv->min_bitrate);
-    gst_tag_list_add (merged_tags, GST_TAG_MERGE_KEEP, GST_TAG_MINIMUM_BITRATE,
-        parse->priv->min_bitrate, NULL);
-  }
-  if (parse->priv->max_bitrate != 0 && parse->priv->post_max_bitrate) {
-    GST_LOG_OBJECT (parse, "adding max bitrate %u", parse->priv->max_bitrate);
-    gst_tag_list_add (merged_tags, GST_TAG_MERGE_KEEP, GST_TAG_MAXIMUM_BITRATE,
-        parse->priv->max_bitrate, NULL);
-  }
-  if (parse->priv->avg_bitrate != 0 && parse->priv->post_avg_bitrate) {
-    parse->priv->posted_avg_bitrate = parse->priv->avg_bitrate;
-    GST_LOG_OBJECT (parse, "adding avg bitrate %u", parse->priv->avg_bitrate);
-    gst_tag_list_add (merged_tags, GST_TAG_MERGE_KEEP, GST_TAG_BITRATE,
-        parse->priv->avg_bitrate, NULL);
+  if (parse->priv->framecount >= MIN_FRAMES_TO_POST_BITRATE) {
+    /* only add bitrate tags to non-empty taglists for now, and only if neither
+     * upstream tags nor the subclass sets the bitrate tag in question already */
+    if (parse->priv->min_bitrate != G_MAXUINT && parse->priv->post_min_bitrate) {
+      GST_LOG_OBJECT (parse, "adding min bitrate %u", parse->priv->min_bitrate);
+      gst_tag_list_add (merged_tags, GST_TAG_MERGE_KEEP,
+          GST_TAG_MINIMUM_BITRATE, parse->priv->min_bitrate, NULL);
+    }
+    if (parse->priv->max_bitrate != 0 && parse->priv->post_max_bitrate) {
+      GST_LOG_OBJECT (parse, "adding max bitrate %u", parse->priv->max_bitrate);
+      gst_tag_list_add (merged_tags, GST_TAG_MERGE_KEEP,
+          GST_TAG_MAXIMUM_BITRATE, parse->priv->max_bitrate, NULL);
+    }
+    if (parse->priv->avg_bitrate != 0 && parse->priv->post_avg_bitrate) {
+      parse->priv->posted_avg_bitrate = parse->priv->avg_bitrate;
+      GST_LOG_OBJECT (parse, "adding avg bitrate %u", parse->priv->avg_bitrate);
+      gst_tag_list_add (merged_tags, GST_TAG_MERGE_KEEP,
+          GST_TAG_BITRATE, parse->priv->avg_bitrate, NULL);
+    }
   }
 
   parse->priv->pending_events =
@@ -2223,6 +2225,12 @@
     gst_adapter_clear (parse->priv->adapter);
   }
 
+  if (*skip == 0 && *flushed == 0) {
+    /* Carry over discont if we need more data */
+    if (GST_BUFFER_IS_DISCONT (frame->buffer))
+      parse->priv->discont = TRUE;
+  }
+
   gst_base_parse_frame_free (frame);
 
   return ret;
@@ -2524,6 +2532,8 @@
 
   if (ret == GST_BASE_PARSE_FLOW_DROPPED) {
     GST_LOG_OBJECT (parse, "frame (%" G_GSIZE_FORMAT " bytes) dropped", size);
+    if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT))
+      parse->priv->discont = TRUE;
     gst_buffer_unref (buffer);
     ret = GST_FLOW_OK;
   } else if (ret == GST_FLOW_OK) {
@@ -3595,8 +3605,7 @@
       /* for fatal errors we post an error message, wrong-state is
        * not fatal because it happens due to flushes and only means
        * that we should stop now. */
-      GST_ELEMENT_ERROR (parse, STREAM, FAILED, (NULL),
-          ("streaming stopped, reason %s", gst_flow_get_name (ret)));
+      GST_ELEMENT_FLOW_ERROR (parse, ret);
       push_eos = TRUE;
     }
     if (push_eos) {
diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c
index f0d8c40..ac2390f 100644
--- a/libs/gst/base/gstbasesink.c
+++ b/libs/gst/base/gstbasesink.c
@@ -45,8 +45,7 @@
  *
  *   // sinktemplate should be a #GstStaticPadTemplate with direction
  *   // %GST_PAD_SINK and name "sink"
- *   gst_element_class_add_pad_template (gstelement_class,
- *       gst_static_pad_template_get (&amp;sinktemplate));
+ *   gst_element_class_add_static_pad_template (gstelement_class, &amp;sinktemplate);
  *
  *   gst_element_class_set_static_metadata (gstelement_class,
  *       "Sink name",
@@ -202,19 +201,8 @@
   GstClockTime last_left;
 
   /* running averages go here these are done on running time */
-  GstClockTime avg_pt;
-  GstClockTime avg_duration;
-  gdouble avg_rate;
-  GstClockTime avg_in_diff;
-
-  /* these are done on system time. avg_jitter and avg_render are
-   * compared to eachother to see if the rendering time takes a
-   * huge amount of the processing, If so we are flooded with
-   * buffers. */
-  GstClockTime last_left_systime;
-  GstClockTime avg_jitter;
-  GstClockTime start, stop;
-  GstClockTime avg_render;
+  GstClockTime avg_pt, avg_in_diff;
+  gdouble avg_rate;             /* average with infinite window */
 
   /* number of rendered and dropped frames */
   guint64 rendered;
@@ -2669,11 +2657,11 @@
     left = start + jitter;
   }
 
-  /* calculate duration of the buffer */
-  if (GST_CLOCK_TIME_IS_VALID (stop) && stop != start)
-    duration = stop - start;
-  else
-    duration = priv->avg_in_diff;
+  /* calculate duration of the buffer, only use buffer durations if not in
+   * trick mode or key-unit mode. Otherwise the buffer durations will be
+   * meaningless as frames are being dropped in-between without updating the
+   * durations. */
+  duration = priv->avg_in_diff;
 
   /* if we have the time when the last buffer left us, calculate
    * processing time */
@@ -2694,29 +2682,24 @@
       GST_TIME_ARGS (entered), GST_TIME_ARGS (left), GST_TIME_ARGS (pt),
       GST_TIME_ARGS (duration), jitter);
 
-  GST_CAT_DEBUG_OBJECT (GST_CAT_QOS, sink, "avg_duration: %" GST_TIME_FORMAT
-      ", avg_pt: %" GST_TIME_FORMAT ", avg_rate: %g",
-      GST_TIME_ARGS (priv->avg_duration), GST_TIME_ARGS (priv->avg_pt),
-      priv->avg_rate);
+  GST_CAT_DEBUG_OBJECT (GST_CAT_QOS, sink,
+      "avg_pt: %" GST_TIME_FORMAT ", avg_rate: %g",
+      GST_TIME_ARGS (priv->avg_pt), priv->avg_rate);
 
   /* collect running averages. for first observations, we copy the
    * values */
-  if (!GST_CLOCK_TIME_IS_VALID (priv->avg_duration))
-    priv->avg_duration = duration;
-  else
-    priv->avg_duration = UPDATE_RUNNING_AVG (priv->avg_duration, duration);
-
   if (!GST_CLOCK_TIME_IS_VALID (priv->avg_pt))
     priv->avg_pt = pt;
   else
     priv->avg_pt = UPDATE_RUNNING_AVG (priv->avg_pt, pt);
 
-  if (priv->avg_duration != 0)
+  if (duration != -1 && duration != 0) {
     rate =
         gst_guint64_to_gdouble (priv->avg_pt) /
-        gst_guint64_to_gdouble (priv->avg_duration);
-  else
+        gst_guint64_to_gdouble (duration);
+  } else {
     rate = 1.0;
+  }
 
   if (GST_CLOCK_TIME_IS_VALID (priv->last_left)) {
     if (dropped || priv->avg_rate < 0.0) {
@@ -2730,9 +2713,8 @@
   }
 
   GST_CAT_DEBUG_OBJECT (GST_CAT_QOS, sink,
-      "updated: avg_duration: %" GST_TIME_FORMAT ", avg_pt: %" GST_TIME_FORMAT
-      ", avg_rate: %g", GST_TIME_ARGS (priv->avg_duration),
-      GST_TIME_ARGS (priv->avg_pt), priv->avg_rate);
+      "updated: avg_pt: %" GST_TIME_FORMAT
+      ", avg_rate: %g", GST_TIME_ARGS (priv->avg_pt), priv->avg_rate);
 
 
   if (priv->avg_rate >= 0.0) {
@@ -2778,10 +2760,8 @@
   priv->prev_rstart = GST_CLOCK_TIME_NONE;
   priv->earliest_in_time = GST_CLOCK_TIME_NONE;
   priv->last_left = GST_CLOCK_TIME_NONE;
-  priv->avg_duration = GST_CLOCK_TIME_NONE;
   priv->avg_pt = GST_CLOCK_TIME_NONE;
   priv->avg_rate = -1.0;
-  priv->avg_render = GST_CLOCK_TIME_NONE;
   priv->avg_in_diff = GST_CLOCK_TIME_NONE;
   priv->rendered = 0;
   priv->dropped = 0;
@@ -2890,35 +2870,6 @@
   }
 }
 
-/* called before and after calling the render vmethod. It keeps track of how
- * much time was spent in the render method and is used to check if we are
- * flooded */
-static void
-gst_base_sink_do_render_stats (GstBaseSink * basesink, gboolean start)
-{
-  GstBaseSinkPrivate *priv;
-
-  priv = basesink->priv;
-
-  if (start) {
-    priv->start = gst_util_get_timestamp ();
-  } else {
-    GstClockTime elapsed;
-
-    priv->stop = gst_util_get_timestamp ();
-
-    elapsed = GST_CLOCK_DIFF (priv->start, priv->stop);
-
-    if (!GST_CLOCK_TIME_IS_VALID (priv->avg_render))
-      priv->avg_render = elapsed;
-    else
-      priv->avg_render = UPDATE_RUNNING_AVG (priv->avg_render, elapsed);
-
-    GST_CAT_DEBUG_OBJECT (GST_CAT_QOS, basesink,
-        "avg_render: %" GST_TIME_FORMAT, GST_TIME_ARGS (priv->avg_render));
-  }
-}
-
 static void
 gst_base_sink_update_start_time (GstBaseSink * basesink)
 {
@@ -3349,7 +3300,6 @@
   GstClockTime start = GST_CLOCK_TIME_NONE, end = GST_CLOCK_TIME_NONE;
   GstSegment *segment;
   GstBuffer *sync_buf;
-  gint do_qos;
   gboolean late, step_end, prepared = FALSE;
 
   if (G_UNLIKELY (basesink->flushing))
@@ -3515,15 +3465,8 @@
         8 * GST_SECOND, priv->max_bitrate);
   }
 
-  /* read once, to get same value before and after */
-  do_qos = g_atomic_int_get (&priv->qos_enabled);
-
   GST_DEBUG_OBJECT (basesink, "rendering object %p", obj);
 
-  /* record rendering time for QoS and stats */
-  if (do_qos)
-    gst_base_sink_do_render_stats (basesink, TRUE);
-
   if (!is_list) {
     /* For buffer lists do not set last buffer for now. */
     gst_base_sink_set_last_buffer (basesink, GST_BUFFER_CAST (obj));
@@ -3542,9 +3485,6 @@
     gst_base_sink_set_last_buffer_list (basesink, buffer_list);
   }
 
-  if (do_qos)
-    gst_base_sink_do_render_stats (basesink, FALSE);
-
   if (ret == GST_FLOW_STEP)
     goto again;
 
@@ -4091,9 +4031,7 @@
        * flushing and posting an error message in that case is the
        * wrong thing to do, e.g. when basesrc is doing a flushing
        * seek. */
-      GST_ELEMENT_ERROR (basesink, STREAM, FAILED,
-          (_("Internal data stream error.")),
-          ("stream stopped, reason %s", gst_flow_get_name (result)));
+      GST_ELEMENT_FLOW_ERROR (basesink, result);
       gst_base_sink_event (pad, parent, gst_event_new_eos ());
     }
     return;
diff --git a/libs/gst/base/gstbasesrc.c b/libs/gst/base/gstbasesrc.c
index 934dcca..37719f4 100644
--- a/libs/gst/base/gstbasesrc.c
+++ b/libs/gst/base/gstbasesrc.c
@@ -119,8 +119,7 @@
  *   GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
  *   // srctemplate should be a #GstStaticPadTemplate with direction
  *   // %GST_PAD_SRC and name "src"
- *   gst_element_class_add_pad_template (gstelement_class,
- *       gst_static_pad_template_get (&amp;srctemplate));
+ *   gst_element_class_add_static_pad_template (gstelement_class, &amp;srctemplate);
  *
  *   gst_element_class_set_static_metadata (gstelement_class,
  *      "Source name",
@@ -2364,21 +2363,26 @@
         if (!bclass->get_size (src, &size))
           size = -1;
 
-      /* make sure we don't exceed the configured segment stop
-       * if it was set */
-      if (stop != -1)
-        maxsize = MIN (size, stop);
+      /* when not doing automatic EOS, just use the stop position. We don't use
+       * the size to check for EOS */
+      if (!g_atomic_int_get (&src->priv->automatic_eos))
+        maxsize = stop;
+      /* Otherwise, the max amount of bytes to read is the total
+       * size or up to the segment.stop if present. */
+      else if (stop != -1)
+        maxsize = size != -1 ? MIN (size, stop) : stop;
       else
         maxsize = size;
 
-      /* if we are at or past the end, EOS */
-      if (G_UNLIKELY (offset >= maxsize))
-        goto unexpected_length;
+      if (maxsize != -1) {
+        /* if we are at or past the end, EOS */
+        if (G_UNLIKELY (offset >= maxsize))
+          goto unexpected_length;
 
-      /* else we can clip to the end */
-      if (G_UNLIKELY (offset + *length >= maxsize))
-        *length = maxsize - offset;
-
+        /* else we can clip to the end */
+        if (G_UNLIKELY (offset + *length >= maxsize))
+          *length = maxsize - offset;
+      }
     }
   }
 
@@ -2943,9 +2947,7 @@
        * due to flushing and posting an error message because of
        * that is the wrong thing to do, e.g. when we're doing
        * a flushing seek. */
-      GST_ELEMENT_ERROR (src, STREAM, FAILED,
-          (_("Internal data flow error.")),
-          ("streaming task paused, reason %s (%d)", reason, ret));
+      GST_ELEMENT_FLOW_ERROR (src, ret);
       gst_pad_push_event (pad, event);
     }
     goto done;
diff --git a/libs/gst/base/gstcollectpads.c b/libs/gst/base/gstcollectpads.c
index dc18222..4658ef3 100644
--- a/libs/gst/base/gstcollectpads.c
+++ b/libs/gst/base/gstcollectpads.c
@@ -515,6 +515,12 @@
 
     time = GST_BUFFER_PTS (buf);
 
+    /* If PTS is not set, the best guess we can make is to assume that both
+     * PTS and DTS are the same. If it was possible, parsers should have fixed
+     * it already as explained in https://bugzilla.gnome.org/show_bug.cgi?id=659489 */
+    if (!GST_CLOCK_TIME_IS_VALID (time))
+      time = GST_BUFFER_DTS (buf);
+
     if (GST_CLOCK_TIME_IS_VALID (time)) {
       time =
           gst_segment_to_running_time (&cdata->segment, GST_FORMAT_TIME, time);
@@ -952,8 +958,8 @@
  *
  * MT safe.
  *
- * Returns: The buffer in @data or %NULL if no buffer is queued.
- *  should unref the buffer after usage.
+ * Returns: (transfer full) (nullable): The buffer in @data or %NULL if no
+ * buffer is queued. should unref the buffer after usage.
  */
 GstBuffer *
 gst_collect_pads_peek (GstCollectPads * pads, GstCollectData * data)
@@ -984,8 +990,8 @@
  *
  * MT safe.
  *
- * Returns: (transfer full): The buffer in @data or %NULL if no buffer was
- *   queued. You should unref the buffer after usage.
+ * Returns: (transfer full) (nullable): The buffer in @data or %NULL if no
+ * buffer was queued. You should unref the buffer after usage.
  */
 GstBuffer *
 gst_collect_pads_pop (GstCollectPads * pads, GstCollectData * data)
@@ -1151,9 +1157,9 @@
  *
  * MT safe.
  *
- * Returns: (transfer full): A sub buffer. The size of the buffer can be less that requested.
- * A return of %NULL signals that the pad is end-of-stream.
- * Unref the buffer after use.
+ * Returns: (transfer full) (nullable): A sub buffer. The size of the buffer can
+ * be less that requested. A return of %NULL signals that the pad is
+ * end-of-stream. Unref the buffer after use.
  */
 GstBuffer *
 gst_collect_pads_read_buffer (GstCollectPads * pads, GstCollectData * data,
@@ -1191,9 +1197,9 @@
  *
  * MT safe.
  *
- * Returns: A sub buffer. The size of the buffer can be less that requested.
- * A return of %NULL signals that the pad is end-of-stream.
- * Unref the buffer after use.
+ * Returns: (transfer full) (nullable): A sub buffer. The size of the buffer can
+ * be less that requested. A return of %NULL signals that the pad is
+ * end-of-stream. Unref the buffer after use.
  */
 GstBuffer *
 gst_collect_pads_take_buffer (GstCollectPads * pads, GstCollectData * data,
diff --git a/libs/gst/base/gstflowcombiner.c b/libs/gst/base/gstflowcombiner.c
index 9dd5123..377198f 100644
--- a/libs/gst/base/gstflowcombiner.c
+++ b/libs/gst/base/gstflowcombiner.c
@@ -74,9 +74,14 @@
 static GstFlowCombiner *gst_flow_combiner_ref (GstFlowCombiner * combiner);
 static void gst_flow_combiner_unref (GstFlowCombiner * combiner);
 
-G_DEFINE_BOXED_TYPE (GstFlowCombiner, gst_flow_combiner,
+GST_DEBUG_CATEGORY_STATIC (flowcombiner_dbg);
+#define GST_CAT_DEFAULT flowcombiner_dbg
+
+G_DEFINE_BOXED_TYPE_WITH_CODE (GstFlowCombiner, gst_flow_combiner,
     (GBoxedCopyFunc) gst_flow_combiner_ref,
-    (GBoxedFreeFunc) gst_flow_combiner_unref);
+    (GBoxedFreeFunc) gst_flow_combiner_unref,
+    GST_DEBUG_CATEGORY_INIT (flowcombiner_dbg, "flowcombiner", 0,
+        "Flow Combiner"));
 
 /**
  * gst_flow_combiner_new:
@@ -95,6 +100,9 @@
   combiner->last_ret = GST_FLOW_OK;
   combiner->ref_count = 1;
 
+  /* Make sure debug category is initialised */
+  gst_flow_combiner_get_type ();
+
   return combiner;
 }
 
@@ -162,7 +170,7 @@
  * gst_flow_combiner_reset:
  * @combiner: the #GstFlowCombiner to clear
  *
- * Removes all pads from a #GstFlowCombiner and resets it to its initial state.
+ * Reset flow combiner and all pads to their initial state without removing pads.
  *
  * Since: 1.6
  */
diff --git a/libs/gst/base/gsttypefindhelper.c b/libs/gst/base/gsttypefindhelper.c
index b2fb21c..9aeceb4 100644
--- a/libs/gst/base/gsttypefindhelper.c
+++ b/libs/gst/base/gsttypefindhelper.c
@@ -482,7 +482,7 @@
  * gst_type_find_helper_for_data:
  * @obj: (allow-none): object doing the typefinding, or %NULL (used for logging)
  * @data: (in) (transfer none): a pointer with data to typefind
- * @size: (in) (transfer none): the size of @data
+ * @size: (in): the size of @data
  * @prob: (out) (allow-none): location to store the probability of the found
  *     caps, or %NULL
  *
diff --git a/libs/gst/check/Makefile.in b/libs/gst/check/Makefile.in
index b28ae03..333bd9a 100644
--- a/libs/gst/check/Makefile.in
+++ b/libs/gst/check/Makefile.in
@@ -369,6 +369,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -376,17 +377,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -511,6 +509,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/libs/gst/check/gstharness.c b/libs/gst/check/gstharness.c
index bc45e08..1226b7e 100644
--- a/libs/gst/check/gstharness.c
+++ b/libs/gst/check/gstharness.c
@@ -2016,10 +2016,6 @@
  *
  * Sets the min latency reported by #GstHarness when receiving a latency-query
  *
- * MT safe.
- *
- * Returns: a #GstClockTime with min latency
- *
  * Since: 1.6
  */
 void
diff --git a/libs/gst/check/gsttestclock.c b/libs/gst/check/gsttestclock.c
index c0961e3..513667f 100644
--- a/libs/gst/check/gsttestclock.c
+++ b/libs/gst/check/gsttestclock.c
@@ -183,7 +183,8 @@
 enum
 {
   PROP_0,
-  PROP_START_TIME
+  PROP_START_TIME,
+  PROP_CLOCK_TYPE
 };
 
 typedef struct _GstClockEntryContext GstClockEntryContext;
@@ -196,6 +197,7 @@
 
 struct _GstTestClockPrivate
 {
+  GstClockType clock_type;
   GstClockTime start_time;
   GstClockTime internal_time;
   GList *entry_contexts;
@@ -203,6 +205,8 @@
   GCond entry_processed_cond;
 };
 
+#define DEFAULT_CLOCK_TYPE GST_CLOCK_TYPE_MONOTONIC
+
 #define GST_TEST_CLOCK_GET_PRIVATE(obj) ((GST_TEST_CLOCK_CAST (obj))->priv)
 
 GST_DEBUG_CATEGORY_STATIC (test_clock_debug);
@@ -287,6 +291,13 @@
       "Start Time of the Clock", 0, G_MAXUINT64, 0,
       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY);
   g_object_class_install_property (gobject_class, PROP_START_TIME, pspec);
+
+  g_object_class_install_property (gobject_class, PROP_CLOCK_TYPE,
+      g_param_spec_enum ("clock-type", "Clock type",
+          "The kind of clock implementation to be reported by this clock",
+          GST_TYPE_CLOCK_TYPE, DEFAULT_CLOCK_TYPE,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
 }
 
 static void
@@ -301,6 +312,7 @@
 
   g_cond_init (&priv->entry_added_cond);
   g_cond_init (&priv->entry_processed_cond);
+  priv->clock_type = DEFAULT_CLOCK_TYPE;
 
   GST_OBJECT_FLAG_SET (test_clock,
       GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC |
@@ -361,6 +373,9 @@
     case PROP_START_TIME:
       g_value_set_uint64 (value, priv->start_time);
       break;
+    case PROP_CLOCK_TYPE:
+      g_value_set_enum (value, priv->clock_type);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -381,6 +396,11 @@
           "test clock start time initialized at %" GST_TIME_FORMAT,
           GST_TIME_ARGS (priv->start_time));
       break;
+    case PROP_CLOCK_TYPE:
+      priv->clock_type = (GstClockType) g_value_get_enum (value);
+      GST_CAT_DEBUG (GST_CAT_TEST_CLOCK, "clock-type set to %d",
+          priv->clock_type);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
diff --git a/libs/gst/check/libcheck/Makefile.in b/libs/gst/check/libcheck/Makefile.in
index bc2a984..b61bc04 100644
--- a/libs/gst/check/libcheck/Makefile.in
+++ b/libs/gst/check/libcheck/Makefile.in
@@ -325,6 +325,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -332,17 +333,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -467,6 +465,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/libs/gst/check/libcheck/strsignal.c b/libs/gst/check/libcheck/strsignal.c
index b79409b..57e71cd 100644
--- a/libs/gst/check/libcheck/strsignal.c
+++ b/libs/gst/check/libcheck/strsignal.c
@@ -1,6 +1,6 @@
 #include "libcompat.h"
 
-const char *
+char *
 strsignal (int sig)
 {
   static char signame[40];
diff --git a/libs/gst/controller/Makefile.in b/libs/gst/controller/Makefile.in
index ad960de..89fe786 100644
--- a/libs/gst/controller/Makefile.in
+++ b/libs/gst/controller/Makefile.in
@@ -309,6 +309,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -316,17 +317,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -451,6 +449,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/libs/gst/helpers/Makefile.in b/libs/gst/helpers/Makefile.in
index ed131be..0ae83ed 100644
--- a/libs/gst/helpers/Makefile.in
+++ b/libs/gst/helpers/Makefile.in
@@ -346,6 +346,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -353,17 +354,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -488,6 +486,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/libs/gst/net/Makefile.in b/libs/gst/net/Makefile.in
index 997a56d..34fa492 100644
--- a/libs/gst/net/Makefile.in
+++ b/libs/gst/net/Makefile.in
@@ -330,6 +330,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -337,17 +338,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -472,6 +470,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/libs/gst/net/gstnetclientclock.c b/libs/gst/net/gstnetclientclock.c
index 6c8236b..0b3e4df 100644
--- a/libs/gst/net/gstnetclientclock.c
+++ b/libs/gst/net/gstnetclientclock.c
@@ -360,6 +360,11 @@
   GST_OBJECT_LOCK (self);
   rtt_limit = self->roundtrip_limit;
 
+  GST_LOG_OBJECT (self,
+      "local1 %" G_GUINT64_FORMAT " remote1 %" G_GUINT64_FORMAT " remote2 %"
+      G_GUINT64_FORMAT " local2 %" G_GUINT64_FORMAT, local_1, remote_1,
+      remote_2, local_2);
+
   /* If the server told us a poll interval and it's bigger than the
    * one configured via the property, use the server's */
   if (self->last_remote_poll_interval != GST_CLOCK_TIME_NONE &&
@@ -477,10 +482,8 @@
   remote_avg = (remote_2 + remote_1) / 2;
 
   GST_LOG_OBJECT (self,
-      "local1 %" G_GUINT64_FORMAT " remote1 %" G_GUINT64_FORMAT " remote2 %"
-      G_GUINT64_FORMAT " remoteavg %" G_GUINT64_FORMAT " localavg %"
-      G_GUINT64_FORMAT " local2 %" G_GUINT64_FORMAT, local_1, remote_1,
-      remote_2, remote_avg, local_avg, local_2);
+      "remoteavg %" G_GUINT64_FORMAT " localavg %" G_GUINT64_FORMAT,
+      remote_avg, local_avg);
 
   clock = GST_CLOCK_CAST (self);
 
@@ -1329,6 +1332,11 @@
         self->priv->address, "port", self->priv->port, "is-ntp",
         self->priv->is_ntp, NULL);
     clocks = g_list_prepend (clocks, cache);
+
+    /* Not actually leaked but is cached for a while before being disposed,
+     * see gst_net_client_clock_finalize, so pretend it is to not confuse
+     * tests. */
+    GST_OBJECT_FLAG_SET (cache->clock, GST_OBJECT_FLAG_MAY_BE_LEAKED);
   }
 
   cache->clocks = g_list_prepend (cache->clocks, self);
diff --git a/ltmain.sh b/ltmain.sh
index 2ad8be8..a736cf9 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -31,7 +31,7 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION="2.4.6 Debian-2.4.6-1"
+VERSION="2.4.6 Debian-2.4.6-2"
 package_revision=2.4.6
 
 
@@ -1977,7 +1977,7 @@
 # End:
 
 # Set a version string.
-scriptversion='(GNU libtool) 2.4.6 Debian-2.4.6-1'
+scriptversion='(GNU libtool) 2.4.6'
 
 
 # func_echo ARG...
@@ -2068,7 +2068,7 @@
        compiler:       $LTCC
        compiler flags: $LTCFLAGS
        linker:         $LD (gnu? $with_gnu_ld)
-       version:        $progname $scriptversion
+       version:        $progname $scriptversion Debian-2.4.6-2
        automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
        autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
 
diff --git a/m4/Makefile.in b/m4/Makefile.in
index aa52f37..5fadcf8 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -228,6 +228,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -235,17 +236,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -370,6 +368,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in
index 0bdca69..f25247f 100644
--- a/pkgconfig/Makefile.in
+++ b/pkgconfig/Makefile.in
@@ -272,6 +272,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -279,17 +280,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -414,6 +412,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/pkgconfig/gstreamer.pc.in b/pkgconfig/gstreamer.pc.in
index 381c96d..78b8aa9 100644
--- a/pkgconfig/gstreamer.pc.in
+++ b/pkgconfig/gstreamer.pc.in
@@ -17,4 +17,4 @@
 Requires: glib-2.0, gobject-2.0
 Requires.private: gmodule-no-export-2.0
 Libs: -L${libdir} -lgstreamer-@GST_API_VERSION@
-Cflags: -I${includedir} -I${libdir}/gstreamer-@GST_API_VERSION@/include
+Cflags: -I${includedir}
diff --git a/plugins/Makefile.in b/plugins/Makefile.in
index bdde8db..98ae3d8 100644
--- a/plugins/Makefile.in
+++ b/plugins/Makefile.in
@@ -287,6 +287,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -294,17 +295,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -429,6 +427,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/plugins/elements/Makefile.in b/plugins/elements/Makefile.in
index 173a32d..85862c8 100644
--- a/plugins/elements/Makefile.in
+++ b/plugins/elements/Makefile.in
@@ -335,6 +335,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -342,17 +343,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -477,6 +475,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/plugins/elements/gstcapsfilter.c b/plugins/elements/gstcapsfilter.c
index 26ae121..30b6b99 100644
--- a/plugins/elements/gstcapsfilter.c
+++ b/plugins/elements/gstcapsfilter.c
@@ -167,6 +167,7 @@
   gst_base_transform_set_prefer_passthrough (trans, FALSE);
   filter->filter_caps = gst_caps_new_any ();
   filter->filter_caps_used = FALSE;
+  filter->got_sink_caps = FALSE;
   filter->caps_change_mode = DEFAULT_CAPS_CHANGE_MODE;
 }
 
@@ -404,7 +405,7 @@
   *buf = input;
 
   if (GST_PAD_MODE (trans->srcpad) == GST_PAD_MODE_PUSH
-      && !gst_pad_has_current_caps (trans->sinkpad)) {
+      && !filter->got_sink_caps) {
 
     /* No caps. See if the output pad only supports fixed caps */
     GstCaps *out_caps;
@@ -505,7 +506,7 @@
     }
     g_list_free (filter->pending_events);
     filter->pending_events = NULL;
-  } else if (!gst_pad_has_current_caps (trans->sinkpad)) {
+  } else if (!filter->got_sink_caps) {
     GST_LOG_OBJECT (trans, "Got %s event before caps, queueing",
         GST_EVENT_TYPE_NAME (event));
 
@@ -521,32 +522,35 @@
       GST_BASE_TRANSFORM_CLASS (parent_class)->sink_event (trans,
       gst_event_ref (event));
 
-  if (GST_EVENT_TYPE (event) == GST_EVENT_CAPS
-      && filter->caps_change_mode == GST_CAPS_FILTER_CAPS_CHANGE_MODE_DELAYED) {
-    GList *l;
-    GstCaps *caps;
+  if (GST_EVENT_TYPE (event) == GST_EVENT_CAPS) {
+    filter->got_sink_caps = TRUE;
+    if (filter->caps_change_mode == GST_CAPS_FILTER_CAPS_CHANGE_MODE_DELAYED) {
+      GList *l;
+      GstCaps *caps;
 
-    gst_event_parse_caps (event, &caps);
+      gst_event_parse_caps (event, &caps);
 
-    /* Remove all previous caps up to one that works.
-     * Note that this might keep some leftover caps if there
-     * are multiple compatible caps */
-    GST_OBJECT_LOCK (filter);
-    for (l = g_list_last (filter->previous_caps); l; l = l->prev) {
-      if (gst_caps_can_intersect (caps, l->data)) {
-        while (l->next) {
-          gst_caps_unref (l->next->data);
-          l = g_list_delete_link (l, l->next);
+      /* Remove all previous caps up to one that works.
+       * Note that this might keep some leftover caps if there
+       * are multiple compatible caps */
+      GST_OBJECT_LOCK (filter);
+      for (l = g_list_last (filter->previous_caps); l; l = l->prev) {
+        if (gst_caps_can_intersect (caps, l->data)) {
+          while (l->next) {
+            gst_caps_unref (l->next->data);
+            l = g_list_delete_link (l, l->next);
+          }
+          break;
         }
-        break;
       }
+      if (!l && gst_caps_can_intersect (caps, filter->filter_caps)) {
+        g_list_free_full (filter->previous_caps,
+            (GDestroyNotify) gst_caps_unref);
+        filter->previous_caps = NULL;
+        filter->filter_caps_used = TRUE;
+      }
+      GST_OBJECT_UNLOCK (filter);
     }
-    if (!l && gst_caps_can_intersect (caps, filter->filter_caps)) {
-      g_list_free_full (filter->previous_caps, (GDestroyNotify) gst_caps_unref);
-      filter->previous_caps = NULL;
-      filter->filter_caps_used = TRUE;
-    }
-    GST_OBJECT_UNLOCK (filter);
   }
   gst_event_unref (event);
 
@@ -566,5 +570,7 @@
   filter->previous_caps = NULL;
   GST_OBJECT_UNLOCK (filter);
 
+  filter->got_sink_caps = FALSE;
+
   return TRUE;
 }
diff --git a/plugins/elements/gstcapsfilter.h b/plugins/elements/gstcapsfilter.h
index 652ec34..8a57bc4 100644
--- a/plugins/elements/gstcapsfilter.h
+++ b/plugins/elements/gstcapsfilter.h
@@ -67,6 +67,7 @@
   GstCaps *filter_caps;
   gboolean filter_caps_used;
   GstCapsFilterCapsChangeMode caps_change_mode;
+  gboolean got_sink_caps;
 
   GList *pending_events;
   GList *previous_caps;
diff --git a/plugins/elements/gstdownloadbuffer.c b/plugins/elements/gstdownloadbuffer.c
index 37249aa..79ea149 100644
--- a/plugins/elements/gstdownloadbuffer.c
+++ b/plugins/elements/gstdownloadbuffer.c
@@ -1345,10 +1345,7 @@
        * file. */
       gst_pad_push_event (dlbuf->srcpad, gst_event_new_eos ());
     } else if ((ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_EOS)) {
-      GST_ELEMENT_ERROR (dlbuf, STREAM, FAILED,
-          (_("Internal data flow error.")),
-          ("streaming task paused, reason %s (%d)",
-              gst_flow_get_name (ret), ret));
+      GST_ELEMENT_FLOW_ERROR (dlbuf, ret);
       gst_pad_push_event (dlbuf->srcpad, gst_event_new_eos ());
     }
     return;
diff --git a/plugins/elements/gstfunnel.c b/plugins/elements/gstfunnel.c
index 9895b7b..bb7d768 100644
--- a/plugins/elements/gstfunnel.c
+++ b/plugins/elements/gstfunnel.c
@@ -401,11 +401,13 @@
     /* If no data is coming and we receive GAP event, need to forward sticky events. */
     unlock = TRUE;
     GST_PAD_STREAM_LOCK (funnel->srcpad);
-    GST_OBJECT_LOCK (funnel);
-    gst_object_replace ((GstObject **) & funnel->last_sinkpad,
-        GST_OBJECT (pad));
-    GST_OBJECT_UNLOCK (funnel);
-    gst_pad_sticky_events_foreach (pad, forward_events, funnel->srcpad);
+
+    if ((funnel->last_sinkpad == NULL) || (funnel->forward_sticky_events
+            && (funnel->last_sinkpad != pad))) {
+      gst_object_replace ((GstObject **) & funnel->last_sinkpad,
+          GST_OBJECT (pad));
+      gst_pad_sticky_events_foreach (pad, forward_events, funnel->srcpad);
+    }
   }
 
   if (forward)
diff --git a/plugins/elements/gstinputselector.c b/plugins/elements/gstinputselector.c
index 4af2190..5d1d65e 100644
--- a/plugins/elements/gstinputselector.c
+++ b/plugins/elements/gstinputselector.c
@@ -155,6 +155,9 @@
   GstPad parent;
 
   gboolean pushed;              /* when buffer was pushed downstream since activation */
+  guint group_id;               /* Group ID from the last stream-start */
+  gboolean group_done;          /* when Stream Group Done has been
+                                   received */
   gboolean eos;                 /* when EOS has been received */
   gboolean eos_sent;            /* when EOS was sent downstream */
   gboolean discont;             /* after switching we create a discont */
@@ -340,6 +343,7 @@
 {
   GST_OBJECT_LOCK (pad);
   pad->pushed = FALSE;
+  pad->group_done = FALSE;
   pad->eos = FALSE;
   pad->eos_sent = FALSE;
   pad->events_pending = FALSE;
@@ -550,16 +554,17 @@
 
   switch (GST_EVENT_TYPE (event)) {
     case GST_EVENT_STREAM_START:{
-      guint group_id;
-
-      if (!gst_event_parse_group_id (event, &group_id))
+      if (!gst_event_parse_group_id (event, &selpad->group_id)) {
         sel->have_group_id = FALSE;
+        selpad->group_id = 0;
+      }
       break;
     }
     case GST_EVENT_FLUSH_START:
       /* Unblock the pad if it's waiting */
       selpad->flushing = TRUE;
       sel->eos = FALSE;
+      selpad->group_done = FALSE;
       GST_INPUT_SELECTOR_BROADCAST (sel);
       break;
     case GST_EVENT_FLUSH_STOP:
@@ -626,6 +631,15 @@
 
     }
       break;
+    case GST_EVENT_STREAM_GROUP_DONE:{
+      GST_DEBUG_OBJECT (sel, "Stream group-done in inputselector pad %s",
+          GST_OBJECT_NAME (selpad));
+      gst_event_parse_stream_group_done (event, &selpad->group_id);
+      selpad->group_done = TRUE;
+      if (sel->sync_streams && active_sinkpad == pad)
+        GST_INPUT_SELECTOR_BROADCAST (sel);
+      break;
+    }
     default:
       break;
   }
@@ -798,6 +812,15 @@
             GST_FORMAT_TIME, active_seg->position);
     }
 
+    /* Don't wait if the group is finished on the active pad,
+     * as the running time won't progress now */
+    if (selpad != active_selpad && active_selpad->group_done &&
+        selpad->group_id == active_selpad->group_id) {
+      GST_DEBUG_OBJECT (selpad, "Active pad received group-done. Unblocking");
+      GST_INPUT_SELECTOR_UNLOCK (sel);
+      break;
+    }
+
     if (selpad != active_selpad && !sel->eos && !sel->flushing
         && !selpad->flushing && (cur_running_time == GST_CLOCK_TIME_NONE
             || running_time >= cur_running_time)) {
diff --git a/plugins/elements/gstmultiqueue.c b/plugins/elements/gstmultiqueue.c
index 78bca73..738eddf 100644
--- a/plugins/elements/gstmultiqueue.c
+++ b/plugins/elements/gstmultiqueue.c
@@ -100,6 +100,17 @@
  *   queues is filled.
  *   Both signals are emitted from the context of the streaming thread.
  * </para>
+ * <para>
+ *   When using #GstMultiQueue:sync-by-running-time the unlinked streams will
+ *   be throttled by the highest running-time of linked streams. This allows
+ *   further relinking of those unlinked streams without them being in the
+ *   future (i.e. to achieve gapless playback).
+ *   When dealing with streams which have got different consumption requirements
+ *   downstream (ex: video decoders which will consume more buffer (in time) than
+ *   audio decoders), it is recommended to group streams of the same type
+ *   by using the pad "group-id" property. This will further throttle streams
+ *   in time within that group.
+ * </para>
  * </refsect2>
  */
 
@@ -126,6 +137,9 @@
 {
   /* unique identifier of the queue */
   guint id;
+  /* group of streams to which this queue belongs to */
+  guint groupid;
+  GstClockTimeDiff group_high_time;
 
   GstMultiQueue *mqueue;
 
@@ -203,7 +217,7 @@
 
 static void wake_up_next_non_linked (GstMultiQueue * mq);
 static void compute_high_id (GstMultiQueue * mq);
-static void compute_high_time (GstMultiQueue * mq);
+static void compute_high_time (GstMultiQueue * mq, guint groupid);
 static void single_queue_overrun_cb (GstDataQueue * dq, GstSingleQueue * sq);
 static void single_queue_underrun_cb (GstDataQueue * dq, GstSingleQueue * sq);
 
@@ -253,8 +267,8 @@
 #define DEFAULT_EXTRA_SIZE_TIME 3 * GST_SECOND
 
 #define DEFAULT_USE_BUFFERING FALSE
-#define DEFAULT_LOW_PERCENT   10
-#define DEFAULT_HIGH_PERCENT  99
+#define DEFAULT_LOW_WATERMARK  0.01
+#define DEFAULT_HIGH_WATERMARK 0.99
 #define DEFAULT_SYNC_BY_RUNNING_TIME FALSE
 #define DEFAULT_USE_INTERLEAVE FALSE
 #define DEFAULT_UNLINKED_CACHE_TIME 250 * GST_MSECOND
@@ -271,12 +285,136 @@
   PROP_USE_BUFFERING,
   PROP_LOW_PERCENT,
   PROP_HIGH_PERCENT,
+  PROP_LOW_WATERMARK,
+  PROP_HIGH_WATERMARK,
   PROP_SYNC_BY_RUNNING_TIME,
   PROP_USE_INTERLEAVE,
   PROP_UNLINKED_CACHE_TIME,
   PROP_LAST
 };
 
+/* Explanation for buffer levels and percentages:
+ *
+ * The buffering_level functions here return a value in a normalized range
+ * that specifies the current fill level of a queue. The range goes from 0 to
+ * MAX_BUFFERING_LEVEL. The low/high watermarks also use this same range.
+ *
+ * This is not to be confused with the buffering_percent value, which is
+ * a *relative* quantity - relative to the low/high watermarks.
+ * buffering_percent = 0% means overall buffering_level is at the low watermark.
+ * buffering_percent = 100% means overall buffering_level is at the high watermark.
+ * buffering_percent is used for determining if the fill level has reached
+ * the high watermark, and for producing BUFFERING messages. This value
+ * always uses a 0..100 range (since it is a percentage).
+ *
+ * To avoid future confusions, whenever "buffering level" is mentioned, it
+ * refers to the absolute level which is in the 0..MAX_BUFFERING_LEVEL
+ * range. Whenever "buffering_percent" is mentioned, it refers to the
+ * percentage value that is relative to the low/high watermark. */
+
+/* Using a buffering level range of 0..1000000 to allow for a
+ * resolution in ppm (1 ppm = 0.0001%) */
+#define MAX_BUFFERING_LEVEL 1000000
+
+/* How much 1% makes up in the buffer level range */
+#define BUF_LEVEL_PERCENT_FACTOR ((MAX_BUFFERING_LEVEL) / 100)
+
+/* GstMultiQueuePad */
+
+#define DEFAULT_PAD_GROUP_ID 0
+
+enum
+{
+  PROP_PAD_0,
+  PROP_PAD_GROUP_ID,
+};
+
+#define GST_TYPE_MULTIQUEUE_PAD            (gst_multiqueue_pad_get_type())
+#define GST_MULTIQUEUE_PAD(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_MULTIQUEUE_PAD,GstMultiQueuePad))
+#define GST_IS_MULTIQUEUE_PAD(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MULTIQUEUE_PAD))
+#define GST_MULTIQUEUE_PAD_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_MULTIQUEUE_PAD,GstMultiQueuePadClass))
+#define GST_IS_MULTIQUEUE_PAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_MULTIQUEUE_PAD))
+#define GST_MULTIQUEUE_PAD_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_MULTIQUEUE_PAD,GstMultiQueuePadClass))
+
+struct _GstMultiQueuePad
+{
+  GstPad parent;
+
+  GstSingleQueue *sq;
+};
+
+struct _GstMultiQueuePadClass
+{
+  GstPadClass parent_class;
+};
+
+GType gst_multiqueue_pad_get_type (void);
+
+G_DEFINE_TYPE (GstMultiQueuePad, gst_multiqueue_pad, GST_TYPE_PAD);
+static void
+gst_multiqueue_pad_get_property (GObject * object, guint prop_id,
+    GValue * value, GParamSpec * pspec)
+{
+  GstMultiQueuePad *pad = GST_MULTIQUEUE_PAD (object);
+
+  switch (prop_id) {
+    case PROP_PAD_GROUP_ID:
+      if (pad->sq)
+        g_value_set_uint (value, pad->sq->groupid);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_multiqueue_pad_set_property (GObject * object, guint prop_id,
+    const GValue * value, GParamSpec * pspec)
+{
+  GstMultiQueuePad *pad = GST_MULTIQUEUE_PAD (object);
+
+  switch (prop_id) {
+    case PROP_PAD_GROUP_ID:
+      GST_OBJECT_LOCK (pad);
+      if (pad->sq)
+        pad->sq->groupid = g_value_get_uint (value);
+      GST_OBJECT_UNLOCK (pad);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+  }
+}
+
+static void
+gst_multiqueue_pad_class_init (GstMultiQueuePadClass * klass)
+{
+  GObjectClass *gobject_class = (GObjectClass *) klass;
+
+  gobject_class->set_property = gst_multiqueue_pad_set_property;
+  gobject_class->get_property = gst_multiqueue_pad_get_property;
+
+  /**
+   * GstMultiQueuePad:group-id:
+   *
+   * Group to which this pad belongs.
+   *
+   * Since: 1.10
+   */
+  g_object_class_install_property (gobject_class, PROP_PAD_GROUP_ID,
+      g_param_spec_uint ("group-id", "Group ID",
+          "Group to which this pad belongs", 0, G_MAXUINT32,
+          DEFAULT_PAD_GROUP_ID, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+}
+
+static void
+gst_multiqueue_pad_init (GstMultiQueuePad * pad)
+{
+
+}
+
+
 #define GST_MULTI_QUEUE_MUTEX_LOCK(q) G_STMT_START {                          \
   g_mutex_lock (&q->qlock);                                              \
 } G_STMT_END
@@ -286,9 +424,9 @@
 } G_STMT_END
 
 #define SET_PERCENT(mq, perc) G_STMT_START {                             \
-  if (perc != mq->percent) {                                             \
-    mq->percent = perc;                                                  \
-    mq->percent_changed = TRUE;                                          \
+  if (perc != mq->buffering_percent) {                                   \
+    mq->buffering_percent = perc;                                        \
+    mq->buffering_percent_changed = TRUE;                                \
     GST_DEBUG_OBJECT (mq, "buffering %d percent", perc);                 \
   }                                                                      \
 } G_STMT_END
@@ -430,8 +568,10 @@
    */
   g_object_class_install_property (gobject_class, PROP_LOW_PERCENT,
       g_param_spec_int ("low-percent", "Low percent",
-          "Low threshold for buffering to start", 0, 100,
-          DEFAULT_LOW_PERCENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          "Low threshold for buffering to start. Only used if use-buffering is True "
+          "(Deprecated: use low-watermark instead)",
+          0, 100, DEFAULT_LOW_WATERMARK * 100,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   /**
    * GstMultiQueue:high-percent
    * 
@@ -439,8 +579,34 @@
    */
   g_object_class_install_property (gobject_class, PROP_HIGH_PERCENT,
       g_param_spec_int ("high-percent", "High percent",
-          "High threshold for buffering to finish", 0, 100,
-          DEFAULT_HIGH_PERCENT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+          "High threshold for buffering to finish. Only used if use-buffering is True "
+          "(Deprecated: use high-watermark instead)",
+          0, 100, DEFAULT_HIGH_WATERMARK * 100,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  /**
+   * GstMultiQueue:low-watermark
+   *
+   * Low threshold watermark for buffering to start.
+   *
+   * Since: 1.10
+   */
+  g_object_class_install_property (gobject_class, PROP_LOW_WATERMARK,
+      g_param_spec_double ("low-watermark", "Low watermark",
+          "Low threshold for buffering to start. Only used if use-buffering is True",
+          0.0, 1.0, DEFAULT_LOW_WATERMARK,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  /**
+   * GstMultiQueue:high-watermark
+   *
+   * High threshold watermark for buffering to finish.
+   *
+   * Since: 1.10
+   */
+  g_object_class_install_property (gobject_class, PROP_HIGH_WATERMARK,
+      g_param_spec_double ("high-watermark", "High watermark",
+          "High threshold for buffering to finish. Only used if use-buffering is True",
+          0.0, 1.0, DEFAULT_HIGH_WATERMARK,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   /**
    * GstMultiQueue:sync-by-running-time
@@ -501,8 +667,8 @@
   mqueue->extra_size.time = DEFAULT_EXTRA_SIZE_TIME;
 
   mqueue->use_buffering = DEFAULT_USE_BUFFERING;
-  mqueue->low_percent = DEFAULT_LOW_PERCENT;
-  mqueue->high_percent = DEFAULT_HIGH_PERCENT;
+  mqueue->low_watermark = DEFAULT_LOW_WATERMARK * MAX_BUFFERING_LEVEL;
+  mqueue->high_watermark = DEFAULT_HIGH_WATERMARK * MAX_BUFFERING_LEVEL;
 
   mqueue->sync_by_running_time = DEFAULT_SYNC_BY_RUNNING_TIME;
   mqueue->use_interleave = DEFAULT_USE_INTERLEAVE;
@@ -617,15 +783,23 @@
       recheck_buffering_status (mq);
       break;
     case PROP_LOW_PERCENT:
-      mq->low_percent = g_value_get_int (value);
-      /* Recheck buffering status - the new low-percent value might
-       * be above the current fill level. If the old low-percent one
+      mq->low_watermark = g_value_get_int (value) * BUF_LEVEL_PERCENT_FACTOR;
+      /* Recheck buffering status - the new low_watermark value might
+       * be above the current fill level. If the old low_watermark one
        * was below the current level, this means that mq->buffering is
        * disabled and needs to be re-enabled. */
       recheck_buffering_status (mq);
       break;
     case PROP_HIGH_PERCENT:
-      mq->high_percent = g_value_get_int (value);
+      mq->high_watermark = g_value_get_int (value) * BUF_LEVEL_PERCENT_FACTOR;
+      recheck_buffering_status (mq);
+      break;
+    case PROP_LOW_WATERMARK:
+      mq->low_watermark = g_value_get_double (value) * MAX_BUFFERING_LEVEL;
+      recheck_buffering_status (mq);
+      break;
+    case PROP_HIGH_WATERMARK:
+      mq->high_watermark = g_value_get_double (value) * MAX_BUFFERING_LEVEL;
       recheck_buffering_status (mq);
       break;
     case PROP_SYNC_BY_RUNNING_TIME:
@@ -677,10 +851,18 @@
       g_value_set_boolean (value, mq->use_buffering);
       break;
     case PROP_LOW_PERCENT:
-      g_value_set_int (value, mq->low_percent);
+      g_value_set_int (value, mq->low_watermark / BUF_LEVEL_PERCENT_FACTOR);
       break;
     case PROP_HIGH_PERCENT:
-      g_value_set_int (value, mq->high_percent);
+      g_value_set_int (value, mq->high_watermark / BUF_LEVEL_PERCENT_FACTOR);
+      break;
+    case PROP_LOW_WATERMARK:
+      g_value_set_double (value, mq->low_watermark /
+          (gdouble) MAX_BUFFERING_LEVEL);
+      break;
+    case PROP_HIGH_WATERMARK:
+      g_value_set_double (value, mq->high_watermark /
+          (gdouble) MAX_BUFFERING_LEVEL);
       break;
     case PROP_SYNC_BY_RUNNING_TIME:
       g_value_set_boolean (value, mq->sync_by_running_time);
@@ -910,8 +1092,12 @@
     sq->next_time = GST_CLOCK_STIME_NONE;
     sq->last_time = GST_CLOCK_STIME_NONE;
     sq->cached_sinktime = GST_CLOCK_STIME_NONE;
+    sq->group_high_time = GST_CLOCK_STIME_NONE;
     gst_data_queue_set_flushing (sq->queue, FALSE);
 
+    /* We will become active again on the next buffer/gap */
+    sq->active = FALSE;
+
     /* Reset high time to be recomputed next */
     mq->high_time = GST_CLOCK_STIME_NONE;
 
@@ -928,10 +1114,10 @@
 
 /* WITH LOCK TAKEN */
 static gint
-get_percentage (GstSingleQueue * sq)
+get_buffering_level (GstSingleQueue * sq)
 {
   GstDataQueueSize size;
-  gint percent, tmp;
+  gint buffering_level, tmp;
 
   gst_data_queue_get_level (sq->queue, &size);
 
@@ -940,42 +1126,53 @@
       G_GUINT64_FORMAT, sq->id, size.visible, sq->max_size.visible,
       size.bytes, sq->max_size.bytes, sq->cur_time, sq->max_size.time);
 
-  /* get bytes and time percentages and take the max */
+  /* get bytes and time buffer levels and take the max */
   if (sq->is_eos || sq->srcresult == GST_FLOW_NOT_LINKED || sq->is_sparse) {
-    percent = 100;
+    buffering_level = MAX_BUFFERING_LEVEL;
   } else {
-    percent = 0;
+    buffering_level = 0;
     if (sq->max_size.time > 0) {
-      tmp = (sq->cur_time * 100) / sq->max_size.time;
-      percent = MAX (percent, tmp);
+      tmp =
+          gst_util_uint64_scale_int (sq->cur_time,
+          MAX_BUFFERING_LEVEL, sq->max_size.time);
+      buffering_level = MAX (buffering_level, tmp);
     }
     if (sq->max_size.bytes > 0) {
-      tmp = (size.bytes * 100) / sq->max_size.bytes;
-      percent = MAX (percent, tmp);
+      tmp =
+          gst_util_uint64_scale_int (size.bytes,
+          MAX_BUFFERING_LEVEL, sq->max_size.bytes);
+      buffering_level = MAX (buffering_level, tmp);
     }
   }
 
-  return percent;
+  return buffering_level;
 }
 
 /* WITH LOCK TAKEN */
 static void
 update_buffering (GstMultiQueue * mq, GstSingleQueue * sq)
 {
-  gint percent;
+  gint buffering_level, percent;
 
   /* nothing to dowhen we are not in buffering mode */
   if (!mq->use_buffering)
     return;
 
-  percent = get_percentage (sq);
+  buffering_level = get_buffering_level (sq);
+
+  /* scale so that if buffering_level equals the high watermark,
+   * the percentage is 100% */
+  percent = gst_util_uint64_scale (buffering_level, 100, mq->high_watermark);
+  /* clip */
+  if (percent > 100)
+    percent = 100;
 
   if (mq->buffering) {
-    if (percent >= mq->high_percent) {
+    if (buffering_level >= mq->high_watermark) {
       mq->buffering = FALSE;
     }
     /* make sure it increases */
-    percent = MAX (mq->percent, percent);
+    percent = MAX (mq->buffering_percent, percent);
 
     SET_PERCENT (mq, percent);
   } else {
@@ -985,14 +1182,14 @@
     for (iter = mq->queues; iter; iter = g_list_next (iter)) {
       GstSingleQueue *oq = (GstSingleQueue *) iter->data;
 
-      if (get_percentage (oq) >= mq->high_percent) {
+      if (get_buffering_level (oq) >= mq->high_watermark) {
         is_buffering = FALSE;
 
         break;
       }
     }
 
-    if (is_buffering && percent < mq->low_percent) {
+    if (is_buffering && buffering_level < mq->low_watermark) {
       mq->buffering = TRUE;
       SET_PERCENT (mq, percent);
     }
@@ -1006,15 +1203,10 @@
 
   g_mutex_lock (&mq->buffering_post_lock);
   GST_MULTI_QUEUE_MUTEX_LOCK (mq);
-  if (mq->percent_changed) {
-    gint percent = mq->percent;
+  if (mq->buffering_percent_changed) {
+    gint percent = mq->buffering_percent;
 
-    mq->percent_changed = FALSE;
-
-    percent = percent * 100 / mq->high_percent;
-    /* clip */
-    if (percent > 100)
-      percent = 100;
+    mq->buffering_percent_changed = FALSE;
 
     GST_DEBUG_OBJECT (mq, "Going to post buffering: %d%%", percent);
     msg = gst_message_new_buffering (GST_OBJECT_CAST (mq), percent);
@@ -1034,7 +1226,8 @@
     GST_MULTI_QUEUE_MUTEX_LOCK (mq);
     mq->buffering = FALSE;
     GST_DEBUG_OBJECT (mq,
-        "Buffering property disabled, but queue was still buffering; setting percentage to 100%%");
+        "Buffering property disabled, but queue was still buffering; "
+        "setting buffering percentage to 100%%");
     SET_PERCENT (mq, 100);
     GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
   }
@@ -1045,9 +1238,9 @@
 
     GST_MULTI_QUEUE_MUTEX_LOCK (mq);
 
-    /* force fill level percentage to be recalculated */
-    old_perc = mq->percent;
-    mq->percent = 0;
+    /* force buffering percentage to be recalculated */
+    old_perc = mq->buffering_percent;
+    mq->buffering_percent = 0;
 
     tmp = mq->queues;
     while (tmp) {
@@ -1057,8 +1250,9 @@
       tmp = g_list_next (tmp);
     }
 
-    GST_DEBUG_OBJECT (mq, "Recalculated fill level: old: %d%% new: %d%%",
-        old_perc, mq->percent);
+    GST_DEBUG_OBJECT (mq,
+        "Recalculated buffering percentage: old: %d%% new: %d%%",
+        old_perc, mq->buffering_percent);
 
     GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
   }
@@ -1621,24 +1815,37 @@
       sq->oldid = sq->last_oldid;
 
     if (sq->srcresult == GST_FLOW_NOT_LINKED) {
+      gboolean should_wait;
       /* Go to sleep until it's time to push this buffer */
 
       /* Recompute the highid */
       compute_high_id (mq);
       /* Recompute the high time */
-      compute_high_time (mq);
+      compute_high_time (mq, sq->groupid);
 
-      while (((mq->sync_by_running_time && GST_CLOCK_STIME_IS_VALID (next_time)
-                  && (mq->high_time == GST_CLOCK_STIME_NONE
-                      || next_time > mq->high_time))
-              || (!mq->sync_by_running_time && newid > mq->highid))
-          && sq->srcresult == GST_FLOW_NOT_LINKED) {
+      GST_DEBUG_OBJECT (mq,
+          "groupid %d high_time %" GST_STIME_FORMAT " next_time %"
+          GST_STIME_FORMAT, sq->groupid, GST_STIME_ARGS (sq->group_high_time),
+          GST_STIME_ARGS (next_time));
+
+      if (mq->sync_by_running_time)
+        /* In this case we only need to wait if:
+         * 1) there is a time against which to wait
+         * 2) and either we have gone over the high_time or there is no
+         *   high_time */
+        should_wait = GST_CLOCK_STIME_IS_VALID (next_time) &&
+            (sq->group_high_time == GST_CLOCK_STIME_NONE
+            || next_time > sq->group_high_time);
+      else
+        should_wait = newid > mq->highid;
+
+      while (should_wait && sq->srcresult == GST_FLOW_NOT_LINKED) {
 
         GST_DEBUG_OBJECT (mq,
             "queue %d sleeping for not-linked wakeup with "
             "newid %u, highid %u, next_time %" GST_STIME_FORMAT
             ", high_time %" GST_STIME_FORMAT, sq->id, newid, mq->highid,
-            GST_STIME_ARGS (next_time), GST_STIME_ARGS (mq->high_time));
+            GST_STIME_ARGS (next_time), GST_STIME_ARGS (sq->group_high_time));
 
         /* Wake up all non-linked pads before we sleep */
         wake_up_next_non_linked (mq);
@@ -1653,21 +1860,28 @@
         }
 
         /* Recompute the high time and ID */
-        compute_high_time (mq);
+        compute_high_time (mq, sq->groupid);
         compute_high_id (mq);
 
         GST_DEBUG_OBJECT (mq, "queue %d woken from sleeping for not-linked "
             "wakeup with newid %u, highid %u, next_time %" GST_STIME_FORMAT
             ", high_time %" GST_STIME_FORMAT, sq->id, newid, mq->highid,
-            GST_STIME_ARGS (next_time), GST_STIME_ARGS (mq->high_time));
+            GST_STIME_ARGS (next_time), GST_STIME_ARGS (sq->group_high_time));
+
+        if (mq->sync_by_running_time)
+          should_wait = GST_CLOCK_STIME_IS_VALID (next_time) &&
+              (sq->group_high_time == GST_CLOCK_STIME_NONE
+              || next_time > sq->group_high_time);
+        else
+          should_wait = newid > mq->highid;
       }
 
       /* Re-compute the high_id in case someone else pushed */
       compute_high_id (mq);
-      compute_high_time (mq);
+      compute_high_time (mq, sq->groupid);
     } else {
       compute_high_id (mq);
-      compute_high_time (mq);
+      compute_high_time (mq, sq->groupid);
       /* Wake up all non-linked pads */
       wake_up_next_non_linked (mq);
     }
@@ -1718,6 +1932,7 @@
         sq->id);
 
     compute_high_id (mq);
+    compute_high_time (mq, sq->groupid);
     do_update_buffering = TRUE;
 
     /* maybe no-one is waiting */
@@ -1773,7 +1988,7 @@
   GST_MULTI_QUEUE_MUTEX_LOCK (mq);
   if (mq->numwaiting > 0 && (GST_PAD_IS_EOS (sq->srcpad)
           || sq->srcresult == GST_FLOW_EOS)) {
-    compute_high_time (mq);
+    compute_high_time (mq, sq->groupid);
     compute_high_id (mq);
     wake_up_next_non_linked (mq);
   }
@@ -1803,9 +2018,7 @@
      * error upstream */
     if (sq->is_eos && sq->srcresult < GST_FLOW_EOS) {
       GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
-      GST_ELEMENT_ERROR (mq, STREAM, FAILED,
-          ("Internal data stream error."),
-          ("streaming stopped, reason %s", gst_flow_get_name (sq->srcresult)));
+      GST_ELEMENT_FLOW_ERROR (mq, sq->srcresult);
     } else {
       GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
     }
@@ -1998,15 +2211,14 @@
           GST_INFO_OBJECT (mq, "SingleQueue %d is a sparse stream", sq->id);
           sq->is_sparse = TRUE;
         }
-        sq->thread = g_thread_self ();
       }
 
       sq->thread = g_thread_self ();
 
       /* Remove EOS flag */
       sq->is_eos = FALSE;
-    }
       break;
+    }
     case GST_EVENT_FLUSH_START:
       GST_DEBUG_OBJECT (mq, "SingleQueue %d : received flush start event",
           sq->id);
@@ -2087,10 +2299,7 @@
        * error upstream */
       if (sq->srcresult < GST_FLOW_EOS) {
         GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
-        GST_ELEMENT_ERROR (mq, STREAM, FAILED,
-            ("Internal data stream error."),
-            ("streaming stopped, reason %s",
-                gst_flow_get_name (sq->srcresult)));
+        GST_ELEMENT_FLOW_ERROR (mq, sq->srcresult);
       } else {
         GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
       }
@@ -2183,6 +2392,8 @@
           GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
           res = gst_data_queue_push (sq->queue, (GstDataQueueItem *) item);
           GST_MULTI_QUEUE_MUTEX_LOCK (mq);
+          if (!res || sq->flushing)
+            goto out_flushing;
           /* it might be that the query has been taken out of the queue
            * while we were unlocked. So, we need to check if the last
            * handled query is the same one than the one we just
@@ -2305,8 +2516,9 @@
     for (tmp = mq->queues; tmp; tmp = tmp->next) {
       GstSingleQueue *sq = (GstSingleQueue *) tmp->data;
       if (sq->srcresult == GST_FLOW_NOT_LINKED
+          && GST_CLOCK_STIME_IS_VALID (sq->group_high_time)
           && GST_CLOCK_STIME_IS_VALID (sq->next_time)
-          && sq->next_time <= mq->high_time) {
+          && sq->next_time <= sq->group_high_time) {
         GST_LOG_OBJECT (mq, "Waking up singlequeue %d", sq->id);
         g_cond_signal (&sq->turn);
       }
@@ -2369,7 +2581,7 @@
 
 /* WITH LOCK TAKEN */
 static void
-compute_high_time (GstMultiQueue * mq)
+compute_high_time (GstMultiQueue * mq, guint groupid)
 {
   /* The high-time is either the highest last time among the linked
    * pads, or if all pads are not-linked, it's the lowest nex time of
@@ -2377,19 +2589,28 @@
   GList *tmp;
   GstClockTimeDiff highest = GST_CLOCK_STIME_NONE;
   GstClockTimeDiff lowest = GST_CLOCK_STIME_NONE;
+  GstClockTimeDiff group_high = GST_CLOCK_STIME_NONE;
+  GstClockTimeDiff group_low = GST_CLOCK_STIME_NONE;
+  GstClockTimeDiff res;
+  /* Number of streams which belong to groupid */
+  guint group_count = 0;
 
   if (!mq->sync_by_running_time)
+    /* return GST_CLOCK_STIME_NONE; */
     return;
 
   for (tmp = mq->queues; tmp; tmp = tmp->next) {
     GstSingleQueue *sq = (GstSingleQueue *) tmp->data;
 
     GST_LOG_OBJECT (mq,
-        "inspecting sq:%d , next_time:%" GST_STIME_FORMAT ", last_time:%"
-        GST_STIME_FORMAT ", srcresult:%s", sq->id,
+        "inspecting sq:%d (group:%d) , next_time:%" GST_STIME_FORMAT
+        ", last_time:%" GST_STIME_FORMAT ", srcresult:%s", sq->id, sq->groupid,
         GST_STIME_ARGS (sq->next_time), GST_STIME_ARGS (sq->last_time),
         gst_flow_get_name (sq->srcresult));
 
+    if (sq->groupid == groupid)
+      group_count++;
+
     if (sq->srcresult == GST_FLOW_NOT_LINKED) {
       /* No need to consider queues which are not waiting */
       if (!GST_CLOCK_STIME_IS_VALID (sq->next_time)) {
@@ -2399,6 +2620,9 @@
 
       if (lowest == GST_CLOCK_STIME_NONE || sq->next_time < lowest)
         lowest = sq->next_time;
+      if (sq->groupid == groupid && (group_low == GST_CLOCK_STIME_NONE
+              || sq->next_time < group_low))
+        group_low = sq->next_time;
     } else if (!GST_PAD_IS_EOS (sq->srcpad) && sq->srcresult != GST_FLOW_EOS) {
       /* If we don't have a global high time, or the global high time
        * is lower than this single queue's last outputted time, store
@@ -2406,10 +2630,18 @@
       if (highest == GST_CLOCK_STIME_NONE
           || (sq->last_time != GST_CLOCK_STIME_NONE && sq->last_time > highest))
         highest = sq->last_time;
+      if (sq->groupid == groupid && (group_high == GST_CLOCK_STIME_NONE
+              || (sq->last_time != GST_CLOCK_STIME_NONE
+                  && sq->last_time > group_high)))
+        group_high = sq->last_time;
     }
     GST_LOG_OBJECT (mq,
         "highest now %" GST_STIME_FORMAT " lowest %" GST_STIME_FORMAT,
         GST_STIME_ARGS (highest), GST_STIME_ARGS (lowest));
+    if (sq->groupid == groupid)
+      GST_LOG_OBJECT (mq,
+          "grouphigh %" GST_STIME_FORMAT " grouplow %" GST_STIME_FORMAT,
+          GST_STIME_ARGS (group_high), GST_STIME_ARGS (group_low));
   }
 
   if (highest == GST_CLOCK_STIME_NONE)
@@ -2417,10 +2649,25 @@
   else
     mq->high_time = highest;
 
+  GST_LOG_OBJECT (mq, "group count %d for groupid %u", group_count, groupid);
   GST_LOG_OBJECT (mq,
       "High time is now : %" GST_STIME_FORMAT ", lowest non-linked %"
       GST_STIME_FORMAT, GST_STIME_ARGS (mq->high_time),
       GST_STIME_ARGS (lowest));
+
+  /* If there's only one stream of a given type, use the global high */
+  if (group_count < 2)
+    res = mq->high_time;
+  else if (group_high == GST_CLOCK_STIME_NONE)
+    res = group_low;
+  else
+    res = group_high;
+
+  for (tmp = mq->queues; tmp; tmp = tmp->next) {
+    GstSingleQueue *sq = (GstSingleQueue *) tmp->data;
+    if (groupid == sq->groupid)
+      sq->group_high_time = res;
+  }
 }
 
 #define IS_FILLED(q, format, value) (((q)->max_size.format) != 0 && \
@@ -2448,9 +2695,10 @@
 
   GST_MULTI_QUEUE_MUTEX_LOCK (mq);
 
-  /* check if we reached the hard time/bytes limits */
-  if (sq->is_eos || sq->is_sparse || IS_FILLED (sq, bytes, size.bytes) ||
-      IS_FILLED (sq, time, sq->cur_time)) {
+  /* check if we reached the hard time/bytes limits;
+     time limit is only taken into account for non-sparse streams */
+  if (sq->is_eos || IS_FILLED (sq, bytes, size.bytes) ||
+      (!sq->is_sparse && IS_FILLED (sq, time, sq->cur_time))) {
     goto done;
   }
 
@@ -2635,6 +2883,8 @@
 gst_single_queue_new (GstMultiQueue * mqueue, guint id)
 {
   GstSingleQueue *sq;
+  GstMultiQueuePad *mqpad;
+  GstPadTemplate *templ;
   gchar *name;
   GList *tmp;
   guint temp_id = (id == -1) ? 0 : id;
@@ -2662,6 +2912,8 @@
   sq = g_new0 (GstSingleQueue, 1);
   mqueue->nbqueues++;
   sq->id = temp_id;
+  sq->groupid = DEFAULT_PAD_GROUP_ID;
+  sq->group_high_time = GST_CLOCK_STIME_NONE;
 
   mqueue->queues = g_list_insert_before (mqueue->queues, tmp, sq);
   mqueue->queues_cookie++;
@@ -2705,9 +2957,15 @@
   sq->src_tainted = TRUE;
 
   name = g_strdup_printf ("sink_%u", sq->id);
-  sq->sinkpad = gst_pad_new_from_static_template (&sinktemplate, name);
+  templ = gst_static_pad_template_get (&sinktemplate);
+  sq->sinkpad = g_object_new (GST_TYPE_MULTIQUEUE_PAD, "name", name,
+      "direction", templ->direction, "template", templ, NULL);
+  gst_object_unref (templ);
   g_free (name);
 
+  mqpad = (GstMultiQueuePad *) sq->sinkpad;
+  mqpad->sq = sq;
+
   gst_pad_set_chain_function (sq->sinkpad,
       GST_DEBUG_FUNCPTR (gst_multi_queue_chain));
   gst_pad_set_activatemode_function (sq->sinkpad,
diff --git a/plugins/elements/gstmultiqueue.h b/plugins/elements/gstmultiqueue.h
index 98e4bc1..5ed8413 100644
--- a/plugins/elements/gstmultiqueue.h
+++ b/plugins/elements/gstmultiqueue.h
@@ -42,6 +42,9 @@
 typedef struct _GstMultiQueue GstMultiQueue;
 typedef struct _GstMultiQueueClass GstMultiQueueClass;
 
+typedef struct _GstMultiQueuePad GstMultiQueuePad;
+typedef struct _GstMultiQueuePadClass GstMultiQueuePadClass;
+
 /**
  * GstMultiQueue:
  *
@@ -62,9 +65,9 @@
 
   GstDataQueueSize  max_size, extra_size;
   gboolean use_buffering;
-  gint low_percent, high_percent;
+  gint low_watermark, high_watermark;
   gboolean buffering;
-  gint percent;
+  gint buffering_percent;
 
   guint    counter;	/* incoming object counter, use atomic accesses */
   guint32  highid;	/* contains highest id of last outputted object */
@@ -76,7 +79,7 @@
 
   gint numwaiting;	/* number of not-linked pads waiting */
 
-  gboolean percent_changed;
+  gboolean buffering_percent_changed;
   GMutex buffering_post_lock; /* assures only one posted at a time */
 
   GstClockTime interleave;	/* Input interleave */
diff --git a/plugins/elements/gstqueue.c b/plugins/elements/gstqueue.c
index a0b880c..e8f7f89 100644
--- a/plugins/elements/gstqueue.c
+++ b/plugins/elements/gstqueue.c
@@ -986,10 +986,7 @@
             if (queue->srcresult == GST_FLOW_NOT_LINKED
                 || queue->srcresult < GST_FLOW_EOS) {
               GST_QUEUE_MUTEX_UNLOCK (queue);
-              GST_ELEMENT_ERROR (queue, STREAM, FAILED,
-                  (_("Internal data flow error.")),
-                  ("streaming task paused, reason %s (%d)",
-                      gst_flow_get_name (queue->srcresult), queue->srcresult));
+              GST_ELEMENT_FLOW_ERROR (queue, queue->srcresult);
             } else {
               GST_QUEUE_MUTEX_UNLOCK (queue);
             }
@@ -1535,10 +1532,7 @@
     /* let app know about us giving up if upstream is not expected to do so */
     /* EOS is already taken care of elsewhere */
     if (eos && (ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_EOS)) {
-      GST_ELEMENT_ERROR (queue, STREAM, FAILED,
-          (_("Internal data flow error.")),
-          ("streaming task paused, reason %s (%d)",
-              gst_flow_get_name (ret), ret));
+      GST_ELEMENT_FLOW_ERROR (queue, ret);
       gst_pad_push_event (queue->srcpad, gst_event_new_eos ());
     }
     return;
diff --git a/plugins/elements/gstqueue2.c b/plugins/elements/gstqueue2.c
index 8e5a5dc..8d78856 100644
--- a/plugins/elements/gstqueue2.c
+++ b/plugins/elements/gstqueue2.c
@@ -117,6 +117,8 @@
 #define DEFAULT_USE_RATE_ESTIMATE  TRUE
 #define DEFAULT_LOW_PERCENT        10
 #define DEFAULT_HIGH_PERCENT       99
+#define DEFAULT_LOW_WATERMARK      0.01
+#define DEFAULT_HIGH_WATERMARK     0.99
 #define DEFAULT_TEMP_REMOVE        TRUE
 #define DEFAULT_RING_BUFFER_MAX_SIZE 0
 
@@ -134,6 +136,8 @@
   PROP_USE_RATE_ESTIMATE,
   PROP_LOW_PERCENT,
   PROP_HIGH_PERCENT,
+  PROP_LOW_WATERMARK,
+  PROP_HIGH_WATERMARK,
   PROP_TEMP_TEMPLATE,
   PROP_TEMP_LOCATION,
   PROP_TEMP_REMOVE,
@@ -142,6 +146,32 @@
   PROP_LAST
 };
 
+/* Explanation for buffer levels and percentages:
+ *
+ * The buffering_level functions here return a value in a normalized range
+ * that specifies the queue's current fill level. The range goes from 0 to
+ * MAX_BUFFERING_LEVEL. The low/high watermarks also use this same range.
+ *
+ * This is not to be confused with the buffering_percent value, which is
+ * a *relative* quantity - relative to the low/high watermarks.
+ * buffering_percent = 0% means buffering_level is at the low watermark.
+ * buffering_percent = 100% means buffering_level is at the high watermark.
+ * buffering_percent is used for determining if the fill level has reached
+ * the high watermark, and for producing BUFFERING messages. This value
+ * always uses a 0..100 range (since it is a percentage).
+ *
+ * To avoid future confusions, whenever "buffering level" is mentioned, it
+ * refers to the absolute level which is in the 0..MAX_BUFFERING_LEVEL
+ * range. Whenever "buffering_percent" is mentioned, it refers to the
+ * percentage value that is relative to the low/high watermark. */
+
+/* Using a buffering level range of 0..1000000 to allow for a
+ * resolution in ppm (1 ppm = 0.0001%) */
+#define MAX_BUFFERING_LEVEL 1000000
+
+/* How much 1% makes up in the buffer level range */
+#define BUF_LEVEL_PERCENT_FACTOR ((MAX_BUFFERING_LEVEL) / 100)
+
 #define GST_QUEUE2_CLEAR_LEVEL(l) G_STMT_START {         \
   l.buffers = 0;                                        \
   l.bytes = 0;                                          \
@@ -354,13 +384,25 @@
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_LOW_PERCENT,
       g_param_spec_int ("low-percent", "Low percent",
-          "Low threshold for buffering to start. Only used if use-buffering is True",
-          0, 100, DEFAULT_LOW_PERCENT,
+          "Low threshold for buffering to start. Only used if use-buffering is True "
+          "(Deprecated: use low-watermark instead)",
+          0, 100, DEFAULT_LOW_WATERMARK * 100,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
   g_object_class_install_property (gobject_class, PROP_HIGH_PERCENT,
       g_param_spec_int ("high-percent", "High percent",
+          "High threshold for buffering to finish. Only used if use-buffering is True "
+          "(Deprecated: use high-watermark instead)",
+          0, 100, DEFAULT_HIGH_WATERMARK * 100,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_LOW_WATERMARK,
+      g_param_spec_double ("low-watermark", "Low watermark",
+          "Low threshold for buffering to start. Only used if use-buffering is True",
+          0.0, 1.0, DEFAULT_LOW_WATERMARK,
+          G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+  g_object_class_install_property (gobject_class, PROP_HIGH_WATERMARK,
+      g_param_spec_double ("high-watermark", "High watermark",
           "High threshold for buffering to finish. Only used if use-buffering is True",
-          0, 100, DEFAULT_HIGH_PERCENT,
+          0.0, 1.0, DEFAULT_HIGH_WATERMARK,
           G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
   g_object_class_install_property (gobject_class, PROP_TEMP_TEMPLATE,
@@ -463,8 +505,8 @@
   queue->max_level.rate_time = DEFAULT_MAX_SIZE_TIME;
   queue->use_buffering = DEFAULT_USE_BUFFERING;
   queue->use_rate_estimate = DEFAULT_USE_RATE_ESTIMATE;
-  queue->low_percent = DEFAULT_LOW_PERCENT;
-  queue->high_percent = DEFAULT_HIGH_PERCENT;
+  queue->low_watermark = DEFAULT_LOW_WATERMARK * MAX_BUFFERING_LEVEL;
+  queue->high_watermark = DEFAULT_HIGH_WATERMARK * MAX_BUFFERING_LEVEL;
 
   gst_segment_init (&queue->sink_segment, GST_FORMAT_TIME);
   gst_segment_init (&queue->src_segment, GST_FORMAT_TIME);
@@ -882,7 +924,8 @@
 }
 
 static inline gint
-get_percent (guint64 cur_level, guint64 max_level, guint64 alt_max)
+normalize_to_buffering_level (guint64 cur_level, guint64 max_level,
+    guint64 alt_max)
 {
   guint64 p;
 
@@ -890,33 +933,34 @@
     return 0;
 
   if (alt_max > 0)
-    p = gst_util_uint64_scale (cur_level, 100, MIN (max_level, alt_max));
+    p = gst_util_uint64_scale (cur_level, MAX_BUFFERING_LEVEL,
+        MIN (max_level, alt_max));
   else
-    p = gst_util_uint64_scale (cur_level, 100, max_level);
+    p = gst_util_uint64_scale (cur_level, MAX_BUFFERING_LEVEL, max_level);
 
-  return MIN (p, 100);
+  return MIN (p, MAX_BUFFERING_LEVEL);
 }
 
 static gboolean
-get_buffering_percent (GstQueue2 * queue, gboolean * is_buffering,
-    gint * percent)
+get_buffering_level (GstQueue2 * queue, gboolean * is_buffering,
+    gint * buffering_level)
 {
-  gint perc, perc2;
+  gint buflevel, buflevel2;
 
-  if (queue->high_percent <= 0) {
-    if (percent)
-      *percent = 100;
+  if (queue->high_watermark <= 0) {
+    if (buffering_level)
+      *buffering_level = MAX_BUFFERING_LEVEL;
     if (is_buffering)
       *is_buffering = FALSE;
     return FALSE;
   }
-#define GET_PERCENT(format,alt_max) \
-    get_percent(queue->cur_level.format,queue->max_level.format,(alt_max))
+#define GET_BUFFER_LEVEL_FOR_QUANTITY(format,alt_max) \
+    normalize_to_buffering_level (queue->cur_level.format,queue->max_level.format,(alt_max))
 
   if (queue->is_eos) {
     /* on EOS we are always 100% full, we set the var here so that it we can
      * reuse the logic below to stop buffering */
-    perc = 100;
+    buflevel = MAX_BUFFERING_LEVEL;
     GST_LOG_OBJECT (queue, "we are EOS");
   } else {
     GST_LOG_OBJECT (queue,
@@ -924,50 +968,59 @@
         queue->cur_level.bytes, GST_TIME_ARGS (queue->cur_level.time),
         queue->cur_level.buffers);
 
-    /* figure out the percent we are filled, we take the max of all formats. */
+    /* figure out the buffering level we are filled, we take the max of all formats. */
     if (!QUEUE_IS_USING_RING_BUFFER (queue)) {
-      perc = GET_PERCENT (bytes, 0);
+      buflevel = GET_BUFFER_LEVEL_FOR_QUANTITY (bytes, 0);
     } else {
       guint64 rb_size = queue->ring_buffer_max_size;
-      perc = GET_PERCENT (bytes, rb_size);
+      buflevel = GET_BUFFER_LEVEL_FOR_QUANTITY (bytes, rb_size);
     }
 
-    perc2 = GET_PERCENT (time, 0);
-    perc = MAX (perc, perc2);
+    buflevel2 = GET_BUFFER_LEVEL_FOR_QUANTITY (time, 0);
+    buflevel = MAX (buflevel, buflevel2);
 
-    perc2 = GET_PERCENT (buffers, 0);
-    perc = MAX (perc, perc2);
+    buflevel2 = GET_BUFFER_LEVEL_FOR_QUANTITY (buffers, 0);
+    buflevel = MAX (buflevel, buflevel2);
 
     /* also apply the rate estimate when we need to */
     if (queue->use_rate_estimate) {
-      perc2 = GET_PERCENT (rate_time, 0);
-      perc = MAX (perc, perc2);
+      buflevel2 = GET_BUFFER_LEVEL_FOR_QUANTITY (rate_time, 0);
+      buflevel = MAX (buflevel, buflevel2);
     }
 
     /* Don't get to 0% unless we're really empty */
     if (queue->cur_level.bytes > 0)
-      perc = MAX (1, perc);
+      buflevel = MAX (1, buflevel);
   }
-#undef GET_PERCENT
+#undef GET_BUFFER_LEVEL_FOR_QUANTITY
 
   if (is_buffering)
     *is_buffering = queue->is_buffering;
 
-  /* scale to high percent so that it becomes the 100% mark */
-  perc = perc * 100 / queue->high_percent;
-  /* clip */
-  if (perc > 100)
-    perc = 100;
+  if (buffering_level)
+    *buffering_level = buflevel;
 
-  if (percent)
-    *percent = perc;
-
-  GST_DEBUG_OBJECT (queue, "buffering %d, percent %d", queue->is_buffering,
-      perc);
+  GST_DEBUG_OBJECT (queue, "buffering %d, level %d", queue->is_buffering,
+      buflevel);
 
   return TRUE;
 }
 
+static gint
+convert_to_buffering_percent (GstQueue2 * queue, gint buffering_level)
+{
+  int percent;
+
+  /* scale so that if buffering_level equals the high watermark,
+   * the percentage is 100% */
+  percent = buffering_level * 100 / queue->high_watermark;
+  /* clip */
+  if (percent > 100)
+    percent = 100;
+
+  return percent;
+}
+
 static void
 get_buffering_stats (GstQueue2 * queue, gint percent, GstBufferingMode * mode,
     gint * avg_in, gint * avg_out, gint64 * buffering_left)
@@ -1043,16 +1096,18 @@
 static void
 update_buffering (GstQueue2 * queue)
 {
-  gint percent;
+  gint buffering_level, percent;
 
   /* Ensure the variables used to calculate buffering state are up-to-date. */
   if (queue->current)
     update_cur_level (queue, queue->current);
   update_in_rates (queue, FALSE);
 
-  if (!get_buffering_percent (queue, NULL, &percent))
+  if (!get_buffering_level (queue, NULL, &buffering_level))
     return;
 
+  percent = convert_to_buffering_percent (queue, buffering_level);
+
   if (queue->is_buffering) {
     /* if we were buffering see if we reached the high watermark */
     if (percent >= 100)
@@ -1062,7 +1117,7 @@
   } else {
     /* we were not buffering, check if we need to start buffering if we drop
      * below the low threshold */
-    if (percent < queue->low_percent) {
+    if (buffering_level < queue->low_watermark) {
       queue->is_buffering = TRUE;
       SET_PERCENT (queue, percent);
     }
@@ -2512,10 +2567,7 @@
           } else if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
             if (queue->srcresult == GST_FLOW_NOT_LINKED
                 || queue->srcresult < GST_FLOW_EOS) {
-              GST_ELEMENT_ERROR (queue, STREAM, FAILED,
-                  (_("Internal data flow error.")),
-                  ("streaming task paused, reason %s (%d)",
-                      gst_flow_get_name (queue->srcresult), queue->srcresult));
+              GST_ELEMENT_FLOW_ERROR (queue, queue->srcresult);
             }
             goto out_flow_error;
           }
@@ -3004,10 +3056,7 @@
     /* let app know about us giving up if upstream is not expected to do so */
     /* EOS is already taken care of elsewhere */
     if (eos && (ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_EOS)) {
-      GST_ELEMENT_ERROR (queue, STREAM, FAILED,
-          (_("Internal data flow error.")),
-          ("streaming task paused, reason %s (%d)",
-              gst_flow_get_name (ret), ret));
+      GST_ELEMENT_FLOW_ERROR (queue, ret);
       gst_pad_push_event (queue->srcpad, gst_event_new_eos ());
     }
     return;
@@ -3137,7 +3186,8 @@
 
       GST_DEBUG_OBJECT (queue, "query buffering");
 
-      get_buffering_percent (queue, &is_buffering, &percent);
+      get_buffering_level (queue, &is_buffering, &percent);
+      percent = convert_to_buffering_percent (queue, percent);
       gst_query_set_buffering_percent (query, is_buffering, percent);
 
       get_buffering_stats (queue, percent, &mode, &avg_in, &avg_out,
@@ -3695,10 +3745,25 @@
       queue->use_rate_estimate = g_value_get_boolean (value);
       break;
     case PROP_LOW_PERCENT:
-      queue->low_percent = g_value_get_int (value);
+      queue->low_watermark = g_value_get_int (value) * BUF_LEVEL_PERCENT_FACTOR;
+      if (queue->is_buffering)
+        update_buffering (queue);
       break;
     case PROP_HIGH_PERCENT:
-      queue->high_percent = g_value_get_int (value);
+      queue->high_watermark =
+          g_value_get_int (value) * BUF_LEVEL_PERCENT_FACTOR;
+      if (queue->is_buffering)
+        update_buffering (queue);
+      break;
+    case PROP_LOW_WATERMARK:
+      queue->low_watermark = g_value_get_double (value) * MAX_BUFFERING_LEVEL;
+      if (queue->is_buffering)
+        update_buffering (queue);
+      break;
+    case PROP_HIGH_WATERMARK:
+      queue->high_watermark = g_value_get_double (value) * MAX_BUFFERING_LEVEL;
+      if (queue->is_buffering)
+        update_buffering (queue);
       break;
     case PROP_TEMP_TEMPLATE:
       gst_queue2_set_temp_template (queue, g_value_get_string (value));
@@ -3755,10 +3820,18 @@
       g_value_set_boolean (value, queue->use_rate_estimate);
       break;
     case PROP_LOW_PERCENT:
-      g_value_set_int (value, queue->low_percent);
+      g_value_set_int (value, queue->low_watermark / BUF_LEVEL_PERCENT_FACTOR);
       break;
     case PROP_HIGH_PERCENT:
-      g_value_set_int (value, queue->high_percent);
+      g_value_set_int (value, queue->high_watermark / BUF_LEVEL_PERCENT_FACTOR);
+      break;
+    case PROP_LOW_WATERMARK:
+      g_value_set_double (value, queue->low_watermark /
+          (gdouble) MAX_BUFFERING_LEVEL);
+      break;
+    case PROP_HIGH_WATERMARK:
+      g_value_set_double (value, queue->high_watermark /
+          (gdouble) MAX_BUFFERING_LEVEL);
       break;
     case PROP_TEMP_TEMPLATE:
       g_value_set_string (value, queue->temp_template);
diff --git a/plugins/elements/gstqueue2.h b/plugins/elements/gstqueue2.h
index 670953f..a1b94a7 100644
--- a/plugins/elements/gstqueue2.h
+++ b/plugins/elements/gstqueue2.h
@@ -109,8 +109,10 @@
   gboolean use_tags_bitrate;
   gboolean use_rate_estimate;
   GstClockTime buffering_interval;
-  gint low_percent;             /* low/high watermarks for buffering */
-  gint high_percent;
+
+  /* low/high watermarks for buffering */
+  gint low_watermark;
+  gint high_watermark;
 
   /* current buffering state */
   gboolean is_buffering;
diff --git a/plugins/elements/gsttypefindelement.c b/plugins/elements/gsttypefindelement.c
index 453ff75..0740972 100644
--- a/plugins/elements/gsttypefindelement.c
+++ b/plugins/elements/gsttypefindelement.c
@@ -1216,8 +1216,7 @@
       }
     } else if (ret == GST_FLOW_NOT_LINKED || ret < GST_FLOW_EOS) {
       /* for fatal errors we post an error message */
-      GST_ELEMENT_ERROR (typefind, STREAM, FAILED, (NULL),
-          ("stream stopped, reason %s", reason));
+      GST_ELEMENT_FLOW_ERROR (typefind, ret);
       push_eos = TRUE;
     }
     if (push_eos) {
diff --git a/plugins/tracers/Makefile.am b/plugins/tracers/Makefile.am
index f6efee6..9114447 100644
--- a/plugins/tracers/Makefile.am
+++ b/plugins/tracers/Makefile.am
@@ -18,21 +18,24 @@
 libgstcoretracers_la_DEPENDENCIES = $(top_builddir)/gst/libgstreamer-@GST_API_VERSION@.la
 libgstcoretracers_la_SOURCES = \
   gstlatency.c \
+  gstleaks.c \
   $(LOG_SOURCES) \
   $(RUSAGE_SOURCES) \
   gststats.c \
-	gsttracers.c
+  gsttracers.c
 
 libgstcoretracers_la_CFLAGS = $(GST_OBJ_CFLAGS) \
   -DGST_USE_UNSTABLE_API
 libgstcoretracers_la_LIBADD = \
 	$(GST_PRINTF_LA) \
-	$(GST_OBJ_LIBS)
+	$(GST_OBJ_LIBS) \
+	$(UNWIND_LIBS)
 libgstcoretracers_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstcoretracers_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 
 noinst_HEADERS = \
   gstlatency.h \
+  gstleaks.h \
   gstlog.h \
   gstrusage.h \
   gststats.h
diff --git a/plugins/tracers/Makefile.in b/plugins/tracers/Makefile.in
index 3efb20a..90fcab9 100644
--- a/plugins/tracers/Makefile.in
+++ b/plugins/tracers/Makefile.in
@@ -167,15 +167,15 @@
 LTLIBRARIES = $(plugin_LTLIBRARIES)
 @GST_DISABLE_GST_DEBUG_FALSE@am__DEPENDENCIES_1 = $(top_builddir)/gst/printf/libgstprintf.la
 am__DEPENDENCIES_2 =
-am__libgstcoretracers_la_SOURCES_DIST = gstlatency.c gstlog.c \
-	gstrusage.c gststats.c gsttracers.c
+am__libgstcoretracers_la_SOURCES_DIST = gstlatency.c gstleaks.c \
+	gstlog.c gstrusage.c gststats.c gsttracers.c
 @GST_DISABLE_GST_DEBUG_FALSE@am__objects_1 =  \
 @GST_DISABLE_GST_DEBUG_FALSE@	libgstcoretracers_la-gstlog.lo
 @HAVE_GETRUSAGE_TRUE@am__objects_2 =  \
 @HAVE_GETRUSAGE_TRUE@	libgstcoretracers_la-gstrusage.lo
 am_libgstcoretracers_la_OBJECTS = libgstcoretracers_la-gstlatency.lo \
-	$(am__objects_1) $(am__objects_2) \
-	libgstcoretracers_la-gststats.lo \
+	libgstcoretracers_la-gstleaks.lo $(am__objects_1) \
+	$(am__objects_2) libgstcoretracers_la-gststats.lo \
 	libgstcoretracers_la-gsttracers.lo
 libgstcoretracers_la_OBJECTS = $(am_libgstcoretracers_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -322,6 +322,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -329,17 +330,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -464,6 +462,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
@@ -551,22 +551,25 @@
 libgstcoretracers_la_DEPENDENCIES = $(top_builddir)/gst/libgstreamer-@GST_API_VERSION@.la
 libgstcoretracers_la_SOURCES = \
   gstlatency.c \
+  gstleaks.c \
   $(LOG_SOURCES) \
   $(RUSAGE_SOURCES) \
   gststats.c \
-	gsttracers.c
+  gsttracers.c
 
 libgstcoretracers_la_CFLAGS = $(GST_OBJ_CFLAGS) \
   -DGST_USE_UNSTABLE_API
 
 libgstcoretracers_la_LIBADD = \
 	$(GST_PRINTF_LA) \
-	$(GST_OBJ_LIBS)
+	$(GST_OBJ_LIBS) \
+	$(UNWIND_LIBS)
 
 libgstcoretracers_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
 libgstcoretracers_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
 noinst_HEADERS = \
   gstlatency.h \
+  gstleaks.h \
   gstlog.h \
   gstrusage.h \
   gststats.h
@@ -651,6 +654,7 @@
 	-rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoretracers_la-gstlatency.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoretracers_la-gstleaks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoretracers_la-gstlog.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoretracers_la-gstrusage.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcoretracers_la-gststats.Plo@am__quote@
@@ -687,6 +691,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 $(libgstcoretracers_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoretracers_la_CFLAGS) $(CFLAGS) -c -o libgstcoretracers_la-gstlatency.lo `test -f 'gstlatency.c' || echo '$(srcdir)/'`gstlatency.c
 
+libgstcoretracers_la-gstleaks.lo: gstleaks.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoretracers_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoretracers_la_CFLAGS) $(CFLAGS) -MT libgstcoretracers_la-gstleaks.lo -MD -MP -MF $(DEPDIR)/libgstcoretracers_la-gstleaks.Tpo -c -o libgstcoretracers_la-gstleaks.lo `test -f 'gstleaks.c' || echo '$(srcdir)/'`gstleaks.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcoretracers_la-gstleaks.Tpo $(DEPDIR)/libgstcoretracers_la-gstleaks.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gstleaks.c' object='libgstcoretracers_la-gstleaks.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 $(libgstcoretracers_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoretracers_la_CFLAGS) $(CFLAGS) -c -o libgstcoretracers_la-gstleaks.lo `test -f 'gstleaks.c' || echo '$(srcdir)/'`gstleaks.c
+
 libgstcoretracers_la-gstlog.lo: gstlog.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstcoretracers_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcoretracers_la_CFLAGS) $(CFLAGS) -MT libgstcoretracers_la-gstlog.lo -MD -MP -MF $(DEPDIR)/libgstcoretracers_la-gstlog.Tpo -c -o libgstcoretracers_la-gstlog.lo `test -f 'gstlog.c' || echo '$(srcdir)/'`gstlog.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgstcoretracers_la-gstlog.Tpo $(DEPDIR)/libgstcoretracers_la-gstlog.Plo
diff --git a/plugins/tracers/gstleaks.c b/plugins/tracers/gstleaks.c
new file mode 100644
index 0000000..fe9c295
--- /dev/null
+++ b/plugins/tracers/gstleaks.c
@@ -0,0 +1,657 @@
+/* GStreamer
+ * Copyright (C) 2016 Collabora Ltd. <guillaume.desmottes@collabora.co.uk>
+ *
+ * gstleaks.c: tracing module detecting object leaks
+ *
+ * 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:gstleaks
+ * @short_description: detect GstObject and GstMiniObject leaks
+ *
+ * A tracing module tracking the lifetime of objects by logging those still
+ * alive when program is exiting and raising a warning.
+ * The type of objects tracked can be filtered using the parameters of the
+ * tracer, for example: GST_TRACERS="leaks(GstEvent,GstMessage)"
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#ifdef HAVE_UNWIND
+/* No need for remote debugging so turn on the 'local only' optimizations in
+ * libunwind */
+#define UNW_LOCAL_ONLY
+#include <libunwind.h>
+#endif /* HAVE_UNWIND */
+
+#ifdef HAVE_BACKTRACE
+#include <execinfo.h>
+#endif /* HAVE_BACKTRACE */
+
+#include "gstleaks.h"
+
+#ifdef G_OS_UNIX
+#include <signal.h>
+#endif /* G_OS_UNIX */
+
+GST_DEBUG_CATEGORY_STATIC (gst_leaks_debug);
+#define GST_CAT_DEFAULT gst_leaks_debug
+
+#define _do_init \
+    GST_DEBUG_CATEGORY_INIT (gst_leaks_debug, "leaks", 0, "leaks tracer");
+#define gst_leaks_tracer_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstLeaksTracer, gst_leaks_tracer,
+    GST_TYPE_TRACER, _do_init);
+
+static GstTracerRecord *tr_alive;
+#ifdef G_OS_UNIX
+static GstTracerRecord *tr_added = NULL;
+static GstTracerRecord *tr_removed = NULL;
+#endif /* G_OS_UNIX */
+static GQueue instances = G_QUEUE_INIT;
+
+static void
+set_filtering (GstLeaksTracer * self)
+{
+  gchar *params;
+  GStrv tmp;
+  guint i;
+
+  g_object_get (self, "params", &params, NULL);
+  if (!params)
+    return;
+
+  tmp = g_strsplit (params, ",", -1);
+
+  self->filter = g_array_sized_new (FALSE, FALSE, sizeof (GType),
+      g_strv_length (tmp));
+  for (i = 0; tmp[i]; i++) {
+    GType type;
+
+    type = g_type_from_name (tmp[i]);
+    if (type == 0) {
+      /* The type may not yet be known by the type system, typically because
+       * the plugin implementing it as not yet be loaded. Save it for now as
+       * it will have another chance to be added to the filter later in
+       * should_handle_object_type() when/if the object type is actually
+       * used. */
+      if (!self->unhandled_filter)
+        self->unhandled_filter = g_hash_table_new (NULL, NULL);
+
+      g_hash_table_add (self->unhandled_filter,
+          GUINT_TO_POINTER (g_quark_from_string (tmp[i])));
+      g_atomic_int_inc (&self->unhandled_filter_count);
+      continue;
+    }
+
+    GST_DEBUG_OBJECT (self, "add filter on %s", tmp[i]);
+
+    g_array_append_val (self->filter, type);
+  }
+
+  g_strfreev (tmp);
+  g_free (params);
+}
+
+static gboolean
+should_handle_object_type (GstLeaksTracer * self, GType object_type)
+{
+  guint i, len;
+
+  if (!self->filter)
+    /* No filtering, handle all types */
+    return TRUE;
+
+  if (g_atomic_int_get (&self->unhandled_filter_count)) {
+    GST_OBJECT_LOCK (self);
+    if (self->unhandled_filter) {
+      GQuark q;
+
+      q = g_type_qname (object_type);
+      if (g_hash_table_contains (self->unhandled_filter, GUINT_TO_POINTER (q))) {
+        g_array_append_val (self->filter, object_type);
+        g_hash_table_remove (self->unhandled_filter, GUINT_TO_POINTER (q));
+
+        if (g_atomic_int_dec_and_test (&self->unhandled_filter_count))
+          g_clear_pointer (&self->unhandled_filter, g_hash_table_unref);
+
+        GST_OBJECT_UNLOCK (self);
+        return TRUE;
+      }
+    }
+    GST_OBJECT_UNLOCK (self);
+  }
+
+  len = self->filter->len;
+  for (i = 0; i < len; i++) {
+    GType type = g_array_index (self->filter, GType, i);
+
+    if (g_type_is_a (object_type, type))
+      return TRUE;
+  }
+
+  return FALSE;
+}
+
+#ifdef G_OS_UNIX
+/* The object may be destroyed when we log it using the checkpointing system so
+ * we have to save its type name */
+typedef struct
+{
+  gpointer object;
+  const gchar *type_name;
+} ObjectLog;
+
+static ObjectLog *
+object_log_new (gpointer obj)
+{
+  ObjectLog *o = g_slice_new (ObjectLog);
+
+  o->object = obj;
+
+  if (G_IS_OBJECT (obj))
+    o->type_name = G_OBJECT_TYPE_NAME (obj);
+  else
+    o->type_name = g_type_name (GST_MINI_OBJECT_TYPE (obj));
+
+  return o;
+}
+
+static void
+object_log_free (ObjectLog * obj)
+{
+  g_slice_free (ObjectLog, obj);
+}
+#endif /* G_OS_UNIX */
+
+static void
+handle_object_destroyed (GstLeaksTracer * self, gpointer object)
+{
+  GST_OBJECT_LOCK (self);
+  if (self->done) {
+    g_warning
+        ("object %p destroyed while the leaks tracer was finalizing. Some threads are still running?",
+        object);
+    goto out;
+  }
+
+  g_hash_table_remove (self->objects, object);
+#ifdef G_OS_UNIX
+  if (self->removed)
+    g_hash_table_add (self->removed, object_log_new (object));
+#endif /* G_OS_UNIX */
+out:
+  GST_OBJECT_UNLOCK (self);
+}
+
+static void
+object_weak_cb (gpointer data, GObject * object)
+{
+  GstLeaksTracer *self = data;
+
+  handle_object_destroyed (self, object);
+}
+
+static void
+mini_object_weak_cb (gpointer data, GstMiniObject * object)
+{
+  GstLeaksTracer *self = data;
+
+  handle_object_destroyed (self, object);
+}
+
+#ifdef HAVE_UNWIND
+#define BT_NAME_SIZE 256
+static gchar *
+generate_unwind_trace (void)
+{
+  unw_context_t ctx;
+  unw_cursor_t cursor;
+  GString *trace;
+
+  if (unw_getcontext (&ctx))
+    return NULL;
+
+  if (unw_init_local (&cursor, &ctx))
+    return NULL;
+
+  trace = g_string_new (NULL);
+  while (unw_step (&cursor) > 0) {
+    char name[BT_NAME_SIZE];
+    unw_word_t offp;
+    int ret;
+
+    ret = unw_get_proc_name (&cursor, name, BT_NAME_SIZE, &offp);
+    /* -UNW_ENOMEM is returned if name has been truncated */
+    if (ret != 0 && ret != -UNW_ENOMEM)
+      break;
+
+    g_string_append_printf (trace, "%s\n", name);
+  }
+
+  return g_string_free (trace, FALSE);
+}
+#endif /* HAVE_UNWIND */
+
+#ifdef HAVE_BACKTRACE
+#define BT_BUF_SIZE 100
+static gchar *
+generate_backtrace_trace (void)
+{
+  int j, nptrs;
+  void *buffer[BT_BUF_SIZE];
+  char **strings;
+  GString *trace;
+
+  trace = g_string_new (NULL);
+  nptrs = backtrace (buffer, BT_BUF_SIZE);
+
+  strings = backtrace_symbols (buffer, nptrs);
+  if (!strings)
+    return NULL;
+
+  for (j = 0; j < nptrs; j++)
+    g_string_append_printf (trace, "%s\n", strings[j]);
+
+  return g_string_free (trace, FALSE);
+}
+#endif /* HAVE_BACKTRACE */
+
+static gchar *
+generate_trace (void)
+{
+  gchar *trace = NULL;
+
+#ifdef HAVE_UNWIND
+  trace = generate_unwind_trace ();
+  if (trace)
+    return trace;
+#endif /* HAVE_UNWIND */
+
+#ifdef HAVE_BACKTRACE
+  trace = generate_backtrace_trace ();
+#endif /* HAVE_BACKTRACE */
+
+  return trace;
+}
+
+static void
+handle_object_created (GstLeaksTracer * self, gpointer object, GType type,
+    gboolean gobject)
+{
+  gchar *trace = NULL;
+
+  if (!should_handle_object_type (self, type))
+    return;
+
+  if (gobject)
+    g_object_weak_ref ((GObject *) object, object_weak_cb, self);
+  else
+    gst_mini_object_weak_ref (GST_MINI_OBJECT_CAST (object),
+        mini_object_weak_cb, self);
+
+  GST_OBJECT_LOCK (self);
+  if (self->log_stack_trace) {
+    trace = generate_trace ();
+  }
+
+  g_hash_table_insert (self->objects, object, trace);
+
+#ifdef G_OS_UNIX
+  if (self->added)
+    g_hash_table_add (self->added, object_log_new (object));
+#endif /* G_OS_UNIX */
+  GST_OBJECT_UNLOCK (self);
+}
+
+static void
+mini_object_created_cb (GstTracer * tracer, GstClockTime ts,
+    GstMiniObject * object)
+{
+  GstLeaksTracer *self = GST_LEAKS_TRACER_CAST (tracer);
+
+  handle_object_created (self, object, GST_MINI_OBJECT_TYPE (object), FALSE);
+}
+
+static void
+object_created_cb (GstTracer * tracer, GstClockTime ts, GstObject * object)
+{
+  GstLeaksTracer *self = GST_LEAKS_TRACER_CAST (tracer);
+  GType object_type = G_OBJECT_TYPE (object);
+
+  /* Can't track tracers as they may be disposed after the leak tracer itself */
+  if (g_type_is_a (object_type, GST_TYPE_TRACER))
+    return;
+
+  handle_object_created (self, object, object_type, TRUE);
+}
+
+static void
+gst_leaks_tracer_init (GstLeaksTracer * self)
+{
+  self->objects = g_hash_table_new_full (NULL, NULL, NULL, g_free);
+
+  if (g_getenv ("GST_LEAKS_TRACER_STACK_TRACE")) {
+    gchar *trace;
+
+    /* Test if we can retrieve backtrace */
+    trace = generate_trace ();
+    if (trace) {
+      self->log_stack_trace = TRUE;
+      g_free (trace);
+    } else {
+      g_warning ("Can't retrieve backtrace on this system");
+    }
+  }
+
+  g_queue_push_tail (&instances, self);
+}
+
+static void
+gst_leaks_tracer_constructed (GObject * object)
+{
+  GstLeaksTracer *self = GST_LEAKS_TRACER (object);
+  GstTracer *tracer = GST_TRACER (object);
+
+  set_filtering (self);
+
+  gst_tracing_register_hook (tracer, "mini-object-created",
+      G_CALLBACK (mini_object_created_cb));
+  gst_tracing_register_hook (tracer, "object-created",
+      G_CALLBACK (object_created_cb));
+
+  /* We rely on weak pointers rather than (mini-)object-destroyed hooks so we
+   * are notified of objects being destroyed even during the shuting down of
+   * the tracing system. */
+
+  ((GObjectClass *) gst_leaks_tracer_parent_class)->constructed (object);
+}
+
+typedef struct
+{
+  gpointer obj;
+  const gchar *type_name;
+  guint ref_count;
+  gchar *desc;
+  const gchar *trace;
+} Leak;
+
+/* The content of the returned Leak struct is valid until the self->objects
+ * hash table has been modified. */
+static Leak *
+leak_new (gpointer obj, GType type, guint ref_count, const gchar * trace)
+{
+  Leak *leak = g_slice_new (Leak);
+
+  leak->obj = obj;
+  leak->type_name = g_type_name (type);
+  leak->ref_count = ref_count;
+  leak->desc = gst_info_strdup_printf ("%" GST_PTR_FORMAT, obj);
+  leak->trace = trace;
+
+  return leak;
+}
+
+static void
+leak_free (Leak * leak)
+{
+  g_free (leak->desc);
+  g_slice_free (Leak, leak);
+}
+
+static gint
+sort_leaks (gconstpointer _a, gconstpointer _b)
+{
+  const Leak *a = _a, *b = _b;
+
+  return g_strcmp0 (a->type_name, b->type_name);
+}
+
+static GList *
+create_leaks_list (GstLeaksTracer * self)
+{
+  GList *l = NULL;
+  GHashTableIter iter;
+  gpointer obj, trace;
+
+  g_hash_table_iter_init (&iter, self->objects);
+  while (g_hash_table_iter_next (&iter, &obj, &trace)) {
+    GType type;
+    guint ref_count;
+
+    if (GST_IS_OBJECT (obj)) {
+      if (GST_OBJECT_FLAG_IS_SET (obj, GST_OBJECT_FLAG_MAY_BE_LEAKED))
+        continue;
+
+      type = G_OBJECT_TYPE (obj);
+      ref_count = ((GObject *) obj)->ref_count;
+    } else {
+      if (GST_MINI_OBJECT_FLAG_IS_SET (obj, GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED))
+        continue;
+
+      type = GST_MINI_OBJECT_TYPE (obj);
+      ref_count = ((GstMiniObject *) obj)->refcount;
+    }
+
+    l = g_list_prepend (l, leak_new (obj, type, ref_count, trace));
+  }
+
+  /* Sort leaks by type name so they are grouped together making the output
+   * easier to read */
+  l = g_list_sort (l, sort_leaks);
+
+  return l;
+}
+
+/* Return TRUE if at least one leaked object has been logged */
+static gboolean
+log_leaked (GstLeaksTracer * self)
+{
+  GList *leaks, *l;
+
+  leaks = create_leaks_list (self);
+  if (!leaks)
+    return FALSE;
+
+  for (l = leaks; l != NULL; l = g_list_next (l)) {
+    Leak *leak = l->data;
+
+    gst_tracer_record_log (tr_alive, leak->type_name, leak->obj, leak->desc,
+        leak->ref_count, leak->trace ? leak->trace : "");
+  }
+
+  g_list_free_full (leaks, (GDestroyNotify) leak_free);
+
+  return TRUE;
+}
+
+static void
+gst_leaks_tracer_finalize (GObject * object)
+{
+  GstLeaksTracer *self = GST_LEAKS_TRACER (object);
+  gboolean leaks;
+  GHashTableIter iter;
+  gpointer obj;
+
+  self->done = TRUE;
+
+  /* Tracers are destroyed as part of gst_deinit() so now is a good time to
+   * report all the objects which are still alive. */
+  leaks = log_leaked (self);
+
+  /* Remove weak references */
+  g_hash_table_iter_init (&iter, self->objects);
+  while (g_hash_table_iter_next (&iter, &obj, NULL)) {
+    if (GST_IS_OBJECT (obj))
+      g_object_weak_unref (obj, object_weak_cb, self);
+    else
+      gst_mini_object_weak_unref (GST_MINI_OBJECT_CAST (obj),
+          mini_object_weak_cb, self);
+  }
+
+  g_clear_pointer (&self->objects, g_hash_table_unref);
+  if (self->filter)
+    g_array_free (self->filter, TRUE);
+  g_clear_pointer (&self->added, g_hash_table_unref);
+  g_clear_pointer (&self->removed, g_hash_table_unref);
+  g_clear_pointer (&self->unhandled_filter, g_hash_table_unref);
+
+  g_queue_remove (&instances, self);
+
+  if (leaks)
+    g_warning ("Leaks detected");
+
+  ((GObjectClass *) gst_leaks_tracer_parent_class)->finalize (object);
+}
+
+#define RECORD_FIELD_TYPE_NAME \
+    "type-name", GST_TYPE_STRUCTURE, gst_structure_new ("value", \
+        "type", G_TYPE_GTYPE, G_TYPE_STRING, \
+        "related-to", GST_TYPE_TRACER_VALUE_SCOPE, GST_TRACER_VALUE_SCOPE_PROCESS, \
+        NULL)
+#define RECORD_FIELD_ADDRESS \
+    "address", GST_TYPE_STRUCTURE, gst_structure_new ("value", \
+        "type", G_TYPE_GTYPE, G_TYPE_POINTER, \
+        "related-to", GST_TYPE_TRACER_VALUE_SCOPE, \
+        GST_TRACER_VALUE_SCOPE_PROCESS, \
+        NULL)
+#define RECORD_FIELD_DESC \
+    "description", GST_TYPE_STRUCTURE, gst_structure_new ("value", \
+        "type", G_TYPE_GTYPE, G_TYPE_STRING, \
+        "related-to", GST_TYPE_TRACER_VALUE_SCOPE, GST_TRACER_VALUE_SCOPE_PROCESS, \
+        NULL)
+#define RECORD_FIELD_REF_COUNT \
+    "ref-count", GST_TYPE_STRUCTURE, gst_structure_new ("value", \
+        "type", G_TYPE_GTYPE, G_TYPE_UINT, \
+        "related-to", GST_TYPE_TRACER_VALUE_SCOPE, GST_TRACER_VALUE_SCOPE_PROCESS, \
+        NULL)
+#define RECORD_FIELD_TRACE \
+    "trace", GST_TYPE_STRUCTURE, gst_structure_new ("value", \
+        "type", G_TYPE_GTYPE, G_TYPE_STRING, \
+        "related-to", GST_TYPE_TRACER_VALUE_SCOPE, GST_TRACER_VALUE_SCOPE_PROCESS, \
+        NULL)
+
+#ifdef G_OS_UNIX
+static void
+sig_usr1_handler_foreach (gpointer data, gpointer user_data)
+{
+  GstLeaksTracer *tracer = data;
+
+  GST_OBJECT_LOCK (tracer);
+  GST_TRACE_OBJECT (tracer, "start listing currently alive objects");
+  log_leaked (tracer);
+  GST_TRACE_OBJECT (tracer, "done listing currently alive objects");
+  GST_OBJECT_UNLOCK (tracer);
+}
+
+static void
+sig_usr1_handler (G_GNUC_UNUSED int signal)
+{
+  g_queue_foreach (&instances, sig_usr1_handler_foreach, NULL);
+}
+
+static void
+log_checkpoint (GHashTable * hash, GstTracerRecord * record)
+{
+  GHashTableIter iter;
+  gpointer o;
+
+  g_hash_table_iter_init (&iter, hash);
+  while (g_hash_table_iter_next (&iter, &o, NULL)) {
+    ObjectLog *obj = o;
+
+    gst_tracer_record_log (record, obj->type_name, obj->object);
+  }
+}
+
+static void
+do_checkpoint (GstLeaksTracer * self)
+{
+  GST_TRACE_OBJECT (self, "listing objects created since last checkpoint");
+  log_checkpoint (self->added, tr_added);
+  GST_TRACE_OBJECT (self, "listing objects removed since last checkpoint");
+  log_checkpoint (self->removed, tr_removed);
+
+  g_hash_table_remove_all (self->added);
+  g_hash_table_remove_all (self->removed);
+}
+
+static void
+sig_usr2_handler_foreach (gpointer data, gpointer user_data)
+{
+  GstLeaksTracer *tracer = data;
+
+  GST_OBJECT_LOCK (tracer);
+
+  if (!tracer->added) {
+    GST_TRACE_OBJECT (tracer, "First checkpoint, start tracking objects");
+
+    tracer->added = g_hash_table_new_full (NULL, NULL,
+        (GDestroyNotify) object_log_free, NULL);
+    tracer->removed = g_hash_table_new_full (NULL, NULL,
+        (GDestroyNotify) object_log_free, NULL);
+  } else {
+    do_checkpoint (tracer);
+  }
+
+  GST_OBJECT_UNLOCK (tracer);
+}
+
+static void
+sig_usr2_handler (G_GNUC_UNUSED int signal)
+{
+  g_queue_foreach (&instances, sig_usr2_handler_foreach, NULL);
+}
+
+static void
+setup_signals (void)
+{
+  tr_added = gst_tracer_record_new ("object-added.class",
+      RECORD_FIELD_TYPE_NAME, RECORD_FIELD_ADDRESS, NULL);
+  GST_OBJECT_FLAG_SET (tr_added, GST_OBJECT_FLAG_MAY_BE_LEAKED);
+
+  tr_removed = gst_tracer_record_new ("object-removed.class",
+      RECORD_FIELD_TYPE_NAME, RECORD_FIELD_ADDRESS, NULL);
+  GST_OBJECT_FLAG_SET (tr_removed, GST_OBJECT_FLAG_MAY_BE_LEAKED);
+
+  signal (SIGUSR1, sig_usr1_handler);
+  signal (SIGUSR2, sig_usr2_handler);
+}
+#endif /* G_OS_UNIX */
+
+static void
+gst_leaks_tracer_class_init (GstLeaksTracerClass * klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->constructed = gst_leaks_tracer_constructed;
+  gobject_class->finalize = gst_leaks_tracer_finalize;
+
+  tr_alive = gst_tracer_record_new ("object-alive.class",
+      RECORD_FIELD_TYPE_NAME, RECORD_FIELD_ADDRESS, RECORD_FIELD_DESC,
+      RECORD_FIELD_REF_COUNT, RECORD_FIELD_TRACE, NULL);
+  GST_OBJECT_FLAG_SET (tr_alive, GST_OBJECT_FLAG_MAY_BE_LEAKED);
+
+  if (g_getenv ("GST_LEAKS_TRACER_SIG")) {
+#ifdef G_OS_UNIX
+    setup_signals ();
+#else
+    g_warning ("System doesn't support POSIX signals");
+#endif /* G_OS_UNIX */
+  }
+}
diff --git a/plugins/tracers/gstleaks.h b/plugins/tracers/gstleaks.h
new file mode 100644
index 0000000..6dd3def
--- /dev/null
+++ b/plugins/tracers/gstleaks.h
@@ -0,0 +1,82 @@
+/* GStreamer
+ * Copyright (C) 2016 Collabora Ltd. <guillaume.desmottes@collabora.co.uk>
+ *
+ * gstleaks.c: tracing module detecting object leaks
+ *
+ * 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_LEAKS_TRACER_H__
+#define __GST_LEAKS_TRACER_H__
+
+#include <gst/gst.h>
+#include <gst/gsttracer.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_LEAKS_TRACER \
+  (gst_leaks_tracer_get_type())
+#define GST_LEAKS_TRACER(obj) \
+  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_LEAKS_TRACER,GstLeaksTracer))
+#define GST_LEAKS_TRACER_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_LEAKS_TRACER,GstLeaksTracerClass))
+#define GST_IS_LEAKS_TRACER(obj) \
+  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_LEAKS_TRACER))
+#define GST_IS_LEAKS_TRACER_CLASS(klass) \
+  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_LEAKS_TRACER))
+#define GST_LEAKS_TRACER_CAST(obj) ((GstLeaksTracer *)(obj))
+
+typedef struct _GstLeaksTracer GstLeaksTracer;
+typedef struct _GstLeaksTracerClass GstLeaksTracerClass;
+
+/**
+ * GstLeaksTracer:
+ *
+ * Opaque #GstLeaksTracer data structure
+ */
+struct _GstLeaksTracer {
+  GstTracer parent;
+
+  /*< private >*/
+  /* gpointer (object currently alive) -> gchar * (its creation trace, or
+   * NULL). Protected by object lock */
+  GHashTable *objects;
+  /* array of GType used as filtering */
+  GArray *filter;
+  /* Set of owned ObjectLog.  Protected by object lock */
+  GHashTable *added;
+  /* Set of owned ObjectLog.  Protected by object lock */
+  GHashTable *removed;
+  /* If not NULL, contain a set of GQuark representing type filter not
+   * (yet?) known by the type system.
+   * Protected by object lock. */
+  GHashTable *unhandled_filter;
+  /* The number of elements in unhandled_filter */
+  gint unhandled_filter_count;
+  gboolean done;
+
+  gboolean log_stack_trace;
+};
+
+struct _GstLeaksTracerClass {
+  GstTracerClass parent_class;
+};
+
+G_GNUC_INTERNAL GType gst_leaks_tracer_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_LEAKS_TRACER_H__ */
diff --git a/plugins/tracers/gstrusage.c b/plugins/tracers/gstrusage.c
index c4110ec..9df6b69 100644
--- a/plugins/tracers/gstrusage.c
+++ b/plugins/tracers/gstrusage.c
@@ -85,7 +85,8 @@
 static void
 free_trace_values (GstTraceValues * self)
 {
-  g_queue_free_full (&self->values, free_trace_value);
+  g_queue_foreach (&self->values, (GFunc) free_trace_value, NULL);
+  g_queue_clear (&self->values);
   g_slice_free (GstTraceValues, self);
 }
 
diff --git a/plugins/tracers/gsttracers.c b/plugins/tracers/gsttracers.c
index 010c185..b03e25a 100644
--- a/plugins/tracers/gsttracers.c
+++ b/plugins/tracers/gsttracers.c
@@ -28,6 +28,7 @@
 #include "gstlog.h"
 #include "gstrusage.h"
 #include "gststats.h"
+#include "gstleaks.h"
 
 static gboolean
 plugin_init (GstPlugin * plugin)
@@ -44,6 +45,8 @@
 #endif
   if (!gst_tracer_register (plugin, "stats", gst_stats_tracer_get_type ()))
     return FALSE;
+  if (!gst_tracer_register (plugin, "leaks", gst_leaks_tracer_get_type ()))
+    return FALSE;
   return TRUE;
 }
 
diff --git a/po/POTFILES.in b/po/POTFILES.in
index ef532c7..fe3d9c6 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -7,7 +7,6 @@
 gst/gstpipeline.c
 gst/gstregistry.c
 gst/gsttaglist.c
-gst/gsttrace.c
 gst/gsturi.c
 gst/gstutils.c
 gst/parse/grammar.y
diff --git a/po/af.gmo b/po/af.gmo
index 319746e..5dd4c26 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index 042c686..491b313 100644
--- a/po/af.po
+++ b/po/af.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.9.7\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2005-12-05 11:45+0200\n"
 "Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
 "Language-Team: Afrikaans <i18n@af.org.za>\n"
@@ -932,10 +932,6 @@
 msgid "Internal data flow problem."
 msgstr "Interne datavloeiprobleem."
 
-#, fuzzy
-msgid "Internal data stream error."
-msgstr "Interne datavloeifout."
-
 msgid "Internal data flow error."
 msgstr "Interne datavloeifout."
 
@@ -1329,6 +1325,10 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Pyplyn word gestel na NULL ...\n"
 
+#, fuzzy
+#~ msgid "Internal data stream error."
+#~ msgstr "Interne datavloeifout."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Moenie statusinligting van TIPE wys nie"
 
diff --git a/po/az.gmo b/po/az.gmo
index 168c14d..69033ad 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index 02c00b2..e4df89d 100644
--- a/po/az.po
+++ b/po/az.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-0.8.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2004-03-19 18:40+0200\n"
 "Last-Translator: Metin Amiroff <metin@karegen.com>\n"
 "Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
@@ -883,9 +883,6 @@
 msgid "Internal data flow problem."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr ""
-
 msgid "Internal data flow error."
 msgstr ""
 
diff --git a/po/be.gmo b/po/be.gmo
index b964f54..0b2ad0e 100644
--- a/po/be.gmo
+++ b/po/be.gmo
Binary files differ
diff --git a/po/be.po b/po/be.po
index feeecbe..d158391 100644
--- a/po/be.po
+++ b/po/be.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.9.7\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2006-01-18 22:26+0200\n"
 "Last-Translator: Ales Nyakhaychyk <nab@mail.by>\n"
 "Language-Team: Belarusian <i18n@mova.org>\n"
@@ -891,9 +891,6 @@
 msgid "Internal data flow problem."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr ""
-
 msgid "Internal data flow error."
 msgstr ""
 
diff --git a/po/bg.gmo b/po/bg.gmo
index b3ba84b..3d6c9db 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 9b818dd..f0dc544 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-02-21 21:02+0200\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@ludost.net>\n"
@@ -922,9 +922,6 @@
 msgid "Internal data flow problem."
 msgstr "Вътрешен проблем на потока от данни."
 
-msgid "Internal data stream error."
-msgstr "Вътрешна грешка на потока от данни."
-
 msgid "Internal data flow error."
 msgstr "Вътрешна грешка на потока от данни."
 
@@ -1324,3 +1321,6 @@
 
 msgid "Freeing pipeline ...\n"
 msgstr "Конвейерът се освобождава…\n"
+
+#~ msgid "Internal data stream error."
+#~ msgstr "Вътрешна грешка на потока от данни."
diff --git a/po/ca.gmo b/po/ca.gmo
index 2ec1a7a..e84458f 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index dcf1957..c1bfd6a 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.30.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2010-11-04 19:41+0100\n"
 "Last-Translator: Jordi Mallach <jordi@sindominio.net>\n"
 "Language-Team: Catalan <ca@dodds.net>\n"
@@ -933,9 +933,6 @@
 msgid "Internal data flow problem."
 msgstr "Hi ha un problema intern de flux de dades."
 
-msgid "Internal data stream error."
-msgstr "S'ha produït un error intern de flux de dades."
-
 msgid "Internal data flow error."
 msgstr "S'ha produït un error intern de flux de dades."
 
@@ -1340,6 +1337,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "S'està alliberant el conducte…\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "S'ha produït un error intern de flux de dades."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "No mostres informació d'estat de TIPUS"
 
diff --git a/po/cs.gmo b/po/cs.gmo
index 23d89c7..8bbd2d2 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 155664a..ad4d531 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-03-03 15:31+0100\n"
 "Last-Translator: Marek Černocký <marek@manet.cz>\n"
 "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
@@ -922,9 +922,6 @@
 msgid "Internal data flow problem."
 msgstr "Interní problém toku dat."
 
-msgid "Internal data stream error."
-msgstr "Interní chyba proudu dat."
-
 msgid "Internal data flow error."
 msgstr "Interní chyba toku dat."
 
@@ -1334,3 +1331,6 @@
 
 msgid "Freeing pipeline ...\n"
 msgstr "Uvolňuje se roura…\n"
+
+#~ msgid "Internal data stream error."
+#~ msgstr "Interní chyba proudu dat."
diff --git a/po/da.gmo b/po/da.gmo
index 2658f67..bf02d2f 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index f56e6c0..58170d1 100644
--- a/po/da.po
+++ b/po/da.po
@@ -4,12 +4,14 @@
 # Mogens Jaeger <mogensjaeger@gmail.com>, 2007, 2010, 2013, 2014.
 # Joe Hansen <joedalton2@yahoo.dk>, 2015, 2016.
 #
+# conductor -> dirigent (https://lists.freedesktop.org/archives/gstreamer-commits/2016-February/092542.html)
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
-"PO-Revision-Date: 2016-03-27 13:26+0200\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
+"PO-Revision-Date: 2016-06-25 13:26+0200\n"
 "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
 "Language: da\n"
@@ -455,10 +457,14 @@
 msgstr "person(er) der komponerede optagelsen"
 
 msgid "conductor"
-msgstr "konduktør"
+msgstr "dirigent"
 
+# Jeg tror "refinement" refererer til at de skelner bedre mellem hvem
+# der dirigerer og opfører.  F.eks. står der oftest navne på dirigent
+# samt solister i koncerter, og/eller de vigtigste sangere (opera osv.)
+# Måske man kan erstatte det med -angivelse eller noget andet indirekte.  Ideer?
 msgid "conductor/performer refinement"
-msgstr "konduktør/optrædende-raffinement"
+msgstr "dirigent/opfører-angivelse"
 
 msgid "duration"
 msgstr "varighed"
@@ -857,7 +863,7 @@
 
 #, c-format
 msgid "link has no sink [source=%s@%p]"
-msgstr "Henvisningen har ingen datakanal [kilde=%s@%p]"
+msgstr "Henvisningen har ingen destination [kilde=%s@%p]"
 
 #, c-format
 msgid "no property \"%s\" in element \"%s\""
@@ -921,17 +927,17 @@
 msgid "Internal data flow problem."
 msgstr "Intern datastrømsproblem."
 
-msgid "Internal data stream error."
-msgstr "Intern datastrømsfejl."
-
 msgid "Internal data flow error."
 msgstr "Intern datastrømsfejl."
 
 msgid "Internal clock error."
 msgstr "Fejl i internt ur."
 
+# Ingen idé om hvad de mener med map her, men "behandling" eller
+# muligvis kortlægge kunne også dække.  Men det kan sagtens ske at
+# oversætte virker også...
 msgid "Failed to map buffer."
-msgstr "Fejlede ved oversættelse af buffer."
+msgstr "Fejlede ved behandling af buffer."
 
 msgid "Filter caps"
 msgstr "Filterkapabilitet"
@@ -1322,3 +1328,6 @@
 
 msgid "Freeing pipeline ...\n"
 msgstr "Rørledning frigøres ...\n"
+
+#~ msgid "Internal data stream error."
+#~ msgstr "Intern datastrømsfejl."
diff --git a/po/de.gmo b/po/de.gmo
index f5cfd85..07d4ac6 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 6703dd0..b147825 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,4 +1,4 @@
-# German translation for gstreamer 1.7.2
+# German translation for gstreamer 1.7.90
 # Copyright (C) 2004 Free Software Foundation, Inc.
 # This file is distributed under the same license as the gstreamer package.
 #
@@ -7,18 +7,19 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 1.7.2\n"
+"Project-Id-Version: gstreamer 1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
-"PO-Revision-Date: 2016-02-22 23:41+0100\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
+"PO-Revision-Date: 2016-09-28 21:13+0200\n"
 "Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
 "Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.8.7\n"
+"X-Generator: Poedit 1.8.9\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 msgid "Print the GStreamer version"
@@ -473,10 +474,10 @@
 msgstr "Für die Aufnahme verantwortliche Person(en)"
 
 msgid "conductor"
-msgstr ""
+msgstr "Dirigent"
 
 msgid "conductor/performer refinement"
-msgstr ""
+msgstr "Detaillierung Dirigent/Darsteller"
 
 msgid "duration"
 msgstr "Dauer"
@@ -950,9 +951,6 @@
 msgid "Internal data flow problem."
 msgstr "Internes Problem im Datenfluss."
 
-msgid "Internal data stream error."
-msgstr "Interner Fehler im Datenstrom."
-
 msgid "Internal data flow error."
 msgstr "Interner Fehler im Datenfluss."
 
@@ -1350,6 +1348,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Leitung wird geleert ...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Interner Fehler im Datenstrom."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Zustandsinformation der Art ART nicht ausgeben"
 
diff --git a/po/el.gmo b/po/el.gmo
index 4b46c75..ea4a86c 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index 815b9ee..8460467 100644
--- a/po/el.po
+++ b/po/el.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-0.10.30.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2010-11-29 11:14+0200\n"
 "Last-Translator: Michael Kotsarinis <mk73628@gmail.com>\n"
 "Language-Team: Greek <team@lists.gnome.gr>\n"
@@ -945,9 +945,6 @@
 msgid "Internal data flow problem."
 msgstr "Εσωτερικό πρόβλημα ροής δεδομένων."
 
-msgid "Internal data stream error."
-msgstr "Εσωτερικό σφάλμα ροής δεδομένων."
-
 msgid "Internal data flow error."
 msgstr "Εσωτερικό σφάλμα ροής δεδομένων."
 
@@ -1344,6 +1341,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Αποδέσμευση της διασωλήνωσης …\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Εσωτερικό σφάλμα ροής δεδομένων."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Να μην εξάγεται πληροφορία κατάστασης εξόδου του TYPE"
 
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index aade0e1..6426589 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 14b4e23..df4a338 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.8.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2004-04-26 10:36-0400\n"
 "Last-Translator: Gareth Owen <gowen72@yahoo.com>\n"
 "Language-Team: English (British) <en_gb@li.org>\n"
@@ -936,9 +936,6 @@
 msgid "Internal data flow problem."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr ""
-
 msgid "Internal data flow error."
 msgstr ""
 
diff --git a/po/eo.gmo b/po/eo.gmo
index 441eddb..5c005a3 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index e927dc3..b4e9e1c 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2011-06-04 21:11+0100\n"
 "Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
@@ -873,9 +873,6 @@
 msgid "Internal data flow problem."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "Interna datumflu-eraro."
-
 msgid "Internal data flow error."
 msgstr ""
 
@@ -1258,6 +1255,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr ""
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Interna datumflu-eraro."
+
 #~ msgid "TYPE1,TYPE2,..."
 #~ msgstr "TIPO1,TIPO2,..."
 
diff --git a/po/es.gmo b/po/es.gmo
index c322318..e3986e9 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index e5f75d9..84e80a4 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.32.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2011-10-02 15:45+0200\n"
 "Last-Translator: Jorge González González <aloriel@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
@@ -936,9 +936,6 @@
 msgid "Internal data flow problem."
 msgstr "Problema en el flujo de datos interno."
 
-msgid "Internal data stream error."
-msgstr "Error interno de flujo de datos."
-
 msgid "Internal data flow error."
 msgstr "Error en el flujo de datos interno."
 
@@ -1336,6 +1333,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Liberando la tubería…\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Error interno de flujo de datos."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "No sacar la salida de la información de estado del TIPO"
 
diff --git a/po/eu.gmo b/po/eu.gmo
index e86e257..f868667 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index 0801350..1b2ea1c 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-0.10.26.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2010-03-25 13:10+0100\n"
 "Last-Translator: Mikel Olasagasti Uranga <hey_neken@mundurat.net>\n"
 "Language-Team: Basque <translation-team-eu@lists.sourceforge.net>\n"
@@ -935,9 +935,6 @@
 msgid "Internal data flow problem."
 msgstr "Datu-fluxuaren barne-arazoa."
 
-msgid "Internal data stream error."
-msgstr "Datu-korrontearen barne-errorea."
-
 msgid "Internal data flow error."
 msgstr "Datu-fluxuaren barne-errorea."
 
@@ -1334,6 +1331,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Kanalizazioa askatzen...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Datu-korrontearen barne-errorea."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Ez erakutsi MOTA hauetako egoera-informazioa:"
 
diff --git a/po/fi.gmo b/po/fi.gmo
index 869ddc8..bba61ba 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 5b34a2e..4706b99 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -12,7 +12,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.30.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2010-11-17 23:10+0200\n"
 "Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -931,9 +931,6 @@
 msgid "Internal data flow problem."
 msgstr "Sisäinen tiedon virtausongelma."
 
-msgid "Internal data stream error."
-msgstr "Sisäinen tietovirtavirhe."
-
 msgid "Internal data flow error."
 msgstr "Sisäinen tiedon virtausvirhe."
 
@@ -1332,6 +1329,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Vapautetaan liukuhihna...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Sisäinen tietovirtavirhe."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Älä tulosta tilatietoa TYYPPI"
 
diff --git a/po/fr.gmo b/po/fr.gmo
index 9c8a1df..0fa2d90 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 7d461da..8ea1e9e 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-03-04 13:08+0100\n"
 "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -930,9 +930,6 @@
 msgid "Internal data flow problem."
 msgstr "Problème interne de flux de données."
 
-msgid "Internal data stream error."
-msgstr "Erreur interne de flux de données."
-
 msgid "Internal data flow error."
 msgstr "Erreur interne de flux de données."
 
@@ -1327,3 +1324,6 @@
 
 msgid "Freeing pipeline ...\n"
 msgstr "Libération du pipeline…\n"
+
+#~ msgid "Internal data stream error."
+#~ msgstr "Erreur interne de flux de données."
diff --git a/po/gl.gmo b/po/gl.gmo
index ba21616..9273e7b 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 00aae8a..374563f 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2012-12-15 03:29+0200\n"
 "Last-Translator: Fran Dieguez <frandieguez@ubuntu.com>\n"
 "Language-Team: Galician <proxecto@trasno.net>\n"
@@ -924,9 +924,6 @@
 msgid "Internal data flow problem."
 msgstr "Hai un problema no fluxo interno de datos."
 
-msgid "Internal data stream error."
-msgstr "Produciuse un erro no fluxo interno de datos."
-
 msgid "Internal data flow error."
 msgstr "Produciuse un erro no fluxo interno de datos."
 
@@ -1322,6 +1319,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Liberando a tubería...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Produciuse un erro no fluxo interno de datos."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Non sacar a saída da información de estado do TIPO"
 
diff --git a/po/gstreamer-1.0.pot b/po/gstreamer-1.0.pot
index c376dd7..28ea9ba 100644
--- a/po/gstreamer-1.0.pot
+++ b/po/gstreamer-1.0.pot
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gstreamer 1.8.3\n"
+"Project-Id-Version: gstreamer 1.9.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,94 +18,94 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: gst/gst.c:244
+#: gst/gst.c:243
 msgid "Print the GStreamer version"
 msgstr ""
 
-#: gst/gst.c:246
+#: gst/gst.c:245
 msgid "Make all warnings fatal"
 msgstr ""
 
-#: gst/gst.c:250
+#: gst/gst.c:249
 msgid "Print available debug categories and exit"
 msgstr ""
 
-#: gst/gst.c:254
+#: gst/gst.c:253
 msgid ""
 "Default debug level from 1 (only error) to 9 (anything) or 0 for no output"
 msgstr ""
 
-#: gst/gst.c:256
+#: gst/gst.c:255
 msgid "LEVEL"
 msgstr ""
 
-#: gst/gst.c:258
+#: gst/gst.c:257
 msgid ""
 "Comma-separated list of category_name:level pairs to set specific levels for "
 "the individual categories. Example: GST_AUTOPLUG:5,GST_ELEMENT_*:3"
 msgstr ""
 
-#: gst/gst.c:261
+#: gst/gst.c:260
 msgid "LIST"
 msgstr ""
 
-#: gst/gst.c:263
+#: gst/gst.c:262
 msgid "Disable colored debugging output"
 msgstr ""
 
-#: gst/gst.c:267
+#: gst/gst.c:266
 msgid ""
 "Changes coloring mode of the debug log. Possible modes: off, on, disable, "
 "auto, unix"
 msgstr ""
 
-#: gst/gst.c:271
+#: gst/gst.c:270
 msgid "Disable debugging"
 msgstr ""
 
-#: gst/gst.c:275
+#: gst/gst.c:274
 msgid "Enable verbose plugin loading diagnostics"
 msgstr ""
 
-#: gst/gst.c:279
+#: gst/gst.c:278
 msgid "Colon-separated paths containing plugins"
 msgstr ""
 
-#: gst/gst.c:279
+#: gst/gst.c:278
 msgid "PATHS"
 msgstr ""
 
-#: gst/gst.c:282
+#: gst/gst.c:281
 msgid ""
 "Comma-separated list of plugins to preload in addition to the list stored in "
 "environment variable GST_PLUGIN_PATH"
 msgstr ""
 
-#: gst/gst.c:284
+#: gst/gst.c:283
 msgid "PLUGINS"
 msgstr ""
 
-#: gst/gst.c:287
+#: gst/gst.c:286
 msgid "Disable trapping of segmentation faults during plugin loading"
 msgstr ""
 
-#: gst/gst.c:292
+#: gst/gst.c:291
 msgid "Disable updating the registry"
 msgstr ""
 
-#: gst/gst.c:297
+#: gst/gst.c:296
 msgid "Disable spawning a helper process while scanning the registry"
 msgstr ""
 
-#: gst/gst.c:302
+#: gst/gst.c:301
 msgid "GStreamer Options"
 msgstr ""
 
-#: gst/gst.c:303
+#: gst/gst.c:302
 msgid "Show GStreamer Options"
 msgstr ""
 
-#: gst/gst.c:892
+#: gst/gst.c:921
 msgid "Unknown option"
 msgstr ""
 
@@ -310,7 +310,7 @@
 msgid "Selected clock cannot be used in pipeline."
 msgstr ""
 
-#: gst/gstregistry.c:1694
+#: gst/gstregistry.c:1709
 #, c-format
 msgid "Error writing registry cache to %s: %s"
 msgstr ""
@@ -1034,12 +1034,12 @@
 msgid "URI scheme '%s' not supported"
 msgstr ""
 
-#: gst/gstutils.c:2426 tools/gst-launch.c:324
+#: gst/gstutils.c:2485 tools/gst-launch.c:325
 #, c-format
 msgid "ERROR: from element %s: %s\n"
 msgstr ""
 
-#: gst/gstutils.c:2428 tools/gst-launch.c:326 tools/gst-launch.c:670
+#: gst/gstutils.c:2487 tools/gst-launch.c:327 tools/gst-launch.c:671
 #, c-format
 msgid ""
 "Additional debug info:\n"
@@ -1127,30 +1127,23 @@
 msgid "empty pipeline not allowed"
 msgstr ""
 
-#: libs/gst/base/gstbasesink.c:2853
+#: libs/gst/base/gstbasesink.c:2833
 msgid "A lot of buffers are being dropped."
 msgstr ""
 
-#: libs/gst/base/gstbasesink.c:3382
+#: libs/gst/base/gstbasesink.c:3332
 msgid "Internal data flow problem."
 msgstr ""
 
-#: libs/gst/base/gstbasesink.c:4095
-msgid "Internal data stream error."
-msgstr ""
-
-#: libs/gst/base/gstbasesink.c:4105 libs/gst/base/gstbasesrc.c:2947
-#: libs/gst/base/gstbasesrc.c:2956 plugins/elements/gstdownloadbuffer.c:1349
-#: plugins/elements/gstqueue.c:990 plugins/elements/gstqueue.c:1539
-#: plugins/elements/gstqueue2.c:2516 plugins/elements/gstqueue2.c:3008
+#: libs/gst/base/gstbasesink.c:4043 libs/gst/base/gstbasesrc.c:2958
 msgid "Internal data flow error."
 msgstr ""
 
-#: libs/gst/base/gstbasesrc.c:2546
+#: libs/gst/base/gstbasesrc.c:2550
 msgid "Internal clock error."
 msgstr ""
 
-#: libs/gst/base/gstbasesrc.c:2574
+#: libs/gst/base/gstbasesrc.c:2578
 msgid "Failed to map buffer."
 msgstr ""
 
@@ -1172,22 +1165,22 @@
 msgid "Filter caps change behaviour"
 msgstr ""
 
-#: plugins/elements/gstdownloadbuffer.c:920 plugins/elements/gstqueue2.c:1655
+#: plugins/elements/gstdownloadbuffer.c:920 plugins/elements/gstqueue2.c:1710
 msgid "No Temp directory specified."
 msgstr ""
 
-#: plugins/elements/gstdownloadbuffer.c:926 plugins/elements/gstqueue2.c:1661
+#: plugins/elements/gstdownloadbuffer.c:926 plugins/elements/gstqueue2.c:1716
 #, c-format
 msgid "Could not create temp file \"%s\"."
 msgstr ""
 
 #: plugins/elements/gstdownloadbuffer.c:934 plugins/elements/gstfilesrc.c:534
-#: plugins/elements/gstqueue2.c:1669
+#: plugins/elements/gstqueue2.c:1724
 #, c-format
 msgid "Could not open file \"%s\" for reading."
 msgstr ""
 
-#: plugins/elements/gstdownloadbuffer.c:1258 plugins/elements/gstqueue2.c:2089
+#: plugins/elements/gstdownloadbuffer.c:1258 plugins/elements/gstqueue2.c:2144
 msgid "Error while writing to download file."
 msgstr ""
 
@@ -1300,51 +1293,51 @@
 msgid "changeable only in NULL or READY state"
 msgstr ""
 
-#: tools/gst-inspect.c:910
+#: tools/gst-inspect.c:909
 msgid "Blacklisted files:"
 msgstr ""
 
-#: tools/gst-inspect.c:922 tools/gst-inspect.c:1011
+#: tools/gst-inspect.c:921 tools/gst-inspect.c:1010
 msgid "Total count: "
 msgstr ""
 
-#: tools/gst-inspect.c:923
+#: tools/gst-inspect.c:922
 #, c-format
 msgid "%d blacklisted file"
 msgid_plural "%d blacklisted files"
 msgstr[0] ""
 msgstr[1] ""
 
-#: tools/gst-inspect.c:1012
+#: tools/gst-inspect.c:1011
 #, c-format
 msgid "%d plugin"
 msgid_plural "%d plugins"
 msgstr[0] ""
 msgstr[1] ""
 
-#: tools/gst-inspect.c:1015
+#: tools/gst-inspect.c:1014
 #, c-format
 msgid "%d blacklist entry"
 msgid_plural "%d blacklist entries"
 msgstr[0] ""
 msgstr[1] ""
 
-#: tools/gst-inspect.c:1020
+#: tools/gst-inspect.c:1019
 #, c-format
 msgid "%d feature"
 msgid_plural "%d features"
 msgstr[0] ""
 msgstr[1] ""
 
-#: tools/gst-inspect.c:1469
+#: tools/gst-inspect.c:1468
 msgid "Print all elements"
 msgstr ""
 
-#: tools/gst-inspect.c:1471
+#: tools/gst-inspect.c:1470
 msgid "Print list of blacklisted files"
 msgstr ""
 
-#: tools/gst-inspect.c:1473
+#: tools/gst-inspect.c:1472
 msgid ""
 "Print a machine-parsable list of features the specified plugin or all "
 "plugins provide.\n"
@@ -1352,284 +1345,284 @@
 "automatic plugin installation mechanisms"
 msgstr ""
 
-#: tools/gst-inspect.c:1478
+#: tools/gst-inspect.c:1477
 msgid "List the plugin contents"
 msgstr ""
 
-#: tools/gst-inspect.c:1480
+#: tools/gst-inspect.c:1479
 msgid "Check if the specified element or plugin exists"
 msgstr ""
 
-#: tools/gst-inspect.c:1483
+#: tools/gst-inspect.c:1482
 msgid ""
 "When checking if an element or plugin exists, also check that its version is "
 "at least the version specified"
 msgstr ""
 
-#: tools/gst-inspect.c:1487
+#: tools/gst-inspect.c:1486
 msgid "Print supported URI schemes, with the elements that implement them"
 msgstr ""
 
-#: tools/gst-inspect.c:1632
+#: tools/gst-inspect.c:1634
 #, c-format
 msgid "Could not load plugin file: %s\n"
 msgstr ""
 
-#: tools/gst-inspect.c:1637
+#: tools/gst-inspect.c:1639
 #, c-format
 msgid "No such element or plugin '%s'\n"
 msgstr ""
 
-#: tools/gst-launch.c:251
+#: tools/gst-launch.c:252
 msgid "Index statistics"
 msgstr ""
 
-#: tools/gst-launch.c:551
+#: tools/gst-launch.c:552
 #, c-format
 msgid "Got message #%u from element \"%s\" (%s): "
 msgstr ""
 
-#: tools/gst-launch.c:555
+#: tools/gst-launch.c:556
 #, c-format
 msgid "Got message #%u from pad \"%s:%s\" (%s): "
 msgstr ""
 
-#: tools/gst-launch.c:559
+#: tools/gst-launch.c:560
 #, c-format
 msgid "Got message #%u from object \"%s\" (%s): "
 msgstr ""
 
-#: tools/gst-launch.c:563
+#: tools/gst-launch.c:564
 #, c-format
 msgid "Got message #%u (%s): "
 msgstr ""
 
-#: tools/gst-launch.c:595
+#: tools/gst-launch.c:596
 #, c-format
 msgid "Got EOS from element \"%s\".\n"
 msgstr ""
 
-#: tools/gst-launch.c:604
+#: tools/gst-launch.c:605
 #, c-format
 msgid "FOUND TAG      : found by element \"%s\".\n"
 msgstr ""
 
-#: tools/gst-launch.c:607
+#: tools/gst-launch.c:608
 #, c-format
 msgid "FOUND TAG      : found by pad \"%s:%s\".\n"
 msgstr ""
 
-#: tools/gst-launch.c:610
+#: tools/gst-launch.c:611
 #, c-format
 msgid "FOUND TAG      : found by object \"%s\".\n"
 msgstr ""
 
-#: tools/gst-launch.c:613
+#: tools/gst-launch.c:614
 msgid "FOUND TAG\n"
 msgstr ""
 
-#: tools/gst-launch.c:628
+#: tools/gst-launch.c:629
 #, c-format
 msgid "FOUND TOC      : found by element \"%s\".\n"
 msgstr ""
 
-#: tools/gst-launch.c:631
+#: tools/gst-launch.c:632
 #, c-format
 msgid "FOUND TOC      : found by object \"%s\".\n"
 msgstr ""
 
-#: tools/gst-launch.c:634
+#: tools/gst-launch.c:635
 msgid "FOUND TOC\n"
 msgstr ""
 
-#: tools/gst-launch.c:651
+#: tools/gst-launch.c:652
 #, c-format
 msgid ""
 "INFO:\n"
 "%s\n"
 msgstr ""
 
-#: tools/gst-launch.c:668
+#: tools/gst-launch.c:669
 #, c-format
 msgid "WARNING: from element %s: %s\n"
 msgstr ""
 
-#: tools/gst-launch.c:703
+#: tools/gst-launch.c:704
 msgid "Prerolled, waiting for buffering to finish...\n"
 msgstr ""
 
-#: tools/gst-launch.c:707
+#: tools/gst-launch.c:708
 msgid "Prerolled, waiting for progress to finish...\n"
 msgstr ""
 
-#: tools/gst-launch.c:719
+#: tools/gst-launch.c:720
 msgid "buffering..."
 msgstr ""
 
-#: tools/gst-launch.c:730
+#: tools/gst-launch.c:731
 msgid "Done buffering, setting pipeline to PLAYING ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:738
+#: tools/gst-launch.c:739
 msgid "Buffering, setting pipeline to PAUSED ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:747
+#: tools/gst-launch.c:748
 msgid "Redistribute latency...\n"
 msgstr ""
 
-#: tools/gst-launch.c:758
+#: tools/gst-launch.c:759
 #, c-format
 msgid "Setting state to %s as requested by %s...\n"
 msgstr ""
 
-#: tools/gst-launch.c:774
+#: tools/gst-launch.c:775
 msgid "Interrupt: Stopping pipeline ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:803
+#: tools/gst-launch.c:804
 #, c-format
 msgid "Progress: (%s) %s\n"
 msgstr ""
 
-#: tools/gst-launch.c:816
+#: tools/gst-launch.c:817
 #, c-format
 msgid "Missing element: %s\n"
 msgstr ""
 
-#: tools/gst-launch.c:830
+#: tools/gst-launch.c:831
 #, c-format
 msgid "Got context from element '%s': %s=%s\n"
 msgstr ""
 
-#: tools/gst-launch.c:920
+#: tools/gst-launch.c:961
 msgid "Output tags (also known as metadata)"
 msgstr ""
 
-#: tools/gst-launch.c:922
+#: tools/gst-launch.c:963
 msgid "Output TOC (chapters and editions)"
 msgstr ""
 
-#: tools/gst-launch.c:924
+#: tools/gst-launch.c:965
 msgid "Output status information and property notifications"
 msgstr ""
 
-#: tools/gst-launch.c:926
+#: tools/gst-launch.c:967
 msgid "Do not print any progress information"
 msgstr ""
 
-#: tools/gst-launch.c:928
+#: tools/gst-launch.c:969
 msgid "Output messages"
 msgstr ""
 
-#: tools/gst-launch.c:930
+#: tools/gst-launch.c:971
 msgid ""
 "Do not output status information for the specified property if verbose "
 "output is enabled (can be used multiple times)"
 msgstr ""
 
-#: tools/gst-launch.c:932
+#: tools/gst-launch.c:973
 msgid "PROPERTY-NAME"
 msgstr ""
 
-#: tools/gst-launch.c:934
+#: tools/gst-launch.c:975
 msgid "Do not install a fault handler"
 msgstr ""
 
-#: tools/gst-launch.c:936
+#: tools/gst-launch.c:977
 msgid "Force EOS on sources before shutting the pipeline down"
 msgstr ""
 
-#: tools/gst-launch.c:939
+#: tools/gst-launch.c:980
 msgid "Gather and print index statistics"
 msgstr ""
 
-#: tools/gst-launch.c:1004
+#: tools/gst-launch.c:1045
 #, c-format
 msgid "ERROR: pipeline could not be constructed: %s.\n"
 msgstr ""
 
-#: tools/gst-launch.c:1008
+#: tools/gst-launch.c:1049
 msgid "ERROR: pipeline could not be constructed.\n"
 msgstr ""
 
-#: tools/gst-launch.c:1012
+#: tools/gst-launch.c:1053
 #, c-format
 msgid "WARNING: erroneous pipeline: %s\n"
 msgstr ""
 
-#: tools/gst-launch.c:1028
+#: tools/gst-launch.c:1069
 msgid "ERROR: the 'pipeline' element wasn't found.\n"
 msgstr ""
 
-#: tools/gst-launch.c:1059 tools/gst-launch.c:1160
+#: tools/gst-launch.c:1100 tools/gst-launch.c:1201
 msgid "Setting pipeline to PAUSED ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1064
+#: tools/gst-launch.c:1105
 msgid "ERROR: Pipeline doesn't want to pause.\n"
 msgstr ""
 
-#: tools/gst-launch.c:1069
+#: tools/gst-launch.c:1110
 msgid "Pipeline is live and does not need PREROLL ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1073
+#: tools/gst-launch.c:1114
 msgid "Pipeline is PREROLLING ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1076 tools/gst-launch.c:1090
+#: tools/gst-launch.c:1117 tools/gst-launch.c:1131
 msgid "ERROR: pipeline doesn't want to preroll.\n"
 msgstr ""
 
-#: tools/gst-launch.c:1083
+#: tools/gst-launch.c:1124
 msgid "Pipeline is PREROLLED ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1096
+#: tools/gst-launch.c:1137
 msgid "Setting pipeline to PLAYING ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1103
+#: tools/gst-launch.c:1144
 msgid "ERROR: pipeline doesn't want to play.\n"
 msgstr ""
 
-#: tools/gst-launch.c:1122
+#: tools/gst-launch.c:1163
 msgid "EOS on shutdown enabled -- Forcing EOS on the pipeline\n"
 msgstr ""
 
-#: tools/gst-launch.c:1126
+#: tools/gst-launch.c:1167
 msgid "EOS on shutdown enabled -- waiting for EOS after Error\n"
 msgstr ""
 
-#: tools/gst-launch.c:1129
+#: tools/gst-launch.c:1170
 msgid "Waiting for EOS...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1136
+#: tools/gst-launch.c:1177
 msgid "EOS received - stopping pipeline...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1140
+#: tools/gst-launch.c:1181
 msgid "Interrupt while waiting for EOS - stopping pipeline...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1145
+#: tools/gst-launch.c:1186
 msgid "An error happened while waiting for EOS\n"
 msgstr ""
 
-#: tools/gst-launch.c:1156
+#: tools/gst-launch.c:1197
 msgid "Execution ended after %"
 msgstr ""
 
-#: tools/gst-launch.c:1172
+#: tools/gst-launch.c:1213
 msgid "Setting pipeline to READY ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1184
+#: tools/gst-launch.c:1225
 msgid "Setting pipeline to NULL ...\n"
 msgstr ""
 
-#: tools/gst-launch.c:1188
+#: tools/gst-launch.c:1229
 msgid "Freeing pipeline ...\n"
 msgstr ""
diff --git a/po/hr.gmo b/po/hr.gmo
index a874772..857eeae 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index aea81f1..550980c 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-05-27 12:48-0700\n"
 "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
@@ -933,9 +933,6 @@
 msgid "Internal data flow problem."
 msgstr "Problem unutrašnjeg protoka podataka."
 
-msgid "Internal data stream error."
-msgstr "Interna greška protoka (stream) podataka."
-
 msgid "Internal data flow error."
 msgstr "Interna greška protoka podataka."
 
@@ -1333,6 +1330,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Cjevovod se prazni...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Interna greška protoka (stream) podataka."
+
 #~ msgid "link without source element"
 #~ msgstr "veza bez izvornog elementa"
 
diff --git a/po/hu.gmo b/po/hu.gmo
index 5f555de..bbff153 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index de403a5..3498692 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-03-14 16:10+0100\n"
 "Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
@@ -920,9 +920,6 @@
 msgid "Internal data flow problem."
 msgstr "Belső adatfolyam-probléma."
 
-msgid "Internal data stream error."
-msgstr "Belső adatfolyam-hiba."
-
 msgid "Internal data flow error."
 msgstr "Belső adatfolyam-hiba."
 
@@ -1314,6 +1311,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Adatcsatorna felszabadítása…\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Belső adatfolyam-hiba."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Ne írjon ki a TÍPUS típus állapotinformációit"
 
diff --git a/po/id.gmo b/po/id.gmo
index f41000a..8b228e5 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index 6b0d864..a8a6045 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2014-05-31 22:06+0700\n"
 "Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -923,9 +923,6 @@
 msgid "Internal data flow problem."
 msgstr "Masalah aliran data internal."
 
-msgid "Internal data stream error."
-msgstr "Galat arus data internal."
-
 msgid "Internal data flow error."
 msgstr "Galat aliran data internal."
 
@@ -1314,6 +1311,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Membebaskan baris pipa ...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Galat arus data internal."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Jangan keluarkan informasi status dari TIPE"
 
diff --git a/po/it.gmo b/po/it.gmo
index 115114c..3b36548 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 4d7859a..6ed99af 100644
--- a/po/it.po
+++ b/po/it.po
@@ -106,7 +106,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.30.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2010-10-25 10:03+0200\n"
 "Last-Translator: Luca Ferretti <elle.uca@infinito.it>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
@@ -1078,9 +1078,6 @@
 msgid "Internal data flow problem."
 msgstr "Problema interno nel flusso di dati."
 
-msgid "Internal data stream error."
-msgstr "Errore interno nello stream di dati."
-
 msgid "Internal data flow error."
 msgstr "Errore interno nel flusso di dati."
 
@@ -1508,6 +1505,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Esecuzione di free sulla pipeline...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Errore interno nello stream di dati."
+
 # -X, --exclude=TIPO1,TIPO2,...
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Non stampa le informazioni di stato per TIPO"
diff --git a/po/ja.gmo b/po/ja.gmo
index 7d4d83b..f859acc 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 8148d16..5c4a7de 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.0.3\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2013-08-20 14:56+0900\n"
 "Last-Translator: Makoto Kato <makoto.kt@gmail.com>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
@@ -889,9 +889,6 @@
 msgid "Internal data flow problem."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr "内部データストリームエラー"
-
 msgid "Internal data flow error."
 msgstr "内部データフローエラー"
 
@@ -1281,6 +1278,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "パイプラインを解放 (FREEING) しています...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "内部データストリームエラー"
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "TYPE のステータス情報を出力しない"
 
diff --git a/po/lt.gmo b/po/lt.gmo
index 85f2aac..9f2e732 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index 59611ab..f5779bc 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.29.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2010-07-16 00:50+0300\n"
 "Last-Translator: Žygimantas Beručka <uid0@akl.lt>\n"
 "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
@@ -929,9 +929,6 @@
 msgid "Internal data flow problem."
 msgstr "Vidinė duomenų tėkmės problema."
 
-msgid "Internal data stream error."
-msgstr "Vidinė duomenų srauto klaida."
-
 msgid "Internal data flow error."
 msgstr "Vidinė duomenų tėkmės klaida."
 
@@ -1329,6 +1326,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Atlaisvinamas konvejeris...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Vidinė duomenų srauto klaida."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Neišvesti šio TIPO būsenos informacijos"
 
diff --git a/po/nb.gmo b/po/nb.gmo
index ed2b806..bbfcd6c 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 314e2da..68db42a 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.6.0\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2015-12-23 02:02+0100\n"
 "Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n"
 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
@@ -919,9 +919,6 @@
 msgid "Internal data flow problem."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr ""
-
 msgid "Internal data flow error."
 msgstr "Intern feil med dataflyt."
 
diff --git a/po/nl.gmo b/po/nl.gmo
index 9012072..cd54bdb 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index ad37ae9..760d751 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-02-20 16:42+0100\n"
 "Last-Translator: Freek de Kruijf <f.de.kruijf@gmail.com>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
@@ -932,9 +932,6 @@
 msgid "Internal data flow problem."
 msgstr "Intern probleem met gegevensdoorvoer."
 
-msgid "Internal data stream error."
-msgstr "Interne fout in gegevensstroom."
-
 msgid "Internal data flow error."
 msgstr "Interne fout met gegevensdoorvoer."
 
@@ -1329,6 +1326,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Pijplijn wordt vrijgemaakt ...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Interne fout in gegevensstroom."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Statusinformatie van soort SOORT niet weergeven"
 
diff --git a/po/pl.gmo b/po/pl.gmo
index 8cd207b..0a1f871 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 97af70c..81e2808 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-02-20 21:41+0100\n"
 "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
@@ -925,9 +925,6 @@
 msgid "Internal data flow problem."
 msgstr "Wewnętrzny problem przepływu danych."
 
-msgid "Internal data stream error."
-msgstr "Wewnętrzny błąd strumienia danych."
-
 msgid "Internal data flow error."
 msgstr "Wewnętrzny błąd przepływu danych."
 
@@ -1324,3 +1321,6 @@
 
 msgid "Freeing pipeline ...\n"
 msgstr "Zwalnianie potoku...\n"
+
+#~ msgid "Internal data stream error."
+#~ msgstr "Wewnętrzny błąd strumienia danych."
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index d2afe3f..8bd5b08 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 30ed2c0..ec83585 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -17,7 +17,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-05-06 18:23-0300\n"
 "Last-Translator: Fabrício Godoy <skarllot@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
@@ -941,9 +941,6 @@
 msgid "Internal data flow problem."
 msgstr "Problema interno no fluxo de dados."
 
-msgid "Internal data stream error."
-msgstr "Erro interno no fluxo de dados."
-
 msgid "Internal data flow error."
 msgstr "Erro interno no fluxo de dados."
 
@@ -1347,6 +1344,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Liberando a fila de processamento...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Erro interno no fluxo de dados."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Não é possível obter informações do estado de saída do TIPO"
 
diff --git a/po/ro.gmo b/po/ro.gmo
index 0660991..eee43c5 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index 6567c24..939c0b6 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -5,7 +5,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.10.29.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2010-08-16 01:10+0300\n"
 "Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -947,9 +947,6 @@
 msgid "Internal data flow problem."
 msgstr "Problemă internă de flux al datelor."
 
-msgid "Internal data stream error."
-msgstr "Eroare internă a fluxului de date."
-
 msgid "Internal data flow error."
 msgstr "Eroare internă de flux al datelor."
 
@@ -1348,6 +1345,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Se eliberează linia de asamblare...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Eroare internă a fluxului de date."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Nu scoate informații despre stările de TIPUL"
 
diff --git a/po/ru.gmo b/po/ru.gmo
index 28a0259..2059ef8 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 3eb696e..fea7f05 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-03-05 08:41+0300\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Language-Team: Russian <gnu@d07.ru>\n"
@@ -924,9 +924,6 @@
 msgid "Internal data flow problem."
 msgstr "Внутренняя проблема передачи данных."
 
-msgid "Internal data stream error."
-msgstr "Внутренняя ошибка потока данных."
-
 msgid "Internal data flow error."
 msgstr "Внутренняя ошибка передачи данных."
 
@@ -1323,6 +1320,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Освобождение конвейера…\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Внутренняя ошибка потока данных."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Не выводить информацию о состоянии ТИПА"
 
diff --git a/po/rw.gmo b/po/rw.gmo
index f2f909c..ca9041b 100644
--- a/po/rw.gmo
+++ b/po/rw.gmo
Binary files differ
diff --git a/po/rw.po b/po/rw.po
index 8e63f83..8be8778 100644
--- a/po/rw.po
+++ b/po/rw.po
@@ -15,7 +15,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.8.8\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2005-04-04 10:55-0700\n"
 "Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
 "Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
@@ -1088,9 +1088,6 @@
 msgid "Internal data flow problem."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr ""
-
 msgid "Internal data flow error."
 msgstr ""
 
diff --git a/po/sk.gmo b/po/sk.gmo
index 355220c..2da481b 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 6bd3806..6c6d7f1 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-05-20 11:32+0100\n"
 "Last-Translator: Peter Tuhársky <tuharsky@misbb.sk>\n"
 "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -922,9 +922,6 @@
 msgid "Internal data flow problem."
 msgstr "Vnútorný problém v toku údajov."
 
-msgid "Internal data stream error."
-msgstr "Vnútorná chyba prúdu údajov."
-
 msgid "Internal data flow error."
 msgstr "Vnútorná chyba toku údajov."
 
@@ -1325,6 +1322,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Uvoľňujem rúru ...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Vnútorná chyba prúdu údajov."
+
 #~ msgid "link without source element"
 #~ msgstr "pripojenie bez zdrojového prvku"
 
diff --git a/po/sl.gmo b/po/sl.gmo
index 8674f61..54f865b 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 16e5fb6..e8d3278 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-1.2.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2014-04-09 22:38+0100\n"
 "Last-Translator: Klemen Košir <klemen913@gmail.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
@@ -922,9 +922,6 @@
 msgid "Internal data flow problem."
 msgstr "Notranja težava toka podatkov."
 
-msgid "Internal data stream error."
-msgstr "Notranja napaka pretoka podatkov."
-
 msgid "Internal data flow error."
 msgstr "Notranja napaka toka podatkov."
 
@@ -1325,6 +1322,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Sproščanje cevovoda ...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Notranja napaka pretoka podatkov."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Ne izpiši podrobnosti stanja VRSTE"
 
diff --git a/po/sq.gmo b/po/sq.gmo
index 19400db..53fd3bd 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index 3161c54..9a155dc 100644
--- a/po/sq.po
+++ b/po/sq.po
@@ -6,7 +6,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 0.8.4\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2004-08-07 23:46+0200\n"
 "Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
 "Language-Team: Albanian <begraj@hotmail.com>\n"
@@ -942,9 +942,6 @@
 msgid "Internal data flow problem."
 msgstr ""
 
-msgid "Internal data stream error."
-msgstr ""
-
 msgid "Internal data flow error."
 msgstr ""
 
diff --git a/po/sr.gmo b/po/sr.gmo
index 081a1e7..da1100a 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 95fa39e..e0d8afe 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer-1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-03-05 10:03+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
@@ -923,9 +923,6 @@
 msgid "Internal data flow problem."
 msgstr "Унутрaшњи проблем протока података."
 
-msgid "Internal data stream error."
-msgstr "Унутрашња грешка тока података."
-
 msgid "Internal data flow error."
 msgstr "Унутрaшња грешка протока података."
 
@@ -1324,6 +1321,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Ослобађам спојку низа...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Унутрашња грешка тока података."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Не исписује податке о стању за ВРСТУ"
 
diff --git a/po/sv.gmo b/po/sv.gmo
index 6d4e335..7e74e28 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 63377c0..6ee8029 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-03-02 22:19+0100\n"
 "Last-Translator: Sebastian Rasmussen <sebras@gmail.com>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -923,9 +923,6 @@
 msgid "Internal data flow problem."
 msgstr "Internt dataflödesproblem."
 
-msgid "Internal data stream error."
-msgstr "Internt fel i dataström."
-
 msgid "Internal data flow error."
 msgstr "Internt fel i dataflöde."
 
@@ -1322,6 +1319,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Frigör rörledning ...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Internt fel i dataström."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Mata inte ut statusinformation av TYP"
 
diff --git a/po/tr.gmo b/po/tr.gmo
index 3431160..16c2796 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index eda0af7..0f603c7 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.4.1\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2015-01-10 21:06+0100\n"
 "Last-Translator: Volkan Gezer <volkangezer@gmail.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -911,9 +911,6 @@
 msgid "Internal data flow problem."
 msgstr "İç veri akış sorunu."
 
-msgid "Internal data stream error."
-msgstr "İç veri akışı hatası."
-
 msgid "Internal data flow error."
 msgstr "İç veri akış hatası."
 
@@ -1307,6 +1304,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Boru hattı boşaltılıyor ...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "İç veri akışı hatası."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "TÜRÜN durum bilgisini gösterme"
 
diff --git a/po/uk.gmo b/po/uk.gmo
index 344d6b8..d36297b 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index fe59211..6571cf1 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-03-02 22:00+0200\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
@@ -921,9 +921,6 @@
 msgid "Internal data flow problem."
 msgstr "Помилка внутрішнього перенесення даних."
 
-msgid "Internal data stream error."
-msgstr "Помилка внутрішнього потоку даних."
-
 msgid "Internal data flow error."
 msgstr "Помилка внутрішнього перенесення даних."
 
@@ -1326,6 +1323,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Спорожнення каналу...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Помилка внутрішнього потоку даних."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Не виводити інформацію про стан типу ТИП"
 
diff --git a/po/vi.gmo b/po/vi.gmo
index 47a794a..4f4507a 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 390d1f5..6b9e472 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -9,7 +9,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-03-03 07:44+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
@@ -927,9 +927,6 @@
 msgid "Internal data flow problem."
 msgstr "Vấn đề luồng dữ liệu nội bộ."
 
-msgid "Internal data stream error."
-msgstr "Lỗi luồng dữ liệu nội bộ."
-
 msgid "Internal data flow error."
 msgstr "Lỗi luồng dữ liệu nội bộ."
 
@@ -1321,6 +1318,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "Đang giải phóng đường ống …\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "Lỗi luồng dữ liệu nội bộ."
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "Không xuất thông tin trạng thái KIỂU"
 
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 04cf304..5093998 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 f13565a..8253356 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.7.90\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2016-03-03 12:49+0800\n"
 "Last-Translator: Tianze Wang <zwpwjwtz@126.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
@@ -890,9 +890,6 @@
 msgid "Internal data flow problem."
 msgstr "内部数据流问题。"
 
-msgid "Internal data stream error."
-msgstr "内部数据流错误。"
-
 msgid "Internal data flow error."
 msgstr "内部数据流错误。"
 
@@ -1275,6 +1272,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "释放管道资源 ...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "内部数据流错误。"
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "不输出类型的状态信息"
 
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
index 915a299..75cbafd 100644
--- a/po/zh_TW.gmo
+++ b/po/zh_TW.gmo
Binary files differ
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 43886f3..700e101 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -27,7 +27,7 @@
 msgstr ""
 "Project-Id-Version: gstreamer 1.3.2\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-08-19 11:47+0300\n"
+"POT-Creation-Date: 2016-09-30 12:08+0300\n"
 "PO-Revision-Date: 2014-06-08 00:22+0800\n"
 "Last-Translator: Wen Liao <wen.cf83@gmail.com>\n"
 "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
@@ -917,9 +917,6 @@
 msgid "Internal data flow problem."
 msgstr "內部資料流程錯誤"
 
-msgid "Internal data stream error."
-msgstr "內部資料串流錯誤"
-
 msgid "Internal data flow error."
 msgstr "內部資料流程錯誤"
 
@@ -1305,6 +1302,9 @@
 msgid "Freeing pipeline ...\n"
 msgstr "釋放pipeline ...\n"
 
+#~ msgid "Internal data stream error."
+#~ msgstr "內部資料串流錯誤"
+
 #~ msgid "Do not output status information of TYPE"
 #~ msgstr "不顯示和 TYPE 有關的狀態資訊"
 
diff --git a/tests/Makefile.am b/tests/Makefile.am
index e5909fd..9fe291c 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,7 +1,10 @@
 EXTRA_DIST = README
 
+# Build misc unless both --disable-examples and --disable-benchmarks were passed
+
 if BUILD_BENCHMARKS
 SUBDIRS_BENCHMARKS = benchmarks
+SUBDIRS_MISC = misc
 else
 SUBDIRS_BENCHMARKS =
 endif
@@ -22,6 +25,7 @@
 
 if BUILD_EXAMPLES
 SUBDIRS_EXAMPLES = examples
+SUBDIRS_MISC = misc
 else
 SUBDIRS_EXAMPLES =
 endif
@@ -29,7 +33,7 @@
 SUBDIRS = \
 	$(SUBDIRS_BENCHMARKS) \
 	$(SUBDIRS_CHECK) \
-	misc		\
+	$(SUBDIRS_MISC) \
 	$(SUBDIRS_TESTS) \
 	$(SUBDIRS_EXAMPLES)
 
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 2304b6b..e504418 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -287,6 +287,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -294,17 +295,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -429,6 +427,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
@@ -508,7 +508,11 @@
 top_srcdir = @top_srcdir@
 EXTRA_DIST = README
 @BUILD_BENCHMARKS_FALSE@SUBDIRS_BENCHMARKS = 
+
+# Build misc unless both --disable-examples and --disable-benchmarks were passed
 @BUILD_BENCHMARKS_TRUE@SUBDIRS_BENCHMARKS = benchmarks
+@BUILD_BENCHMARKS_TRUE@SUBDIRS_MISC = misc
+@BUILD_EXAMPLES_TRUE@SUBDIRS_MISC = misc
 @BUILD_TESTS_FALSE@SUBDIRS_TESTS = 
 @BUILD_TESTS_TRUE@SUBDIRS_TESTS = 
 @BUILD_TESTS_FALSE@SUBDIRS_CHECK = 
@@ -519,7 +523,7 @@
 SUBDIRS = \
 	$(SUBDIRS_BENCHMARKS) \
 	$(SUBDIRS_CHECK) \
-	misc		\
+	$(SUBDIRS_MISC) \
 	$(SUBDIRS_TESTS) \
 	$(SUBDIRS_EXAMPLES)
 
diff --git a/tests/benchmarks/Makefile.in b/tests/benchmarks/Makefile.in
index e43c672..646a8af 100644
--- a/tests/benchmarks/Makefile.in
+++ b/tests/benchmarks/Makefile.in
@@ -333,6 +333,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -340,17 +341,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -475,6 +473,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/tests/benchmarks/capsnego.c b/tests/benchmarks/capsnego.c
index dc60194..5a7a390 100644
--- a/tests/benchmarks/capsnego.c
+++ b/tests/benchmarks/capsnego.c
@@ -185,7 +185,7 @@
 main (gint argc, gchar * argv[])
 {
   /* default parameters */
-  const gchar *flavour_str = "audio";
+  gchar *flavour_str = g_strdup("audio");
   gint flavour = FLAVOUR_AUDIO;
   gint children = 3;
   gint depth = 4;
@@ -230,6 +230,8 @@
   /* build pipeline */
   g_print ("building %s pipeline with depth = %d and children = %d\n",
       flavour_str, depth, children);
+  g_free (flavour_str);
+
   start = gst_util_get_timestamp ();
   bin = GST_BIN (gst_pipeline_new ("pipeline"));
   sink = gst_element_factory_make ("fakesink", NULL);
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index d626c8e..1b0ebc4 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -39,10 +39,8 @@
 # Do not run the abi test in case any option which causes the API to change has
 # been used
 if !GST_DISABLE_REGISTRY
-if !GST_DISABLE_TRACE
 ABI_CHECKS = gst/gstabi
 endif
-endif
 
 if !GST_DISABLE_GST_DEBUG
 PRINTF_CHECKS = gst/gstprintf
@@ -137,6 +135,7 @@
 	gst/gstsegment				\
 	gst/gstsystemclock			\
 	gst/gstclock				\
+	gst/gststream				\
 	gst/gststructure			\
 	gst/gsttag				\
 	gst/gsttracerrecord		 		\
@@ -195,7 +194,7 @@
 EXTRA_DIST = \
 	libs/test_transform.c
 
-AM_CFLAGS = $(GST_OBJ_CFLAGS) -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS \
+AM_CFLAGS = $(PTHREAD_CFLAGS) $(GST_OBJ_CFLAGS) -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS \
 	-DGST_CHECK_TEST_ENVIRONMENT_BEACON="\"GST_STATE_IGNORE_ELEMENTS\""
 AM_CXXFLAGS = $(GST_OBJ_CXXFLAGS) -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS \
 	-DGST_CHECK_TEST_ENVIRONMENT_BEACON="\"GST_STATE_IGNORE_ELEMENTS\""
@@ -234,7 +233,7 @@
 # these just need valgrind fixing, period
 VALGRIND_TO_FIX = \
 	gst/gstinfo \
-	pipelines/parse-launch \
+	gst/gsttracerrecord \
 	tools/gstinspect
 
 VALGRIND_IGNORE = \
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index 68f0167..52c9cf8 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -103,14 +103,15 @@
 	gst/gstpipeline$(EXEEXT) gst/gstpoll$(EXEEXT) \
 	gst/gstprotection$(EXEEXT) $(am__EXEEXT_3) \
 	gst/gstsegment$(EXEEXT) gst/gstsystemclock$(EXEEXT) \
-	gst/gstclock$(EXEEXT) gst/gststructure$(EXEEXT) \
-	gst/gsttag$(EXEEXT) gst/gsttracerrecord$(EXEEXT) \
-	gst/gsttagsetter$(EXEEXT) gst/gsttask$(EXEEXT) \
-	gst/gsttoc$(EXEEXT) gst/gsttocsetter$(EXEEXT) \
-	gst/gstvalue$(EXEEXT) generic/states$(EXEEXT) $(am__EXEEXT_4) \
-	$(am__EXEEXT_5) $(am__EXEEXT_6) libs/adapter$(EXEEXT) \
-	libs/bitreader$(EXEEXT) libs/bytereader$(EXEEXT) \
-	libs/bytewriter$(EXEEXT) libs/bitreader-noinline$(EXEEXT) \
+	gst/gstclock$(EXEEXT) gst/gststream$(EXEEXT) \
+	gst/gststructure$(EXEEXT) gst/gsttag$(EXEEXT) \
+	gst/gsttracerrecord$(EXEEXT) gst/gsttagsetter$(EXEEXT) \
+	gst/gsttask$(EXEEXT) gst/gsttoc$(EXEEXT) \
+	gst/gsttocsetter$(EXEEXT) gst/gstvalue$(EXEEXT) \
+	generic/states$(EXEEXT) $(am__EXEEXT_4) $(am__EXEEXT_5) \
+	$(am__EXEEXT_6) libs/adapter$(EXEEXT) libs/bitreader$(EXEEXT) \
+	libs/bytereader$(EXEEXT) libs/bytewriter$(EXEEXT) \
+	libs/bitreader-noinline$(EXEEXT) \
 	libs/bytereader-noinline$(EXEEXT) \
 	libs/bytewriter-noinline$(EXEEXT) libs/flowcombiner$(EXEEXT) \
 	libs/sparsefile$(EXEEXT) libs/collectpads$(EXEEXT) \
@@ -165,7 +166,7 @@
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
-@GST_DISABLE_REGISTRY_FALSE@@GST_DISABLE_TRACE_FALSE@am__EXEEXT_1 = gst/gstabi$(EXEEXT)
+@GST_DISABLE_REGISTRY_FALSE@am__EXEEXT_1 = gst/gstabi$(EXEEXT)
 @HAVE_CXX_TRUE@am__EXEEXT_2 = gst/gstcpp$(EXEEXT) \
 @HAVE_CXX_TRUE@	libs/gstlibscpp$(EXEEXT)
 @GST_DISABLE_GST_DEBUG_FALSE@am__EXEEXT_3 = gst/gstprintf$(EXEEXT)
@@ -578,6 +579,12 @@
 gst_gstsegment_DEPENDENCIES = $(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
 	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
 	$(am__DEPENDENCIES_1)
+gst_gststream_SOURCES = gst/gststream.c
+gst_gststream_OBJECTS = gst/gststream.$(OBJEXT)
+gst_gststream_LDADD = $(LDADD)
+gst_gststream_DEPENDENCIES = $(top_builddir)/libs/gst/check/libgstcheck-@GST_API_VERSION@.la \
+	$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1)
 gst_gststructure_SOURCES = gst/gststructure.c
 gst_gststructure_OBJECTS = gst/gststructure.$(OBJEXT)
 gst_gststructure_LDADD = $(LDADD)
@@ -907,13 +914,13 @@
 	gst/gstparamspecs.c gst/gstpipeline.c gst/gstplugin.c \
 	gst/gstpoll.c gst/gstpreset.c gst/gstprintf.c \
 	gst/gstprotection.c gst/gstquery.c gst/gstregistry.c \
-	gst/gstsegment.c gst/gststructure.c gst/gstsystemclock.c \
-	gst/gsttag.c gst/gsttagsetter.c gst/gsttask.c gst/gsttoc.c \
-	gst/gsttocsetter.c gst/gsttracerrecord.c gst/gsturi.c \
-	gst/gstutils.c gst/gstvalue.c libs/adapter.c libs/baseparse.c \
-	libs/basesink.c libs/basesrc.c libs/bitreader.c \
-	libs/bitreader-noinline.c libs/bytereader.c \
-	libs/bytereader-noinline.c libs/bytewriter.c \
+	gst/gstsegment.c gst/gststream.c gst/gststructure.c \
+	gst/gstsystemclock.c gst/gsttag.c gst/gsttagsetter.c \
+	gst/gsttask.c gst/gsttoc.c gst/gsttocsetter.c \
+	gst/gsttracerrecord.c gst/gsturi.c gst/gstutils.c \
+	gst/gstvalue.c libs/adapter.c libs/baseparse.c libs/basesink.c \
+	libs/basesrc.c libs/bitreader.c libs/bitreader-noinline.c \
+	libs/bytereader.c libs/bytereader-noinline.c libs/bytewriter.c \
 	libs/bytewriter-noinline.c libs/collectpads.c \
 	libs/controller.c libs/flowcombiner.c libs/gstharness.c \
 	$(libs_gstlibscpp_SOURCES) libs/gstnetclientclock.c \
@@ -943,8 +950,8 @@
 	gst/gstpipeline.c gst/gstplugin.c gst/gstpoll.c \
 	gst/gstpreset.c gst/gstprintf.c gst/gstprotection.c \
 	gst/gstquery.c gst/gstregistry.c gst/gstsegment.c \
-	gst/gststructure.c gst/gstsystemclock.c gst/gsttag.c \
-	gst/gsttagsetter.c gst/gsttask.c gst/gsttoc.c \
+	gst/gststream.c gst/gststructure.c gst/gstsystemclock.c \
+	gst/gsttag.c gst/gsttagsetter.c gst/gsttask.c gst/gsttoc.c \
 	gst/gsttocsetter.c gst/gsttracerrecord.c gst/gsturi.c \
 	gst/gstutils.c gst/gstvalue.c libs/adapter.c libs/baseparse.c \
 	libs/basesink.c libs/basesrc.c libs/bitreader.c \
@@ -1265,6 +1272,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -1272,17 +1280,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -1407,6 +1412,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
@@ -1511,7 +1518,7 @@
 
 # Do not run the abi test in case any option which causes the API to change has
 # been used
-@GST_DISABLE_REGISTRY_FALSE@@GST_DISABLE_TRACE_FALSE@ABI_CHECKS = gst/gstabi
+@GST_DISABLE_REGISTRY_FALSE@ABI_CHECKS = gst/gstabi
 @GST_DISABLE_GST_DEBUG_FALSE@PRINTF_CHECKS = gst/gstprintf
 @GST_DISABLE_GST_DEBUG_TRUE@PRINTF_CHECKS = 
 LIBSABI_CHECKS = libs/libsabi
@@ -1590,7 +1597,7 @@
 EXTRA_DIST = \
 	libs/test_transform.c
 
-AM_CFLAGS = $(GST_OBJ_CFLAGS) -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS \
+AM_CFLAGS = $(PTHREAD_CFLAGS) $(GST_OBJ_CFLAGS) -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS \
 	-DGST_CHECK_TEST_ENVIRONMENT_BEACON="\"GST_STATE_IGNORE_ELEMENTS\""
 
 AM_CXXFLAGS = $(GST_OBJ_CXXFLAGS) -UG_DISABLE_ASSERT -UG_DISABLE_CAST_CHECKS \
@@ -1631,7 +1638,7 @@
 # these just need valgrind fixing, period
 VALGRIND_TO_FIX = \
 	gst/gstinfo \
-	pipelines/parse-launch \
+	gst/gsttracerrecord \
 	tools/gstinspect
 
 VALGRIND_IGNORE = \
@@ -2073,6 +2080,12 @@
 gst/gstsegment$(EXEEXT): $(gst_gstsegment_OBJECTS) $(gst_gstsegment_DEPENDENCIES) $(EXTRA_gst_gstsegment_DEPENDENCIES) gst/$(am__dirstamp)
 	@rm -f gst/gstsegment$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(gst_gstsegment_OBJECTS) $(gst_gstsegment_LDADD) $(LIBS)
+gst/gststream.$(OBJEXT): gst/$(am__dirstamp) \
+	gst/$(DEPDIR)/$(am__dirstamp)
+
+gst/gststream$(EXEEXT): $(gst_gststream_OBJECTS) $(gst_gststream_DEPENDENCIES) $(EXTRA_gst_gststream_DEPENDENCIES) gst/$(am__dirstamp)
+	@rm -f gst/gststream$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(gst_gststream_OBJECTS) $(gst_gststream_LDADD) $(LIBS)
 gst/gststructure.$(OBJEXT): gst/$(am__dirstamp) \
 	gst/$(DEPDIR)/$(am__dirstamp)
 
@@ -2420,6 +2433,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@gst/$(DEPDIR)/gstquery.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gst/$(DEPDIR)/gstregistry.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gst/$(DEPDIR)/gstsegment.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gst/$(DEPDIR)/gststream.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gst/$(DEPDIR)/gststructure.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gst/$(DEPDIR)/gstsystemclock.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@gst/$(DEPDIR)/gsttag.Po@am__quote@
@@ -2954,6 +2968,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)
+gst/gststream.log: gst/gststream$(EXEEXT)
+	@p='gst/gststream$(EXEEXT)'; \
+	b='gst/gststream'; \
+	$(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)
 gst/gststructure.log: gst/gststructure$(EXEEXT)
 	@p='gst/gststructure$(EXEEXT)'; \
 	b='gst/gststructure'; \
diff --git a/tests/check/elements/fakesink.c b/tests/check/elements/fakesink.c
index b96d266..0f811b1 100644
--- a/tests/check/elements/fakesink.c
+++ b/tests/check/elements/fakesink.c
@@ -915,8 +915,7 @@
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
   GstPushSrcClass *pushsrc_class = GST_PUSH_SRC_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sinktemplate));
+  gst_element_class_add_static_pad_template (element_class, &sinktemplate);
 
   pushsrc_class->create = GST_DEBUG_FUNCPTR (oob_source_create);
 }
@@ -1072,6 +1071,8 @@
 
   fail_unless_equals_int (counter1, NUM_BUFFERS);
   fail_unless_equals_int (counter2, NUM_BUFFERS);
+
+  gst_object_unref (pipe);
 }
 
 GST_END_TEST;
diff --git a/tests/check/elements/filesrc.c b/tests/check/elements/filesrc.c
index 5487f7c..65b5fb3 100644
--- a/tests/check/elements/filesrc.c
+++ b/tests/check/elements/filesrc.c
@@ -83,6 +83,7 @@
 static void
 cleanup_filesrc (GstElement * filesrc)
 {
+  gst_check_drop_buffers ();
   gst_pad_set_active (mysinkpad, FALSE);
   gst_check_teardown_sink_pad (filesrc);
   gst_check_teardown_element (filesrc);
diff --git a/tests/check/elements/multiqueue.c b/tests/check/elements/multiqueue.c
index 0cd54d2..e99f555 100644
--- a/tests/check/elements/multiqueue.c
+++ b/tests/check/elements/multiqueue.c
@@ -976,6 +976,114 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_watermark_and_fill_level)
+{
+  /* This test checks the behavior of the fill level and
+   * the low/high watermarks. It also checks if the
+   * low/high-percent and low/high-watermark properties
+   * are coupled together properly. */
+  GstElement *pipe;
+  GstElement *mq, *fakesink;
+  GstPad *inputpad;
+  GstPad *mq_sinkpad;
+  GstPad *sinkpad;
+  GstSegment segment;
+  GThread *thread;
+  gint low_perc, high_perc;
+
+
+  /* Setup test pipeline with one multiqueue and one fakesink */
+
+  pipe = gst_pipeline_new ("testbin");
+  mq = gst_element_factory_make ("multiqueue", NULL);
+  fail_unless (mq != NULL);
+  gst_bin_add (GST_BIN (pipe), mq);
+
+  fakesink = gst_element_factory_make ("fakesink", NULL);
+  fail_unless (fakesink != NULL);
+  gst_bin_add (GST_BIN (pipe), fakesink);
+
+  /* Block fakesink sinkpad flow to ensure the queue isn't emptied
+   * by the prerolling sink */
+  sinkpad = gst_element_get_static_pad (fakesink, "sink");
+  gst_pad_add_probe (sinkpad, GST_PAD_PROBE_TYPE_BLOCK, block_probe, NULL,
+      NULL);
+  gst_object_unref (sinkpad);
+
+  g_object_set (mq,
+      "use-buffering", (gboolean) TRUE,
+      "max-size-bytes", (guint) 1000 * 1000,
+      "max-size-buffers", (guint) 0,
+      "max-size-time", (guint64) 0,
+      "extra-size-bytes", (guint) 0,
+      "extra-size-buffers", (guint) 0,
+      "extra-size-time", (guint64) 0,
+      "low-watermark", (gdouble) 0.01, "high-watermark", (gdouble) 0.10, NULL);
+
+  g_object_get (mq, "low-percent", &low_perc, "high-percent", &high_perc, NULL);
+
+  /* Check that low/high-watermark and low/high-percent are
+   * coupled properly. (low/high-percent are deprecated and
+   * exist for backwards compatibility.) */
+  fail_unless_equals_int (low_perc, 1);
+  fail_unless_equals_int (high_perc, 10);
+
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+
+  inputpad = gst_pad_new ("dummysrc", GST_PAD_SRC);
+  gst_pad_set_query_function (inputpad, mq_dummypad_query);
+
+  mq_sinkpad = gst_element_get_request_pad (mq, "sink_%u");
+  fail_unless (mq_sinkpad != NULL);
+  fail_unless (gst_pad_link (inputpad, mq_sinkpad) == GST_PAD_LINK_OK);
+
+  gst_pad_set_active (inputpad, TRUE);
+
+  gst_pad_push_event (inputpad, gst_event_new_stream_start ("test"));
+  gst_pad_push_event (inputpad, gst_event_new_segment (&segment));
+
+  gst_object_unref (mq_sinkpad);
+
+  fail_unless (gst_element_link (mq, fakesink));
+
+  /* Start pipeline in paused state to ensure the sink remains
+   * in preroll mode and blocks */
+  gst_element_set_state (pipe, GST_STATE_PAUSED);
+
+  /* Feed data. queue will be filled to 8% (because it pushes 80000 bytes),
+   * which is below the high-threshold, provoking a buffering message. */
+  thread = g_thread_new ("push1", pad_push_datablock_thread, inputpad);
+  g_thread_join (thread);
+
+  /* Check for the buffering message; it should indicate 80% fill level
+   * (Note that the percentage from the message is normalized) */
+  CHECK_FOR_BUFFERING_MSG (pipe, 80);
+
+  /* Increase the buffer size and lower the watermarks to test
+   * if <1% watermarks are supported. */
+  g_object_set (mq,
+      "max-size-bytes", (guint) 20 * 1000 * 1000,
+      "low-watermark", (gdouble) 0.0001, "high-watermark", (gdouble) 0.005,
+      NULL);
+  /* First buffering message is posted after the max-size-bytes limit
+   * is set to 20000000 bytes & the low-watermark is set. Since the
+   * multiqueue contains 80000 bytes, and the high watermark still is
+   * 0.1 at this point, and the buffer level 80000 / 20000000 = 0.004 is
+   * normalized by 0.1: 0.004 / 0.1 => buffering percentage 4%. */
+  CHECK_FOR_BUFFERING_MSG (pipe, 4);
+  /* Second buffering message is posted after the high-watermark limit
+   * is set to 0.005. This time, the buffer level is normalized this way:
+   * 0.004 / 0.005 => buffering percentage 80%. */
+  CHECK_FOR_BUFFERING_MSG (pipe, 80);
+
+
+  gst_element_set_state (pipe, GST_STATE_NULL);
+  gst_object_unref (inputpad);
+  gst_object_unref (pipe);
+}
+
+GST_END_TEST;
+
 GST_START_TEST (test_high_threshold_change)
 {
   /* This test checks what happens if the high threshold is changed to a
@@ -1508,6 +1616,7 @@
 
   tcase_add_test (tc_chain, test_sparse_stream);
   tcase_add_test (tc_chain, test_initial_fill_above_high_threshold);
+  tcase_add_test (tc_chain, test_watermark_and_fill_level);
   tcase_add_test (tc_chain, test_high_threshold_change);
   tcase_add_test (tc_chain, test_low_threshold_change);
   tcase_add_test (tc_chain, test_limit_changes);
diff --git a/tests/check/elements/queue2.c b/tests/check/elements/queue2.c
index 91c24ad..6087569 100644
--- a/tests/check/elements/queue2.c
+++ b/tests/check/elements/queue2.c
@@ -207,6 +207,174 @@
 
 GST_END_TEST;
 
+static gboolean
+queue2_dummypad_query (GstPad * sinkpad, GstObject * parent, GstQuery * query)
+{
+  gboolean res = TRUE;
+
+  switch (GST_QUERY_TYPE (query)) {
+    case GST_QUERY_CAPS:
+    {
+      GstCaps *filter, *caps;
+
+      gst_query_parse_caps (query, &filter);
+      caps = (filter ? gst_caps_ref (filter) : gst_caps_new_any ());
+      gst_query_set_caps_result (query, caps);
+      gst_caps_unref (caps);
+      break;
+    }
+    default:
+      res = gst_pad_query_default (sinkpad, parent, query);
+      break;
+  }
+  return res;
+}
+
+static gpointer
+pad_push_datablock_thread (gpointer data)
+{
+  GstPad *pad = data;
+  GstBuffer *buf;
+
+  buf = gst_buffer_new_allocate (NULL, 80 * 1000, NULL);
+  gst_pad_push (pad, buf);
+
+  return NULL;
+}
+
+static GstPadProbeReturn
+block_probe (GstPad * pad, GstPadProbeInfo * info, gpointer user_data)
+{
+  return GST_PAD_PROBE_OK;
+}
+
+#define CHECK_FOR_BUFFERING_MSG(PIPELINE, EXPECTED_PERC) \
+  G_STMT_START { \
+    gint buf_perc; \
+    GstMessage *msg; \
+    GST_LOG ("waiting for %d%% buffering message", (EXPECTED_PERC)); \
+    msg = gst_bus_poll (GST_ELEMENT_BUS (PIPELINE), \
+        GST_MESSAGE_BUFFERING | GST_MESSAGE_ERROR, -1); \
+    fail_if (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ERROR, \
+        "Expected BUFFERING message, got ERROR message"); \
+    gst_message_parse_buffering (msg, &buf_perc); \
+    gst_message_unref (msg); \
+    fail_unless (buf_perc == (EXPECTED_PERC), \
+        "Got incorrect percentage: %d%% expected: %d%%", buf_perc, \
+        (EXPECTED_PERC)); \
+  } G_STMT_END
+
+GST_START_TEST (test_watermark_and_fill_level)
+{
+  /* This test checks the behavior of the fill level and
+   * the low/high watermarks. It also checks if the
+   * low/high-percent and low/high-watermark properties
+   * are coupled together properly. */
+
+  GstElement *pipe;
+  GstElement *queue2, *fakesink;
+  GstPad *inputpad;
+  GstPad *queue2_sinkpad;
+  GstPad *sinkpad;
+  GstSegment segment;
+  GThread *thread;
+  gint low_perc, high_perc;
+
+
+  /* Setup test pipeline with one multiqueue and one fakesink */
+
+  pipe = gst_pipeline_new ("pipeline");
+  queue2 = gst_element_factory_make ("queue2", NULL);
+  fail_unless (queue2 != NULL);
+  gst_bin_add (GST_BIN (pipe), queue2);
+
+  fakesink = gst_element_factory_make ("fakesink", NULL);
+  fail_unless (fakesink != NULL);
+  gst_bin_add (GST_BIN (pipe), fakesink);
+
+  /* Block fakesink sinkpad flow to ensure the queue isn't emptied
+   * by the prerolling sink */
+  sinkpad = gst_element_get_static_pad (fakesink, "sink");
+  gst_pad_add_probe (sinkpad, GST_PAD_PROBE_TYPE_BLOCK, block_probe, NULL,
+      NULL);
+  gst_object_unref (sinkpad);
+
+  g_object_set (queue2,
+      "use-buffering", (gboolean) TRUE,
+      "max-size-bytes", (guint) 1000 * 1000,
+      "max-size-buffers", (guint) 0,
+      "max-size-time", (guint64) 0,
+      "low-watermark", (gdouble) 0.01, "high-watermark", (gdouble) 0.10, NULL);
+
+  g_object_get (queue2, "low-percent", &low_perc,
+      "high-percent", &high_perc, NULL);
+
+  /* Check that low/high-watermark and low/high-percent are
+   * coupled properly. (low/high-percent are deprecated and
+   * exist for backwards compatibility.) */
+  fail_unless_equals_int (low_perc, 1);
+  fail_unless_equals_int (high_perc, 10);
+
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+
+  inputpad = gst_pad_new ("dummysrc", GST_PAD_SRC);
+  gst_pad_set_query_function (inputpad, queue2_dummypad_query);
+
+  queue2_sinkpad = gst_element_get_static_pad (queue2, "sink");
+  fail_unless (queue2_sinkpad != NULL);
+  fail_unless (gst_pad_link (inputpad, queue2_sinkpad) == GST_PAD_LINK_OK);
+
+  gst_pad_set_active (inputpad, TRUE);
+
+  gst_pad_push_event (inputpad, gst_event_new_stream_start ("test"));
+  gst_pad_push_event (inputpad, gst_event_new_segment (&segment));
+
+  gst_object_unref (queue2_sinkpad);
+
+  fail_unless (gst_element_link (queue2, fakesink));
+
+  /* Start pipeline in paused state to ensure the sink remains
+   * in preroll mode and blocks */
+  gst_element_set_state (pipe, GST_STATE_PAUSED);
+
+  /* When the use-buffering property is set to TRUE, a buffering
+   * message is posted. Since the queue is empty at that point,
+   * the buffering message contains a value of 0%. */
+  CHECK_FOR_BUFFERING_MSG (pipe, 0);
+
+  /* Feed data. queue will be filled to 80% (because it pushes 80000 bytes),
+   * which is below the high-threshold, provoking a buffering message. */
+  thread = g_thread_new ("push1", pad_push_datablock_thread, inputpad);
+  g_thread_join (thread);
+
+  /* Check for the buffering message; it should indicate 80% fill level
+   * (Note that the percentage from the message is normalized) */
+  CHECK_FOR_BUFFERING_MSG (pipe, 80);
+
+  /* Increase the buffer size and lower the watermarks to test
+   * if <1% watermarks are supported. */
+  g_object_set (queue2,
+      "max-size-bytes", (guint) 20 * 1000 * 1000,
+      "low-watermark", (gdouble) 0.0001, "high-watermark", (gdouble) 0.005,
+      NULL);
+
+  /* First buffering message is posted after the max-size-bytes limit
+   * is set to 20000000 bytes & the low-watermark is set. Since the
+   * queue contains 80000 bytes, and the high watermark still is
+   * 0.1 at this point, and the buffer level 80000 / 20000000 = 0.004 is
+   * normalized by 0.1: 0.004 / 0.1 => buffering percentage 4%. */
+  CHECK_FOR_BUFFERING_MSG (pipe, 4);
+  /* Second buffering message is posted after the high-watermark limit
+   * is set to 0.005. This time, the buffer level is normalized this way:
+   * 0.004 / 0.005 => buffering percentage 80%. */
+  CHECK_FOR_BUFFERING_MSG (pipe, 80);
+
+  gst_element_set_state (pipe, GST_STATE_NULL);
+  gst_object_unref (pipe);
+}
+
+GST_END_TEST;
+
 static gpointer
 push_buffer (GstPad * sinkpad)
 {
@@ -333,6 +501,45 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_small_ring_buffer)
+{
+  GstElement *pipeline;
+  GstElement *queue2;
+  const gchar *desc;
+  GstBus *bus;
+  GstMessage *msg;
+
+  /* buffer too small to seek used to crash, test for regression */
+  desc = "fakesrc sizetype=2 sizemax=4096 num-buffers=100 datarate=1000 ! "
+      "queue2 ring-buffer-max-size=1000 name=q2 ! fakesink sync=true";
+
+  pipeline = gst_parse_launch (desc, NULL);
+  fail_if (pipeline == NULL);
+
+  queue2 = gst_bin_get_by_name (GST_BIN (pipeline), "q2");
+  fail_if (queue2 == NULL);
+
+  /* bring the pipeline to PLAYING, then start switching */
+  bus = gst_element_get_bus (pipeline);
+  fail_if (bus == NULL);
+  gst_element_set_state (pipeline, GST_STATE_PLAYING);
+  /* Wait for the pipeline to hit playing */
+  gst_element_get_state (pipeline, NULL, NULL, GST_CLOCK_TIME_NONE);
+
+  /* now wait for completion or error */
+  msg = gst_bus_poll (bus, GST_MESSAGE_EOS | GST_MESSAGE_ERROR, -1);
+  fail_if (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ERROR,
+      "Expected EOS message, got ERROR message");
+  gst_message_unref (msg);
+
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+  gst_object_unref (queue2);
+  gst_object_unref (bus);
+  gst_object_unref (pipeline);
+}
+
+GST_END_TEST;
+
 static Suite *
 queue2_suite (void)
 {
@@ -345,8 +552,10 @@
   tcase_add_test (tc_chain, test_simple_pipeline_ringbuffer);
   tcase_add_test (tc_chain, test_simple_shutdown_while_running);
   tcase_add_test (tc_chain, test_simple_shutdown_while_running_ringbuffer);
+  tcase_add_test (tc_chain, test_watermark_and_fill_level);
   tcase_add_test (tc_chain, test_filled_read);
   tcase_add_test (tc_chain, test_percent_overflow);
+  tcase_add_test (tc_chain, test_small_ring_buffer);
 
   return s;
 }
diff --git a/tests/check/elements/selector.c b/tests/check/elements/selector.c
index 1bb2d02..c7320e6 100644
--- a/tests/check/elements/selector.c
+++ b/tests/check/elements/selector.c
@@ -470,6 +470,8 @@
   gst_pad_set_active (output_pad, FALSE);
   gst_check_teardown_sink_pad (selector);
   gst_check_teardown_element (selector);
+  gst_object_unref (stream1_pad);
+  gst_object_unref (stream2_pad);
 
   g_mutex_clear (&eos_probe_lock);
   g_cond_clear (&eos_probe_cond);
diff --git a/tests/check/elements/streamiddemux.c b/tests/check/elements/streamiddemux.c
index 8c10bce..25bb969 100644
--- a/tests/check/elements/streamiddemux.c
+++ b/tests/check/elements/streamiddemux.c
@@ -63,9 +63,10 @@
 
   gst_caps_unref (td->mycaps);
 
-  if (active_srcpad)
+  if (active_srcpad) {
     gst_object_unref (active_srcpad);
-
+    active_srcpad = NULL;
+  }
   gst_object_unref (td->demux);
 }
 
@@ -265,15 +266,15 @@
 static gboolean
 sink_event_func (GstPad * pad, GstObject * parent, GstEvent * event)
 {
-  GList **expected = GST_PAD_ELEMENT_PRIVATE (pad);
+  GList **expected = GST_PAD_ELEMENT_PRIVATE (pad), *l;
   GstEvent *exp;
 
   switch (GST_EVENT_TYPE (event)) {
     case GST_EVENT_CAPS:{
       GstCaps *recvcaps, *expectcaps;
 
-      *expected = g_list_first (*expected);
-      exp = GST_EVENT ((*expected)->data);
+      l = g_list_first (*expected);
+      exp = GST_EVENT (l->data);
 
       gst_event_parse_caps (event, &recvcaps);
       gst_event_parse_caps (exp, &expectcaps);
@@ -284,8 +285,8 @@
     case GST_EVENT_SEGMENT:{
       const GstSegment *recvseg, *expectseg;
 
-      *expected = g_list_last (*expected);
-      exp = GST_EVENT ((*expected)->data);
+      l = g_list_last (*expected);
+      exp = GST_EVENT (l->data);
 
       gst_event_parse_segment (event, &recvseg);
       gst_event_parse_segment (exp, &expectseg);
@@ -395,6 +396,8 @@
 
   for (stream_cnt = 0; stream_cnt < NUM_SUBSTREAMS; ++stream_cnt) {
     gst_object_unref (td.mysink[stream_cnt]);
+
+    g_list_free_full (expected[stream_cnt], (GDestroyNotify) gst_event_unref);
   }
   gst_object_unref (td.mysrc);
 
diff --git a/tests/check/gst/gstbin.c b/tests/check/gst/gstbin.c
index 297f6b4..30e0bef 100644
--- a/tests/check/gst/gstbin.c
+++ b/tests/check/gst/gstbin.c
@@ -296,6 +296,8 @@
 
   ASSERT_OBJECT_REFCOUNT (bin, "bin", 1);
 
+  gst_bus_set_flushing (bus, TRUE);
+
   /* clean up */
   ret = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_NULL);
   fail_unless (ret == GST_STATE_CHANGE_SUCCESS);
@@ -359,9 +361,12 @@
   ASSERT_OBJECT_REFCOUNT (src, "src", 1);
   ASSERT_OBJECT_REFCOUNT (bin, "bin", 1);
 
+  gst_bus_set_flushing (bus, TRUE);
+
   /* clean up */
   ret = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_NULL);
   fail_unless (ret == GST_STATE_CHANGE_SUCCESS);
+
   gst_object_unref (bus);
   gst_object_unref (bin);
 }
@@ -579,7 +584,8 @@
   fail_unless (gst_bus_have_pending (bus) == FALSE,
       "Unexpected messages on bus");
 
-  /* setting bin to NULL flushes the bus automatically */
+  gst_bus_set_flushing (bus, TRUE);
+
   ret = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_NULL);
   fail_unless (ret == GST_STATE_CHANGE_SUCCESS);
 
@@ -1422,6 +1428,7 @@
   GstFormat format = GST_FORMAT_BYTES;
   gboolean res;
   gint64 duration;
+  GstBus *bus;
 
   GST_INFO ("preparing test");
 
@@ -1466,6 +1473,10 @@
 
   ck_assert_int_eq (duration, 3000);
 
+  bus = gst_element_get_bus (bin);
+  gst_bus_set_flushing (bus, TRUE);
+  gst_object_unref (bus);
+
   gst_element_set_state (bin, GST_STATE_NULL);
   gst_object_unref (bin);
 }
@@ -1479,6 +1490,7 @@
   GstFormat format = GST_FORMAT_BYTES;
   gboolean res;
   gint64 duration;
+  GstBus *bus;
 
   GST_INFO ("preparing test");
 
@@ -1523,13 +1535,165 @@
 
   ck_assert_int_eq (duration, GST_CLOCK_TIME_NONE);
 
+  bus = gst_element_get_bus (bin);
+  gst_bus_set_flushing (bus, TRUE);
+  gst_object_unref (bus);
+
   gst_element_set_state (bin, GST_STATE_NULL);
   gst_object_unref (bin);
 }
 
 GST_END_TEST;
 
+static gboolean
+element_in_list (GList ** list, GstElement * element)
+{
+  GList *l = g_list_find (*list, element);
 
+  if (l == NULL)
+    return FALSE;
+
+  *list = g_list_delete_link (*list, l);
+  return TRUE;
+}
+
+#define element_was_added(e) element_in_list(&added,e)
+#define element_was_removed(e) element_in_list(&removed,e)
+
+static void
+add_cb (GstBin * pipeline, GstBin * bin, GstElement * element, GList ** list)
+{
+  fail_unless (GST_OBJECT_PARENT (element) == GST_OBJECT_CAST (bin));
+
+  *list = g_list_prepend (*list, element);
+}
+
+static void
+remove_cb (GstBin * pipeline, GstBin * bin, GstElement * element, GList ** list)
+{
+  *list = g_list_prepend (*list, element);
+}
+
+GST_START_TEST (test_deep_added_removed)
+{
+  GstElement *pipe, *e, *bin0, *bin1;
+  gulong id_removed, id_added;
+  GList *removed = NULL;
+  GList *added = NULL;
+
+  pipe = gst_pipeline_new (NULL);
+
+  id_added = g_signal_connect (pipe, "deep-element-added",
+      G_CALLBACK (add_cb), &added);
+  id_removed = g_signal_connect (pipe, "deep-element-removed",
+      G_CALLBACK (remove_cb), &removed);
+
+  /* simple add/remove */
+  e = gst_element_factory_make ("identity", NULL);
+  gst_bin_add (GST_BIN (pipe), e);
+  fail_unless (element_was_added (e));
+  gst_bin_remove (GST_BIN (pipe), e);
+  fail_unless (element_was_removed (e));
+
+  /* let's try with a deeper hierarchy, construct it from top-level down */
+  bin0 = gst_bin_new (NULL);
+  gst_bin_add (GST_BIN (pipe), bin0);
+  bin1 = gst_bin_new (NULL);
+  gst_bin_add (GST_BIN (bin0), bin1);
+  e = gst_element_factory_make ("identity", NULL);
+  gst_bin_add (GST_BIN (bin1), e);
+  fail_unless (element_was_added (bin0));
+  fail_unless (element_was_added (bin1));
+  fail_unless (element_was_added (e));
+  fail_unless (added == NULL);
+  fail_unless (removed == NULL);
+
+  gst_object_ref (e);           /* keep e alive */
+  gst_bin_remove (GST_BIN (bin1), e);
+  fail_unless (element_was_removed (e));
+  fail_unless (added == NULL);
+  fail_unless (removed == NULL);
+
+  /* now add existing bin hierarchy to pipeline (first remove it so we can re-add it) */
+  gst_object_ref (bin0);        /* keep bin0 alive */
+  gst_bin_remove (GST_BIN (pipe), bin0);
+  fail_unless (element_was_removed (bin0));
+  fail_unless (element_was_removed (bin1));
+  fail_unless (added == NULL);
+  fail_unless (removed == NULL);
+
+  /* re-adding element to removed bin should not trigger our callbacks */
+  gst_bin_add (GST_BIN (bin1), e);
+  fail_unless (added == NULL);
+  fail_unless (removed == NULL);
+
+  gst_bin_add (GST_BIN (pipe), bin0);
+  fail_unless (element_was_added (bin0));
+  fail_unless (element_was_added (bin1));
+  fail_unless (element_was_added (e));
+  fail_unless (added == NULL);
+  fail_unless (removed == NULL);
+  gst_object_unref (bin0);
+  gst_object_unref (e);
+
+  /* disconnect signals, unref will trigger remove callbacks otherwise */
+  g_signal_handler_disconnect (pipe, id_added);
+  g_signal_handler_disconnect (pipe, id_removed);
+
+  gst_object_unref (pipe);
+}
+
+GST_END_TEST;
+
+#define _GST_CHECK_BIN_SUPPRESSED_FLAGS(element_flags, suppressed_flags, \
+    expected_flags) \
+G_STMT_START { \
+  GstBin *bin = GST_BIN (gst_bin_new ("test-bin")); \
+  GstElement *element = gst_element_factory_make ("identity", "test-i"); \
+  GstElementFlags natural_flags = GST_OBJECT_FLAGS (bin); \
+  GST_OBJECT_FLAG_SET (element, element_flags); \
+  gst_bin_set_suppressed_flags (bin, suppressed_flags); \
+  gst_bin_add (bin, element); \
+  fail_unless ((natural_flags | GST_OBJECT_FLAGS (bin)) \
+      == expected_flags); \
+  gst_object_unref (bin); \
+} G_STMT_END
+
+GST_START_TEST (test_suppressed_flags)
+{
+  _GST_CHECK_BIN_SUPPRESSED_FLAGS (GST_ELEMENT_FLAG_SOURCE,
+      0, GST_ELEMENT_FLAG_SOURCE);
+  _GST_CHECK_BIN_SUPPRESSED_FLAGS (GST_ELEMENT_FLAG_SOURCE,
+      GST_ELEMENT_FLAG_SOURCE, 0);
+  _GST_CHECK_BIN_SUPPRESSED_FLAGS (GST_ELEMENT_FLAG_SOURCE,
+      GST_ELEMENT_FLAG_SINK, GST_ELEMENT_FLAG_SOURCE);
+  _GST_CHECK_BIN_SUPPRESSED_FLAGS (GST_ELEMENT_FLAG_SOURCE |
+      GST_ELEMENT_FLAG_PROVIDE_CLOCK,
+      GST_ELEMENT_FLAG_PROVIDE_CLOCK, GST_ELEMENT_FLAG_SOURCE);
+
+  _GST_CHECK_BIN_SUPPRESSED_FLAGS (GST_ELEMENT_FLAG_SINK,
+      0, GST_ELEMENT_FLAG_SINK);
+  _GST_CHECK_BIN_SUPPRESSED_FLAGS (GST_ELEMENT_FLAG_SINK,
+      GST_ELEMENT_FLAG_SINK, 0);
+  _GST_CHECK_BIN_SUPPRESSED_FLAGS (GST_ELEMENT_FLAG_SINK,
+      GST_ELEMENT_FLAG_SOURCE, GST_ELEMENT_FLAG_SINK);
+
+  _GST_CHECK_BIN_SUPPRESSED_FLAGS (GST_ELEMENT_FLAG_PROVIDE_CLOCK,
+      0, GST_ELEMENT_FLAG_PROVIDE_CLOCK);
+  _GST_CHECK_BIN_SUPPRESSED_FLAGS (GST_ELEMENT_FLAG_PROVIDE_CLOCK,
+      GST_ELEMENT_FLAG_PROVIDE_CLOCK, 0);
+  _GST_CHECK_BIN_SUPPRESSED_FLAGS (GST_ELEMENT_FLAG_PROVIDE_CLOCK,
+      GST_ELEMENT_FLAG_REQUIRE_CLOCK, GST_ELEMENT_FLAG_PROVIDE_CLOCK);
+
+  _GST_CHECK_BIN_SUPPRESSED_FLAGS (GST_ELEMENT_FLAG_REQUIRE_CLOCK,
+      0, GST_ELEMENT_FLAG_REQUIRE_CLOCK);
+  _GST_CHECK_BIN_SUPPRESSED_FLAGS (GST_ELEMENT_FLAG_REQUIRE_CLOCK,
+      GST_ELEMENT_FLAG_REQUIRE_CLOCK, 0);
+  _GST_CHECK_BIN_SUPPRESSED_FLAGS (GST_ELEMENT_FLAG_REQUIRE_CLOCK,
+      GST_ELEMENT_FLAG_PROVIDE_CLOCK, GST_ELEMENT_FLAG_REQUIRE_CLOCK);
+}
+
+GST_END_TEST;
 
 static Suite *
 gst_bin_suite (void)
@@ -1560,6 +1724,8 @@
   tcase_add_test (tc_chain, test_state_change_skip);
   tcase_add_test (tc_chain, test_duration_is_max);
   tcase_add_test (tc_chain, test_duration_unknown_overrides);
+  tcase_add_test (tc_chain, test_deep_added_removed);
+  tcase_add_test (tc_chain, test_suppressed_flags);
 
   /* fails on OSX build bot for some reason, and is a bit silly anyway */
   if (0)
diff --git a/tests/check/gst/gstbuffer.c b/tests/check/gst/gstbuffer.c
index 66bb5d4..620d857 100644
--- a/tests/check/gst/gstbuffer.c
+++ b/tests/check/gst/gstbuffer.c
@@ -24,12 +24,6 @@
 # include "config.h"
 #endif
 
-#ifdef HAVE_VALGRIND_H
-# include <valgrind/valgrind.h>
-#else
-# define RUNNING_ON_VALGRIND FALSE
-#endif
-
 #include <gst/check/gstcheck.h>
 
 GST_START_TEST (test_subbuffer)
@@ -466,20 +460,6 @@
   gst_buffer_unmap (buf, &info);
 
   gst_buffer_unref (buf);
-
-#if 0
-  /* Disabled this part of the test, because it happily succeeds on 64-bit
-   * machines that have enough memory+swap, because the address space is large
-   * enough. There's not really any way to test the failure case except by 
-   * allocating chunks of memory until it fails, which would suck. */
-
-  /* now this better fail (don't run in valgrind, it will abort
-   * or warn when passing silly arguments to malloc) */
-  if (!RUNNING_ON_VALGRIND) {
-    buf = gst_buffer_new_and_alloc ((guint) - 1);
-    fail_unless (buf == NULL);
-  }
-#endif
 }
 
 GST_END_TEST;
diff --git a/tests/check/gst/gstbufferpool.c b/tests/check/gst/gstbufferpool.c
index 8dd265a..8b05324 100644
--- a/tests/check/gst/gstbufferpool.c
+++ b/tests/check/gst/gstbufferpool.c
@@ -35,6 +35,27 @@
   return pool;
 }
 
+static void
+buffer_destroy_notify (gpointer ptr)
+{
+  gint *counter = ptr;
+
+  GST_DEBUG ("buffer destroyed");
+
+  *counter += 1;
+}
+
+/* Track when a buffer is destroyed. The counter will be increased if the
+ * buffer is finalized (but not if it was re-surrected in dispose and put
+ * back into the buffer pool. */
+static void
+buffer_track_destroy (GstBuffer * buf, gint * counter)
+{
+  gst_mini_object_set_qdata (GST_MINI_OBJECT (buf),
+      g_quark_from_static_string ("TestTracker"),
+      counter, buffer_destroy_notify);
+}
+
 GST_START_TEST (test_new_buffer_from_empty_pool)
 {
   GstBufferPool *pool = create_pool (10, 0, 0);
@@ -56,18 +77,26 @@
 {
   GstBufferPool *pool = create_pool (10, 0, 0);
   GstBuffer *buf = NULL, *prev;
+  gint dcount = 0;
 
   gst_buffer_pool_set_active (pool, TRUE);
   gst_buffer_pool_acquire_buffer (pool, &buf, NULL);
   prev = buf;
+  buffer_track_destroy (buf, &dcount);
   gst_buffer_unref (buf);
 
+  /* buffer should not have been freed, but have been recycled */
+  fail_unless (dcount == 0);
+
   gst_buffer_pool_acquire_buffer (pool, &buf, NULL);
   fail_unless (buf == prev, "got a fresh buffer instead of previous");
 
   gst_buffer_unref (buf);
   gst_buffer_pool_set_active (pool, FALSE);
   gst_object_unref (pool);
+
+  /* buffer should now be gone */
+  fail_unless (dcount == 1);
 }
 
 GST_END_TEST;
@@ -77,13 +106,19 @@
 {
   GstBufferPool *pool = create_pool (10, 0, 0);
   GstBuffer *buf1 = NULL, *buf2 = NULL, *prev;
+  gint dcount1 = 0, dcount2 = 0;
 
   gst_buffer_pool_set_active (pool, TRUE);
   gst_buffer_pool_acquire_buffer (pool, &buf1, NULL);
+  buffer_track_destroy (buf1, &dcount1);
   gst_buffer_pool_acquire_buffer (pool, &buf2, NULL);
+  buffer_track_destroy (buf2, &dcount2);
   prev = buf2;
   gst_buffer_unref (buf2);
 
+  /* buffer should not have been freed, but have been recycled */
+  fail_unless (dcount2 == 0);
+
   gst_buffer_pool_acquire_buffer (pool, &buf2, NULL);
   fail_unless (buf2 == prev, "got a fresh buffer instead of previous");
 
@@ -91,6 +126,9 @@
   gst_buffer_unref (buf2);
   gst_buffer_pool_set_active (pool, FALSE);
   gst_object_unref (pool);
+
+  fail_unless (dcount1 == 1);
+  fail_unless (dcount2 == 1);
 }
 
 GST_END_TEST;
@@ -133,31 +171,44 @@
   GstBufferPool *pool = create_pool (10, 0, 0);
   GstBuffer *buf = NULL, *prev;
   GstMemory *mem;
+  gint dcount = 0;
 
   gst_buffer_pool_set_active (pool, TRUE);
   gst_buffer_pool_acquire_buffer (pool, &buf, NULL);
+  fail_unless (buf != NULL);
   prev = buf;
+  buffer_track_destroy (buf, &dcount);
   /* remove all memory, pool should not reuse this buffer */
   gst_buffer_remove_all_memory (buf);
   gst_buffer_unref (buf);
 
+  /* buffer should've been destroyed instead of going back into pool */
+  fail_unless_equals_int (dcount, 1);
+
   gst_buffer_pool_acquire_buffer (pool, &buf, NULL);
-  fail_if (buf == prev, "got a reused buffer instead of new one");
   prev = buf;
+  buffer_track_destroy (buf, &dcount);
   /* do resize, pool should not reuse this buffer */
   gst_buffer_resize (buf, 5, 2);
   gst_buffer_unref (buf);
 
+  /* buffer should've been destroyed instead of going back into pool */
+  fail_unless_equals_int (dcount, 2);
+
   gst_buffer_pool_acquire_buffer (pool, &buf, NULL);
-  fail_if (buf == prev, "got a reused buffer instead of new one");
   prev = buf;
+  buffer_track_destroy (buf, &dcount);
   /* keep ref to memory, not exclusive so pool should reuse this buffer */
   mem = gst_buffer_get_memory (buf, 0);
   gst_buffer_unref (buf);
   gst_memory_unref (mem);
 
+  /* buffer should not have been destroyed and gone back into pool */
+  fail_unless_equals_int (dcount, 2);
+
   gst_buffer_pool_acquire_buffer (pool, &buf, NULL);
   fail_unless (buf == prev, "got a fresh buffer instead of previous");
+  /* we're already did track_destroy on this buf, so no need to do it again */
   mem = gst_buffer_get_memory (buf, 0);
   /* exclusive lock so pool should not reuse this buffer */
   gst_memory_lock (mem, GST_LOCK_FLAG_EXCLUSIVE);
@@ -165,9 +216,10 @@
   gst_memory_unlock (mem, GST_LOCK_FLAG_EXCLUSIVE);
   gst_memory_unref (mem);
 
-  gst_buffer_pool_acquire_buffer (pool, &buf, NULL);
-  fail_if (buf == prev, "got a reused buffer instead of new one");
-  gst_buffer_unref (buf);
+  /* buffer should have been destroyed and not gone back into pool because
+   * of the exclusive lock */
+  fail_unless_equals_int (dcount, 3);
+
   gst_buffer_pool_set_active (pool, FALSE);
   gst_object_unref (pool);
 }
diff --git a/tests/check/gst/gstcpp.cc b/tests/check/gst/gstcpp.cc
index c6aaf73..a96667a 100644
--- a/tests/check/gst/gstcpp.cc
+++ b/tests/check/gst/gstcpp.cc
@@ -1,2 +1,46 @@
-#include "gst.c"
+/* GStreamer C++ compiler include compatibility test
+ * Copyright (C) 2016 Tim-Philipp Müller <tim centricular com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
 
+#include <gst/gst.h>
+#include <gst/check/check.h>
+
+GST_START_TEST (test_init_macros)
+{
+  GstMapInfo map = GST_MAP_INFO_INIT;
+  GstPollFD poll_fd = GST_POLL_FD_INIT;
+
+  fail_unless_equals_int (map.size, 0);
+  fail_unless_equals_int (poll_fd.fd, -1);
+}
+
+GST_END_TEST;
+
+static Suite *
+gst_cpp_suite (void)
+{
+  Suite *s = suite_create ("GstC++");
+  TCase *tc_chain = tcase_create ("gst C++ tests");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_init_macros);
+
+  return s;
+}
+
+GST_CHECK_MAIN (gst_cpp);
diff --git a/tests/check/gst/gstelement.c b/tests/check/gst/gstelement.c
index 8732611..e2505bb 100644
--- a/tests/check/gst/gstelement.c
+++ b/tests/check/gst/gstelement.c
@@ -347,6 +347,141 @@
 
 GST_END_TEST;
 
+/* need to return the message here because object, property name and value
+ * are only valid as long as we keep the message alive */
+static GstMessage *
+bus_wait_for_notify_message (GstBus * bus, GstElement ** obj,
+    const gchar ** prop_name, const GValue ** val)
+{
+  GstMessage *msg;
+
+  do {
+    msg = gst_bus_timed_pop_filtered (bus, -1, GST_MESSAGE_ANY);
+    if (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_PROPERTY_NOTIFY)
+      break;
+    gst_message_unref (msg);
+  } while (TRUE);
+
+  gst_message_parse_property_notify (msg, (GstObject **) obj, prop_name, val);
+  return msg;
+}
+
+GST_START_TEST (test_property_notify_message)
+{
+  GstElement *pipeline, *identity;
+  gulong watch_id0, watch_id1, watch_id2, deep_watch_id1, deep_watch_id2;
+  GstBus *bus;
+
+  pipeline = gst_pipeline_new (NULL);
+  identity = gst_element_factory_make ("identity", NULL);
+  gst_bin_add (GST_BIN (pipeline), identity);
+
+  bus = GST_ELEMENT_BUS (pipeline);
+
+  /* need to set state to READY, otherwise bus will be flushing and discard
+   * our messages */
+  gst_element_set_state (pipeline, GST_STATE_READY);
+
+  watch_id0 = gst_element_add_property_notify_watch (identity, NULL, FALSE);
+
+  watch_id1 = gst_element_add_property_notify_watch (identity, "sync", FALSE);
+
+  watch_id2 = gst_element_add_property_notify_watch (identity, "silent", TRUE);
+
+  deep_watch_id1 =
+      gst_element_add_property_deep_notify_watch (pipeline, NULL, TRUE);
+
+  deep_watch_id2 =
+      gst_element_add_property_deep_notify_watch (pipeline, "silent", FALSE);
+
+  /* Now test property changes and if we get the messages we expect. We rely
+   * on the signals being fired in the order that they were set up here. */
+  {
+    const GValue *val;
+    const gchar *name;
+    GstMessage *msg;
+    GstElement *obj;
+
+    /* A - This should be picked up by... */
+    g_object_set (identity, "dump", TRUE, NULL);
+    /* 1) the catch-all notify on the element (no value) */
+    msg = bus_wait_for_notify_message (bus, &obj, &name, &val);
+    fail_unless (obj == identity);
+    fail_unless_equals_string (name, "dump");
+    fail_unless (val == NULL);
+    gst_message_unref (msg);
+    /* 2) the catch-all deep-notify on the pipeline (with value) */
+    msg = bus_wait_for_notify_message (bus, &obj, &name, &val);
+    fail_unless_equals_string (name, "dump");
+    fail_unless (obj == identity);
+    fail_unless (G_VALUE_HOLDS_BOOLEAN (val));
+    fail_unless_equals_int (g_value_get_boolean (val), TRUE);
+    gst_message_unref (msg);
+
+    /* B - This should be picked up by... */
+    g_object_set (identity, "sync", TRUE, NULL);
+    /* 1) the catch-all notify on the element (no value) */
+    msg = bus_wait_for_notify_message (bus, &obj, &name, &val);
+    fail_unless (obj == identity);
+    fail_unless_equals_string (name, "sync");
+    fail_unless (val == NULL);
+    gst_message_unref (msg);
+    /* 2) the "sync" notify on the element (no value) */
+    msg = bus_wait_for_notify_message (bus, &obj, &name, &val);
+    fail_unless (obj == identity);
+    fail_unless_equals_string (name, "sync");
+    fail_unless (val == NULL);
+    gst_message_unref (msg);
+    /* 3) the catch-all deep-notify on the pipeline (with value) */
+    msg = bus_wait_for_notify_message (bus, &obj, &name, &val);
+    fail_unless_equals_string (name, "sync");
+    fail_unless (obj == identity);
+    fail_unless (G_VALUE_HOLDS_BOOLEAN (val));
+    fail_unless_equals_int (g_value_get_boolean (val), TRUE);
+    gst_message_unref (msg);
+
+    /* C - This should be picked up by... */
+    g_object_set (identity, "silent", FALSE, NULL);
+    /* 1) the catch-all notify on the element (no value) */
+    msg = bus_wait_for_notify_message (bus, &obj, &name, &val);
+    fail_unless (obj == identity);
+    fail_unless_equals_string (name, "silent");
+    fail_unless (val == NULL);
+    gst_message_unref (msg);
+    /* 2) the "silent" notify on the element (with value) */
+    msg = bus_wait_for_notify_message (bus, &obj, &name, &val);
+    fail_unless (obj == identity);
+    fail_unless_equals_string (name, "silent");
+    fail_unless (val != NULL);
+    fail_unless (G_VALUE_HOLDS_BOOLEAN (val));
+    fail_unless_equals_int (g_value_get_boolean (val), FALSE);
+    gst_message_unref (msg);
+    /* 3) the catch-all deep-notify on the pipeline (with value) */
+    msg = bus_wait_for_notify_message (bus, &obj, &name, &val);
+    fail_unless_equals_string (name, "silent");
+    fail_unless (obj == identity);
+    fail_unless (G_VALUE_HOLDS_BOOLEAN (val));
+    fail_unless_equals_int (g_value_get_boolean (val), FALSE);
+    gst_message_unref (msg);
+    /* 4) the "silent" deep-notify on the pipeline (without value) */
+    msg = bus_wait_for_notify_message (bus, &obj, &name, &val);
+    fail_unless_equals_string (name, "silent");
+    fail_unless (obj == identity);
+    fail_unless (val == NULL);
+    gst_message_unref (msg);
+  }
+
+  gst_element_remove_property_notify_watch (identity, watch_id0);
+  gst_element_remove_property_notify_watch (identity, watch_id1);
+  gst_element_remove_property_notify_watch (identity, watch_id2);
+  gst_element_remove_property_notify_watch (pipeline, deep_watch_id1);
+  gst_element_remove_property_notify_watch (pipeline, deep_watch_id2);
+  gst_element_set_state (pipeline, GST_STATE_NULL);
+  gst_object_unref (pipeline);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_element_suite (void)
 {
@@ -360,6 +495,7 @@
   tcase_add_test (tc_chain, test_link);
   tcase_add_test (tc_chain, test_link_no_pads);
   tcase_add_test (tc_chain, test_pad_templates);
+  tcase_add_test (tc_chain, test_property_notify_message);
 
   return s;
 }
diff --git a/tests/check/gst/gstelementfactory.c b/tests/check/gst/gstelementfactory.c
index 366a1c2..47c125c 100644
--- a/tests/check/gst/gstelementfactory.c
+++ b/tests/check/gst/gstelementfactory.c
@@ -159,6 +159,7 @@
   fail_if (klass->elementfactory == NULL);
   fail_if (klass->elementfactory != factory);
 
+  gst_object_unref (factory);
 }
 
 GST_END_TEST;
diff --git a/tests/check/gst/gstevent.c b/tests/check/gst/gstevent.c
index 387f229..5e93b5d 100644
--- a/tests/check/gst/gstevent.c
+++ b/tests/check/gst/gstevent.c
@@ -52,6 +52,48 @@
     fail_unless (reset_time == TRUE);
     gst_event_unref (event);
   }
+
+  /* SELECT_STREAMS */
+  {
+    GList *streams = NULL;
+    GList *res = NULL;
+    GList *tmp;
+    streams = g_list_append (streams, (gpointer) "stream1");
+    streams = g_list_append (streams, (gpointer) "stream2");
+    event = gst_event_new_select_streams (streams);
+    fail_if (event == NULL);
+    fail_unless (GST_EVENT_TYPE (event) == GST_EVENT_SELECT_STREAMS);
+    fail_unless (GST_EVENT_IS_UPSTREAM (event));
+
+    gst_event_parse_select_streams (event, &res);
+    fail_if (res == NULL);
+    fail_unless_equals_int (g_list_length (res), 2);
+    tmp = res;
+    fail_unless_equals_string (tmp->data, "stream1");
+    tmp = tmp->next;
+    fail_unless_equals_string (tmp->data, "stream2");
+
+    gst_event_unref (event);
+
+    g_list_free (streams);
+    g_list_free_full (res, g_free);
+  }
+
+  /* STREAM_GROUP_DONE */
+  {
+    guint group_id = 0;
+
+    event = gst_event_new_stream_group_done (0x42);
+    fail_if (event == NULL);
+    fail_unless (GST_EVENT_TYPE (event) == GST_EVENT_STREAM_GROUP_DONE);
+    fail_if (GST_EVENT_IS_UPSTREAM (event));
+    fail_unless (GST_EVENT_IS_DOWNSTREAM (event));
+    fail_unless (GST_EVENT_IS_SERIALIZED (event));
+    gst_event_parse_stream_group_done (event, &group_id);
+    fail_unless (group_id == 0x42);
+    gst_event_unref (event);
+  }
+
   /* EOS */
   {
     event = gst_event_new_eos ();
@@ -219,6 +261,37 @@
     gst_event_unref (event);
   }
 
+  /* STREAM_COLLECTION */
+  {
+    GstStreamCollection *collection, *res = NULL;
+    GstStream *stream1, *stream2;
+    GstCaps *caps1, *caps2;
+
+    /* Create a collection of two streams */
+    caps1 = gst_caps_from_string ("some/caps");
+    caps2 = gst_caps_from_string ("some/other-string");
+
+    stream1 = gst_stream_new ("stream-1", caps1, GST_STREAM_TYPE_AUDIO, 0);
+    stream2 = gst_stream_new ("stream-2", caps2, GST_STREAM_TYPE_VIDEO, 0);
+
+    collection = gst_stream_collection_new ("something");
+    fail_unless (gst_stream_collection_add_stream (collection, stream1));
+    fail_unless (gst_stream_collection_add_stream (collection, stream2));
+
+    event = gst_event_new_stream_collection (collection);
+    fail_unless (event != NULL);
+
+    gst_event_parse_stream_collection (event, &res);
+    fail_unless (res != NULL);
+    fail_unless (res == collection);
+
+    gst_event_unref (event);
+    gst_object_unref (res);
+    gst_object_unref (collection);
+    gst_caps_unref (caps1);
+    gst_caps_unref (caps2);
+  }
+
   /* NAVIGATION */
   {
     structure = gst_structure_new ("application/x-gst-navigation", "event",
diff --git a/tests/check/gst/gstmemory.c b/tests/check/gst/gstmemory.c
index 079174d..d0b3a78 100644
--- a/tests/check/gst/gstmemory.c
+++ b/tests/check/gst/gstmemory.c
@@ -24,12 +24,6 @@
 # include "config.h"
 #endif
 
-#ifdef HAVE_VALGRIND_H
-# include <valgrind/valgrind.h>
-#else
-# define RUNNING_ON_VALGRIND FALSE
-#endif
-
 #include <gst/check/gstcheck.h>
 
 GST_START_TEST (test_submemory)
@@ -271,20 +265,6 @@
   gst_memory_unmap (mem, &info);
 
   gst_memory_unref (mem);
-
-#if 0
-  /* Disabled this part of the test, because it happily succeeds on 64-bit
-   * machines that have enough memory+swap, because the address space is large
-   * enough. There's not really any way to test the failure case except by
-   * allocating chunks of memory until it fails, which would suck. */
-
-  /* now this better fail (don't run in valgrind, it will abort
-   * or warn when passing silly arguments to malloc) */
-  if (!RUNNING_ON_VALGRIND) {
-    mem = gst_allocator_alloc (NULL, (guint) - 1, 0);
-    fail_unless (mem == NULL);
-  }
-#endif
 }
 
 GST_END_TEST;
diff --git a/tests/check/gst/gstmessage.c b/tests/check/gst/gstmessage.c
index 94d5cdd..9c8c27a 100644
--- a/tests/check/gst/gstmessage.c
+++ b/tests/check/gst/gstmessage.c
@@ -68,6 +68,46 @@
     g_error_free (error);
     g_free (debug);
   }
+  /* GST_MESSAGE_ERROR with details */
+  {
+    GError *error = NULL;
+    gchar *debug;
+    GstStructure *d;
+    const GstStructure *dc;
+
+    error = g_error_new (domain, 10, "test error");
+    fail_if (error == NULL);
+    d = gst_structure_new ("title", "test-field", G_TYPE_STRING,
+        "test-contents", NULL);
+    message =
+        gst_message_new_error_with_details (NULL, error, "error string", d);
+    fail_if (message == NULL);
+    fail_unless (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ERROR);
+    fail_unless (GST_MESSAGE_SRC (message) == NULL);
+
+    g_error_free (error);
+    error = NULL;
+    debug = NULL;
+
+    gst_message_parse_error (message, NULL, NULL);
+
+    gst_message_parse_error (message, &error, &debug);
+    fail_if (error == NULL);
+    fail_if (debug == NULL);
+    fail_unless (strcmp (error->message, "test error") == 0);
+    fail_unless (error->domain == domain);
+    fail_unless (error->code == 10);
+    fail_unless (strcmp (debug, "error string") == 0);
+    gst_message_parse_error_details (message, &dc);
+    fail_unless (dc != NULL);
+    fail_unless (gst_structure_has_field_typed (dc, "test-field",
+            G_TYPE_STRING));
+    fail_unless (gst_structure_get_string (dc, "test-field"), "test-contents");
+
+    gst_message_unref (message);
+    g_error_free (error);
+    g_free (debug);
+  }
   /* GST_MESSAGE_WARNING   */
   {
     GError *warning = NULL;
@@ -377,6 +417,190 @@
 
     gst_message_unref (message);
   }
+  /* GST_MESSAGE_STREAM_COLLECTION */
+  {
+    GstMessage *message;
+    GstStreamCollection *collection, *res = NULL;
+    GstStream *stream1, *stream2;
+    GstCaps *caps1, *caps2;
+
+    /* Create a collection of two streams */
+    caps1 = gst_caps_from_string ("some/caps");
+    caps2 = gst_caps_from_string ("some/other-string");
+
+    stream1 = gst_stream_new ("stream-1", caps1, GST_STREAM_TYPE_AUDIO, 0);
+    stream2 = gst_stream_new ("stream-2", caps2, GST_STREAM_TYPE_VIDEO, 0);
+
+    collection = gst_stream_collection_new ("something");
+    fail_unless (gst_stream_collection_add_stream (collection, stream1));
+    fail_unless (gst_stream_collection_add_stream (collection, stream2));
+
+    message = gst_message_new_stream_collection (NULL, collection);
+    fail_unless (message != NULL);
+
+    gst_message_parse_stream_collection (message, &res);
+    fail_unless (res != NULL);
+
+    gst_message_unref (message);
+    gst_object_unref (res);
+    gst_object_unref (collection);
+    gst_caps_unref (caps1);
+    gst_caps_unref (caps2);
+  }
+  /* GST_MESSAGE_STREAMS_SELECTED */
+  {
+    GstMessage *message;
+    GstStreamCollection *collection, *res = NULL;
+    GstStream *stream1, *stream2, *stream3;
+    GstCaps *caps1, *caps2;
+
+    /* Create a collection of two streams */
+    caps1 = gst_caps_from_string ("some/caps");
+    caps2 = gst_caps_from_string ("some/other-string");
+
+    stream1 = gst_stream_new ("stream-1", caps1, GST_STREAM_TYPE_AUDIO, 0);
+    stream2 = gst_stream_new ("stream-2", caps2, GST_STREAM_TYPE_VIDEO, 0);
+
+    collection = gst_stream_collection_new ("something");
+    fail_unless (gst_stream_collection_add_stream (collection, stream1));
+    fail_unless (gst_stream_collection_add_stream (collection, stream2));
+
+    message = gst_message_new_streams_selected (NULL, collection);
+    fail_unless (message != NULL);
+
+    gst_message_parse_streams_selected (message, &res);
+    fail_unless (res != NULL);
+
+    fail_unless (gst_message_streams_selected_get_size (message) == 0);
+    gst_object_unref (res);
+    gst_message_unref (message);
+
+    /* Once again, this time with a stream in it */
+    message = gst_message_new_streams_selected (NULL, collection);
+    fail_unless (message != NULL);
+
+    gst_message_streams_selected_add (message, stream1);
+
+    gst_message_parse_streams_selected (message, &res);
+    fail_unless (res != NULL);
+
+    /* There is only one stream ! */
+    fail_unless (gst_message_streams_selected_get_size (message) == 1);
+
+    stream3 = gst_message_streams_selected_get_stream (message, 0);
+    fail_unless (stream3 != NULL);
+    gst_object_unref (stream3);
+
+    /* Shoul fail */
+    ASSERT_CRITICAL (gst_message_streams_selected_get_stream (message, 1));
+
+    gst_object_unref (res);
+    gst_message_unref (message);
+
+    gst_object_unref (collection);
+    gst_caps_unref (caps1);
+    gst_caps_unref (caps2);
+  }
+  /* GST_MESSAGE_REDIRECT */
+  {
+    const gchar *parsed_location;
+    GstTagList *parsed_tag_list;
+    const GstStructure *parsed_structure;
+    const gchar *test_location = "some-location";
+    const gchar *test_struct_name = "test-struct";
+    const gchar *test_value_name = "foo";
+    const gint test_value = 12345;
+    const guint test_bitrate = 120000;
+    gint value;
+    guint bitrate;
+    GstTagList *test_tag_list;
+    GstStructure *test_structure;
+
+    test_structure =
+        gst_structure_new (test_struct_name, test_value_name, G_TYPE_INT,
+        test_value, NULL);
+
+    /* Create a test tag list. It is ref'd  before adding an entry to be able
+     * to test that new_redirect takes ownership */
+    test_tag_list = gst_tag_list_new (GST_TAG_BITRATE, test_bitrate, NULL);
+
+    /* Create the message and add the first entry, which only has a location
+     * and a tag list */
+    gst_tag_list_ref (test_tag_list);
+    message =
+        gst_message_new_redirect (NULL, test_location, test_tag_list, NULL);
+    fail_if (message == NULL);
+    fail_unless (GST_MESSAGE_TYPE (message) == GST_MESSAGE_REDIRECT);
+    fail_unless (GST_MESSAGE_SRC (message) == NULL);
+
+    /* Add the second entry, which only has a location and a structure */
+    gst_message_add_redirect_entry (message, test_location, NULL,
+        gst_structure_copy (test_structure));
+
+    /* Add the third entry, which has a location, a taglist, and a structure */
+    gst_tag_list_ref (test_tag_list);
+    gst_message_add_redirect_entry (message, test_location, test_tag_list,
+        gst_structure_copy (test_structure));
+
+    fail_unless (gst_message_get_num_redirect_entries (message) == 3);
+
+    /* Check that the location of the first entry is correct and that the
+     * structure pointer is set to NULL */
+    parsed_location = NULL;
+    parsed_tag_list = NULL;
+    parsed_structure = (const GstStructure *) 0x1;
+    gst_message_parse_redirect_entry (message, 0, &parsed_location,
+        &parsed_tag_list, &parsed_structure);
+    fail_unless (parsed_location != NULL);
+    fail_unless (parsed_tag_list != NULL);
+    fail_unless (parsed_structure == NULL);
+    fail_unless (!strcmp (parsed_location, test_location));
+    fail_unless (gst_tag_list_get_uint (parsed_tag_list, GST_TAG_BITRATE,
+            &bitrate) && (bitrate == test_bitrate));
+
+    /* Check that the structure of the second entry is correct and that the
+     * tag list pointer is set to NULL */
+    parsed_location = NULL;
+    parsed_tag_list = (GstTagList *) 0x1;
+    parsed_structure = NULL;
+    gst_message_parse_redirect_entry (message, 1, &parsed_location,
+        &parsed_tag_list, &parsed_structure);
+    fail_unless (parsed_location != NULL);
+    fail_unless (parsed_tag_list == NULL);
+    fail_unless (parsed_structure != NULL);
+    fail_unless (!strcmp (parsed_location, test_location));
+    fail_unless (!strcmp (gst_structure_get_name (parsed_structure),
+            test_struct_name));
+    fail_unless (gst_structure_get_int (parsed_structure, test_value_name,
+            &value) && (value == test_value));
+
+    /* Check that the location, tag list, and structure pointers of the
+     * third entry are correct */
+    parsed_location = NULL;
+    parsed_tag_list = NULL;
+    parsed_structure = NULL;
+    gst_message_parse_redirect_entry (message, 2, &parsed_location,
+        &parsed_tag_list, &parsed_structure);
+    fail_unless (parsed_location != NULL);
+    fail_unless (parsed_tag_list != NULL);
+    fail_unless (parsed_structure != NULL);
+    fail_unless (!strcmp (parsed_location, test_location));
+    fail_unless (!strcmp (gst_structure_get_name (parsed_structure),
+            test_struct_name));
+    fail_unless (gst_tag_list_get_uint (parsed_tag_list, GST_TAG_BITRATE,
+            &bitrate) && (bitrate == test_bitrate));
+    fail_unless (gst_structure_get_int (parsed_structure, test_value_name,
+            &value) && (value == test_value));
+
+    gst_message_unref (message);
+
+    /* Since the message takes ownership over the tag list, its refcount
+     * must have been decreased after each added entry */
+    fail_unless_equals_int (GST_MINI_OBJECT_REFCOUNT_VALUE (test_tag_list), 1);
+
+    gst_structure_free (test_structure);
+    gst_tag_list_unref (test_tag_list);
+  }
 }
 
 GST_END_TEST;
diff --git a/tests/check/gst/gstmeta.c b/tests/check/gst/gstmeta.c
index 88205fc..db073e4 100644
--- a/tests/check/gst/gstmeta.c
+++ b/tests/check/gst/gstmeta.c
@@ -24,12 +24,6 @@
 # include "config.h"
 #endif
 
-#ifdef HAVE_VALGRIND_H
-# include <valgrind/valgrind.h>
-#else
-# define RUNNING_ON_VALGRIND FALSE
-#endif
-
 #include <gst/check/gstcheck.h>
 
 /* test metadata for PTS/DTS and duration */
diff --git a/tests/check/gst/gstminiobject.c b/tests/check/gst/gstminiobject.c
index 6351b70..d29438e 100644
--- a/tests/check/gst/gstminiobject.c
+++ b/tests/check/gst/gstminiobject.c
@@ -34,6 +34,9 @@
   fail_if (copy == NULL, "Copy of buffer returned NULL");
   fail_unless (gst_buffer_get_size (copy) == 4,
       "Copy of buffer has different size");
+
+  gst_buffer_unref (buffer);
+  gst_buffer_unref (copy);
 }
 
 GST_END_TEST;
@@ -53,6 +56,9 @@
 
   fail_if (gst_mini_object_is_writable (mobj),
       "A buffer with two refs should not be writable");
+
+  gst_buffer_unref (buffer);
+  gst_mini_object_unref (mobj);
 }
 
 GST_END_TEST;
@@ -84,6 +90,8 @@
   fail_unless (mobj == mobj2,
       "make_writable returned a copy for a buffer with refcount 1");
 
+  gst_buffer_unref (buffer);
+  gst_mini_object_unref (mobj3);
 }
 
 GST_END_TEST;
@@ -124,6 +132,9 @@
 
   expected = num_threads * refs_per_thread + 1;
   ASSERT_MINI_OBJECT_REFCOUNT (mobj, "miniobject", expected);
+
+  while (expected-- != 0)
+    gst_buffer_unref (buffer);
 }
 
 GST_END_TEST;
diff --git a/tests/check/gst/gstobject.c b/tests/check/gst/gstobject.c
index 289750c..96ad284 100644
--- a/tests/check/gst/gstobject.c
+++ b/tests/check/gst/gstobject.c
@@ -86,41 +86,95 @@
 
 GST_END_TEST;
 
+static void
+notify_name (GObject * object, GParamSpec * pspec, gint * out_count)
+{
+  *out_count += 1;
+}
+
 /* GstFakeObject name tests */
-GST_START_TEST (test_fake_object_name)
+GST_START_TEST (test_fake_object_initial_name)
 {
   GstObject *object;
   gchar *name;
-  gchar *name2;
 
   object = g_object_new (gst_fake_object_get_type (), NULL);
 
   name = gst_object_get_name (object);
   fail_if (name == NULL, "Newly created object has no name");
   fail_if (strncmp (name, "fakeobject", 10) != 0,
-      "Random name %s does not start with Gst", name);
+      "Random name %s does not start with 'fakeobject'", name);
   g_free (name);
 
+  gst_object_unref (object);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (test_fake_object_reset_name)
+{
+  GstObject *object;
+  gchar *name;
+  gint count = 0;
+
+  object = g_object_new (gst_fake_object_get_type (), NULL);
+  g_signal_connect (object, "notify::name", G_CALLBACK (notify_name), &count);
+
   /* give a random name by setting with NULL;
    * GstFakeObject class -> fakeobject%d */
-  gst_object_set_name (object, NULL);
+  fail_unless (gst_object_set_name (object, NULL), "Could not set name");
   name = gst_object_get_name (object);
   fail_if (name == NULL, "Random name was not assigned");
   fail_if (strncmp (name, "fakeobject", 10) != 0,
-      "Random name %s does not start with Gst", name);
+      "Random name %s does not start with 'fakeobject'", name);
   g_free (name);
+  fail_unless (count == 1, "Name change was not notified");
 
-  gst_object_set_name (object, "fake");
+  gst_object_unref (object);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (test_fake_object_set_name_via_property)
+{
+  GstObject *object;
+  gchar *name;
+  gint count = 0;
+
+  object = g_object_new (gst_fake_object_get_type (), NULL);
+  g_signal_connect (object, "notify::name", G_CALLBACK (notify_name), &count);
+
+  /* also test the property code path */
+  g_object_set (object, "name", "fake", NULL);
   name = gst_object_get_name (object);
   fail_if (name == NULL, "Failed to get name of GstFakeObject");
   fail_if (strcmp (name, "fake") != 0, "Name of GstFakeObject is not 'fake'");
+  g_free (name);
+  fail_if (count > 1, "Name change was notified multiple time");
+  fail_unless (count == 1, "Name change was not notified");
+
+  gst_object_unref (object);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (test_fake_object_get_name_returns_copy)
+{
+  GstObject *object;
+  gchar *name1, *name2;
+
+  object = g_object_new (gst_fake_object_get_type (), NULL);
 
   /* change the gotten name to see that it's a copy and not the original */
-  name[0] = 'm';
+  name1 = gst_object_get_name (object);
+  name1[0] = 'm';
   name2 = gst_object_get_name (object);
-  fail_if (strcmp (name2, "fake") != 0,
+  fail_if (strncmp (name2, "fakeobject", 10) != 0,
       "Copy of object name affected actual object name");
-  g_free (name);
+  g_free (name1);
   g_free (name2);
 
   gst_object_unref (object);
@@ -128,6 +182,25 @@
 
 GST_END_TEST;
 
+
+GST_START_TEST (test_fake_object_set_name_when_parented)
+{
+  GstObject *object, *parent;
+
+  object = g_object_new (gst_fake_object_get_type (), NULL);
+
+  /* add a parent and ensure name cannot be changed */
+  parent = g_object_new (gst_fake_object_get_type (), NULL);
+  gst_object_set_parent (object, parent);
+  fail_if (gst_object_set_name (object, "broken"),
+      "Could set name on parented object");
+
+  gst_object_unparent (object);
+  gst_object_unref (parent);
+}
+
+GST_END_TEST;
+
 /* thread function for threaded name change test */
 static gpointer
 thread_name_object (GstObject * object)
@@ -549,7 +622,11 @@
 
   suite_add_tcase (s, tc_chain);
   tcase_add_test (tc_chain, test_fake_object_new);
-  tcase_add_test (tc_chain, test_fake_object_name);
+  tcase_add_test (tc_chain, test_fake_object_initial_name);
+  tcase_add_test (tc_chain, test_fake_object_reset_name);
+  tcase_add_test (tc_chain, test_fake_object_set_name_via_property);
+  tcase_add_test (tc_chain, test_fake_object_get_name_returns_copy);
+  tcase_add_test (tc_chain, test_fake_object_set_name_when_parented);
 #if 0
   tcase_add_test (tc_chain, test_fake_object_name_threaded_wrong);
 #endif
diff --git a/tests/check/gst/gstpad.c b/tests/check/gst/gstpad.c
index ada9819..4e098c2 100644
--- a/tests/check/gst/gstpad.c
+++ b/tests/check/gst/gstpad.c
@@ -893,6 +893,7 @@
   buffers = NULL;
 
   /* teardown */
+  gst_check_drop_buffers ();
   gst_pad_unlink (src, sink);
   ASSERT_CAPS_REFCOUNT (caps, "caps", 2);
   gst_object_unref (src);
@@ -988,6 +989,7 @@
   gst_pad_remove_probe (src, id);
 
   /* cleanup */
+  gst_check_drop_buffers ();
   ASSERT_CAPS_REFCOUNT (caps, "caps", 2);
   ASSERT_OBJECT_REFCOUNT (src, "src", 1);
   gst_pad_link (src, sink);
@@ -1085,6 +1087,7 @@
   fail_unless (buffers == NULL);
 
   /* teardown */
+  gst_check_drop_buffers ();
   gst_pad_unlink (src, sink);
   gst_object_unref (src);
   gst_object_unref (sink);
@@ -1177,6 +1180,7 @@
   fail_unless (gst_pad_set_caps (sink, caps) == FALSE);
 
   /* teardown */
+  gst_check_drop_buffers ();
   gst_pad_unlink (src, sink);
   gst_object_unref (src);
   gst_object_unref (sink);
@@ -1459,6 +1463,226 @@
 
 GST_END_TEST;
 
+static gboolean pull_probe_called;
+static gboolean pull_probe_called_with_bad_type;
+static gboolean pull_probe_called_with_bad_data;
+
+static GstPadProbeReturn
+probe_pull_buffer_cb_check_buffer_return_ok (GstPad * pad,
+    GstPadProbeInfo * info, gpointer user_data)
+{
+  if (info->type & GST_PAD_PROBE_TYPE_BUFFER) {
+    if (GST_IS_BUFFER (info->data))
+      pull_probe_called = TRUE;
+    else
+      pull_probe_called_with_bad_data = TRUE;
+  } else {
+    /* shouldn't be called */
+    pull_probe_called_with_bad_type = TRUE;
+  }
+  return GST_PAD_PROBE_OK;
+}
+
+static GstFlowReturn
+test_probe_pull_getrange (GstPad * pad, GstObject * parent, guint64 offset,
+    guint length, GstBuffer ** buf)
+{
+  *buf = gst_buffer_new ();
+  return GST_FLOW_OK;
+}
+
+static gboolean
+test_probe_pull_activate_pull (GstPad * pad, GstObject * object)
+{
+  return gst_pad_activate_mode (pad, GST_PAD_MODE_PULL, TRUE);
+}
+
+static gpointer
+pull_range_async (GstPad * pad)
+{
+  GstBuffer *buf = NULL;
+  GstFlowReturn res = gst_pad_pull_range (pad, 0, 100, &buf);
+  if (buf)
+    gst_buffer_unref (buf);
+  return GINT_TO_POINTER (res);
+}
+
+GST_START_TEST (test_pad_probe_pull)
+{
+  GstPad *srcpad, *sinkpad;
+  GThread *thread;
+  GstFlowReturn ret;
+
+  srcpad = gst_pad_new ("src", GST_PAD_SRC);
+  fail_unless (srcpad != NULL);
+  sinkpad = gst_pad_new ("sink", GST_PAD_SINK);
+  fail_unless (sinkpad != NULL);
+
+  gst_pad_set_getrange_function (srcpad, test_probe_pull_getrange);
+  gst_pad_set_activate_function (sinkpad, test_probe_pull_activate_pull);
+  gst_pad_link (srcpad, sinkpad);
+
+  gst_pad_set_active (sinkpad, TRUE);
+  gst_pad_set_active (srcpad, TRUE);
+
+  id = gst_pad_add_probe (sinkpad,
+      GST_PAD_PROBE_TYPE_BLOCK | GST_PAD_PROBE_TYPE_PULL,
+      block_async_cb_return_ok, NULL, NULL);
+
+  thread = g_thread_try_new ("gst-check", (GThreadFunc) pull_range_async,
+      sinkpad, NULL);
+
+  /* wait for the block */
+  while (!gst_pad_is_blocking (sinkpad)) {
+    g_usleep (10000);
+  }
+
+  /* stop with flushing */
+  gst_pad_push_event (srcpad, gst_event_new_flush_start ());
+
+  /* get return value from push */
+  ret = GPOINTER_TO_INT (g_thread_join (thread));
+  /* unflush now */
+  gst_pad_push_event (srcpad, gst_event_new_flush_stop (FALSE));
+  /* must be wrong state */
+  fail_unless (ret == GST_FLOW_FLUSHING);
+
+  gst_object_unref (srcpad);
+  gst_object_unref (sinkpad);
+}
+
+GST_END_TEST;
+
+static gboolean idle_probe_called;
+static gboolean get_range_wait;
+static gboolean getrange_waiting;
+
+static GstPadProbeReturn
+idle_cb_return_ok (GstPad * pad, GstPadProbeInfo * info, gpointer user_data)
+{
+  idle_probe_called = TRUE;
+  return GST_PAD_PROBE_OK;
+}
+
+static GstFlowReturn
+test_probe_pull_getrange_wait (GstPad * pad, GstObject * parent, guint64 offset,
+    guint length, GstBuffer ** buf)
+{
+  getrange_waiting = TRUE;
+
+  *buf = gst_buffer_new ();
+  while (get_range_wait) {
+    g_usleep (10000);
+  }
+
+  getrange_waiting = FALSE;
+  return GST_FLOW_OK;
+}
+
+GST_START_TEST (test_pad_probe_pull_idle)
+{
+  GstPad *srcpad, *sinkpad;
+  GThread *thread;
+  GstFlowReturn ret;
+
+  srcpad = gst_pad_new ("src", GST_PAD_SRC);
+  fail_unless (srcpad != NULL);
+  sinkpad = gst_pad_new ("sink", GST_PAD_SINK);
+  fail_unless (sinkpad != NULL);
+
+  gst_pad_set_getrange_function (srcpad, test_probe_pull_getrange_wait);
+  gst_pad_set_activate_function (sinkpad, test_probe_pull_activate_pull);
+  gst_pad_link (srcpad, sinkpad);
+
+  gst_pad_set_active (sinkpad, TRUE);
+  gst_pad_set_active (srcpad, TRUE);
+
+  idle_probe_called = FALSE;
+  get_range_wait = TRUE;
+  thread = g_thread_try_new ("gst-check", (GThreadFunc) pull_range_async,
+      sinkpad, NULL);
+
+  /* wait for the block */
+  while (!getrange_waiting) {
+    g_usleep (10000);
+  }
+
+  id = gst_pad_add_probe (sinkpad,
+      GST_PAD_PROBE_TYPE_IDLE | GST_PAD_PROBE_TYPE_PULL,
+      idle_cb_return_ok, NULL, NULL);
+
+  fail_if (idle_probe_called);
+
+  get_range_wait = FALSE;
+  while (getrange_waiting) {
+    g_usleep (10000);
+  }
+  while (!idle_probe_called) {
+    g_usleep (10000);
+  }
+
+  ret = GPOINTER_TO_INT (g_thread_join (thread));
+  fail_unless (ret == GST_FLOW_OK);
+  gst_pad_set_active (srcpad, FALSE);
+  gst_pad_set_active (sinkpad, FALSE);
+  gst_object_unref (srcpad);
+  gst_object_unref (sinkpad);
+}
+
+GST_END_TEST;
+
+
+GST_START_TEST (test_pad_probe_pull_buffer)
+{
+  GstPad *srcpad, *sinkpad;
+  GThread *thread;
+  GstFlowReturn ret;
+
+  srcpad = gst_pad_new ("src", GST_PAD_SRC);
+  fail_unless (srcpad != NULL);
+  sinkpad = gst_pad_new ("sink", GST_PAD_SINK);
+  fail_unless (sinkpad != NULL);
+
+  gst_pad_set_getrange_function (srcpad, test_probe_pull_getrange);
+  gst_pad_set_activate_function (sinkpad, test_probe_pull_activate_pull);
+  gst_pad_link (srcpad, sinkpad);
+
+  gst_pad_set_active (sinkpad, TRUE);
+  gst_pad_set_active (srcpad, TRUE);
+
+  id = gst_pad_add_probe (sinkpad,
+      GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PULL,
+      probe_pull_buffer_cb_check_buffer_return_ok, NULL, NULL);
+
+  pull_probe_called = FALSE;
+  pull_probe_called_with_bad_type = FALSE;
+  pull_probe_called_with_bad_data = FALSE;
+
+  thread = g_thread_try_new ("gst-check", (GThreadFunc) pull_range_async,
+      sinkpad, NULL);
+
+  /* wait for the block */
+  while (!pull_probe_called && !pull_probe_called_with_bad_data
+      && !pull_probe_called_with_bad_type) {
+    g_usleep (10000);
+  }
+
+  fail_unless (pull_probe_called);
+  fail_if (pull_probe_called_with_bad_data);
+  fail_if (pull_probe_called_with_bad_type);
+
+  /* get return value from push */
+  ret = GPOINTER_TO_INT (g_thread_join (thread));
+  fail_unless (ret == GST_FLOW_OK);
+
+  gst_pad_set_active (sinkpad, FALSE);
+  gst_pad_set_active (srcpad, FALSE);
+  gst_object_unref (srcpad);
+  gst_object_unref (sinkpad);
+}
+
+GST_END_TEST;
+
 static gboolean pad_probe_remove_notifiy_called = FALSE;
 
 static GstPadProbeReturn
@@ -1577,6 +1801,7 @@
   fail_if (buffers && buffers->data == NULL);
   fail_unless (buffers == NULL);
 
+  gst_check_drop_buffers ();
   gst_object_unref (src);
   gst_object_unref (sink);
 }
@@ -1756,6 +1981,7 @@
   fail_unless (sink_flush_start_probe_called);
   fail_unless (sink_flush_stop_probe_called);
 
+  gst_check_drop_buffers ();
   gst_object_unref (src);
   gst_object_unref (sink);
 }
@@ -1807,6 +2033,7 @@
   gst_pad_push_event (src, gst_event_new_flush_stop (TRUE));
   fail_unless (probe_was_called);
 
+  gst_check_drop_buffers ();
   gst_object_unref (src);
   gst_object_unref (sink);
 }
@@ -1857,6 +2084,7 @@
     fail_unless (counters[i] == i + 1);
   }
 
+  gst_check_drop_buffers ();
   gst_object_unref (src);
   gst_object_unref (sink);
 }
@@ -2597,8 +2825,8 @@
       "Proxy Test Element", "Test", "Proxy test element",
       "Thiago Santos <thiagoss@osg.samsung.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&proxytestelement_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &proxytestelement_sink_template);
 }
 
 static void
@@ -2736,6 +2964,253 @@
 
 GST_END_TEST;
 
+static GstSegment sink_segment;
+static gint sink_segment_counter;
+
+static gboolean
+segment_event_func (GstPad * pad, GstObject * parent, GstEvent * event)
+{
+  switch (GST_EVENT_TYPE (event)) {
+    case GST_EVENT_SEGMENT:
+      gst_event_copy_segment (event, &sink_segment);
+      sink_segment_counter++;
+      break;
+    default:
+      break;
+  }
+
+  gst_event_unref (event);
+  return TRUE;
+}
+
+static void
+test_pad_offset (gboolean on_srcpad)
+{
+  GstPad *srcpad, *sinkpad, *offset_pad;
+  GstSegment segment;
+  GstBuffer *buffer;
+  GstQuery *query;
+
+  srcpad = gst_pad_new ("src", GST_PAD_SRC);
+  fail_unless (srcpad != NULL);
+  sinkpad = gst_pad_new ("sink", GST_PAD_SINK);
+
+  offset_pad = on_srcpad ? srcpad : sinkpad;
+
+  gst_segment_init (&sink_segment, GST_FORMAT_UNDEFINED);
+  sink_segment_counter = 0;
+  gst_pad_set_chain_function (sinkpad, gst_check_chain_func);
+  gst_pad_set_event_function (sinkpad, segment_event_func);
+
+  fail_unless (sinkpad != NULL);
+  fail_unless_equals_int (gst_pad_link (srcpad, sinkpad), GST_PAD_LINK_OK);
+  fail_unless (gst_pad_set_active (sinkpad, TRUE));
+  fail_unless (gst_pad_set_active (srcpad, TRUE));
+
+  /* Set an offset of 5s, meaning:
+   * segment position 0 gives running time 5s, stream time 0s
+   * segment start of 0 should stay 0
+   */
+  gst_pad_set_offset (offset_pad, 5 * GST_SECOND);
+
+  fail_unless (gst_pad_push_event (srcpad,
+          gst_event_new_stream_start ("test")) == TRUE);
+  /* We should have no segment event yet */
+  fail_if (sink_segment.format != GST_FORMAT_UNDEFINED);
+  fail_unless_equals_int (sink_segment_counter, 0);
+
+  /* Send segment event, expect it to arrive with a modified start running time */
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  fail_unless (gst_pad_push_event (srcpad,
+          gst_event_new_segment (&segment)) == TRUE);
+  fail_if (sink_segment.format == GST_FORMAT_UNDEFINED);
+  fail_unless_equals_uint64 (gst_segment_to_running_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 5 * GST_SECOND);
+  fail_unless_equals_uint64 (gst_segment_to_stream_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 0 * GST_SECOND);
+  fail_unless_equals_uint64 (sink_segment.start, 0 * GST_SECOND);
+
+  fail_unless_equals_int (sink_segment_counter, 1);
+
+  /* Send a buffer and check if all timestamps are as expected, and especially
+   * if the buffer timestamp was not changed */
+  buffer = gst_buffer_new ();
+  GST_BUFFER_PTS (buffer) = 0 * GST_SECOND;
+  fail_unless_equals_int (gst_pad_push (srcpad, buffer), GST_FLOW_OK);
+
+  fail_unless_equals_int (g_list_length (buffers), 1);
+  buffer = buffers->data;
+  buffers = g_list_delete_link (buffers, buffers);
+  fail_unless_equals_uint64 (gst_segment_to_running_time (&sink_segment,
+          GST_FORMAT_TIME, GST_BUFFER_PTS (buffer)), 5 * GST_SECOND);
+  fail_unless_equals_uint64 (gst_segment_to_stream_time (&sink_segment,
+          GST_FORMAT_TIME, GST_BUFFER_PTS (buffer)), 0 * GST_SECOND);
+  fail_unless_equals_uint64 (GST_BUFFER_PTS (buffer), 0 * GST_SECOND);
+  gst_buffer_unref (buffer);
+
+  fail_unless_equals_int (sink_segment_counter, 1);
+
+  /* Set a negative offset of -5s, meaning:
+   * segment position 5s gives running time 0s, stream time 5s
+   * segment start would have a negative running time!
+   */
+  gst_pad_set_offset (offset_pad, -5 * GST_SECOND);
+
+  /* Segment should still be the same as before */
+  fail_if (sink_segment.format == GST_FORMAT_UNDEFINED);
+  fail_unless_equals_uint64 (gst_segment_to_running_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 5 * GST_SECOND);
+  fail_unless_equals_uint64 (gst_segment_to_stream_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 0 * GST_SECOND);
+  fail_unless_equals_uint64 (sink_segment.start, 0 * GST_SECOND);
+
+  fail_unless_equals_int (sink_segment_counter, 1);
+
+  /* Send segment event, expect it to arrive with a modified start running time */
+  gst_segment_init (&segment, GST_FORMAT_TIME);
+  fail_unless (gst_pad_push_event (srcpad,
+          gst_event_new_segment (&segment)) == TRUE);
+  fail_if (sink_segment.format == GST_FORMAT_UNDEFINED);
+  fail_unless_equals_uint64 (gst_segment_to_running_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start + 5 * GST_SECOND),
+      0 * GST_SECOND);
+  fail_unless_equals_uint64 (gst_segment_to_stream_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start + 5 * GST_SECOND),
+      5 * GST_SECOND);
+  fail_unless_equals_uint64 (sink_segment.start, 0 * GST_SECOND);
+
+  fail_unless_equals_int (sink_segment_counter, 2);
+
+  /* Send a buffer and check if all timestamps are as expected, and especially
+   * if the buffer timestamp was not changed */
+  buffer = gst_buffer_new ();
+  GST_BUFFER_PTS (buffer) = 5 * GST_SECOND;
+  fail_unless_equals_int (gst_pad_push (srcpad, buffer), GST_FLOW_OK);
+
+  fail_unless_equals_int (g_list_length (buffers), 1);
+  buffer = buffers->data;
+  buffers = g_list_delete_link (buffers, buffers);
+  fail_unless_equals_uint64 (gst_segment_to_running_time (&sink_segment,
+          GST_FORMAT_TIME, GST_BUFFER_PTS (buffer)), 0 * GST_SECOND);
+  fail_unless_equals_uint64 (gst_segment_to_stream_time (&sink_segment,
+          GST_FORMAT_TIME, GST_BUFFER_PTS (buffer)), 5 * GST_SECOND);
+  fail_unless_equals_uint64 (GST_BUFFER_PTS (buffer), 5 * GST_SECOND);
+  gst_buffer_unref (buffer);
+
+  fail_unless_equals_int (sink_segment_counter, 2);
+
+  /* Set offset to 5s again, same situation as above but don't send a new
+   * segment event. The segment should be adjusted *before* the buffer comes
+   * out of the srcpad */
+  gst_pad_set_offset (offset_pad, 5 * GST_SECOND);
+
+  /* Segment should still be the same as before */
+  fail_if (sink_segment.format == GST_FORMAT_UNDEFINED);
+  fail_unless_equals_uint64 (gst_segment_to_running_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start + 5 * GST_SECOND),
+      0 * GST_SECOND);
+  fail_unless_equals_uint64 (gst_segment_to_stream_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start + 5 * GST_SECOND),
+      5 * GST_SECOND);
+  fail_unless_equals_uint64 (sink_segment.start, 0 * GST_SECOND);
+
+  fail_unless_equals_int (sink_segment_counter, 2);
+
+  /* Send a buffer and check if a new segment event was sent and all buffer
+   * timestamps are as expected */
+  buffer = gst_buffer_new ();
+  GST_BUFFER_PTS (buffer) = 0 * GST_SECOND;
+  fail_unless_equals_int (gst_pad_push (srcpad, buffer), GST_FLOW_OK);
+
+  fail_if (sink_segment.format == GST_FORMAT_UNDEFINED);
+  fail_unless_equals_uint64 (gst_segment_to_running_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 5 * GST_SECOND);
+  fail_unless_equals_uint64 (gst_segment_to_stream_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 0 * GST_SECOND);
+  fail_unless_equals_uint64 (sink_segment.start, 0 * GST_SECOND);
+
+  fail_unless_equals_int (sink_segment_counter, 3);
+
+  fail_unless_equals_int (g_list_length (buffers), 1);
+  buffer = buffers->data;
+  buffers = g_list_delete_link (buffers, buffers);
+  fail_unless_equals_uint64 (gst_segment_to_running_time (&sink_segment,
+          GST_FORMAT_TIME, GST_BUFFER_PTS (buffer)), 5 * GST_SECOND);
+  fail_unless_equals_uint64 (gst_segment_to_stream_time (&sink_segment,
+          GST_FORMAT_TIME, GST_BUFFER_PTS (buffer)), 0 * GST_SECOND);
+  fail_unless_equals_uint64 (GST_BUFFER_PTS (buffer), 0 * GST_SECOND);
+  gst_buffer_unref (buffer);
+
+  fail_unless_equals_int (sink_segment_counter, 3);
+
+  /* Set offset to 10s and send another sticky event. In between a new
+   * segment event should've been sent */
+  gst_pad_set_offset (offset_pad, 10 * GST_SECOND);
+
+  /* Segment should still be the same as before */
+  fail_if (sink_segment.format == GST_FORMAT_UNDEFINED);
+  fail_unless_equals_uint64 (gst_segment_to_running_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 5 * GST_SECOND);
+  fail_unless_equals_uint64 (gst_segment_to_stream_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 0 * GST_SECOND);
+  fail_unless_equals_uint64 (sink_segment.start, 0 * GST_SECOND);
+  fail_unless_equals_int (sink_segment_counter, 3);
+
+  fail_unless (gst_pad_push_event (srcpad,
+          gst_event_new_tag (gst_tag_list_new_empty ())) == TRUE);
+
+  /* Segment should be updated */
+  fail_if (sink_segment.format == GST_FORMAT_UNDEFINED);
+  fail_unless_equals_uint64 (gst_segment_to_running_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 10 * GST_SECOND);
+  fail_unless_equals_uint64 (gst_segment_to_stream_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 0 * GST_SECOND);
+  fail_unless_equals_uint64 (sink_segment.start, 0 * GST_SECOND);
+
+  fail_unless_equals_int (sink_segment_counter, 4);
+
+  /* Set offset to 15s and do a serialized query. In between a new
+   * segment event should've been sent */
+  gst_pad_set_offset (offset_pad, 15 * GST_SECOND);
+
+  /* Segment should still be the same as before */
+  fail_if (sink_segment.format == GST_FORMAT_UNDEFINED);
+  fail_unless_equals_uint64 (gst_segment_to_running_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 10 * GST_SECOND);
+  fail_unless_equals_uint64 (gst_segment_to_stream_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 0 * GST_SECOND);
+  fail_unless_equals_uint64 (sink_segment.start, 0 * GST_SECOND);
+  fail_unless_equals_int (sink_segment_counter, 4);
+
+  query = gst_query_new_drain ();
+  gst_pad_peer_query (srcpad, query);
+  gst_query_unref (query);
+
+  /* Segment should be updated */
+  fail_if (sink_segment.format == GST_FORMAT_UNDEFINED);
+  fail_unless_equals_uint64 (gst_segment_to_running_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 15 * GST_SECOND);
+  fail_unless_equals_uint64 (gst_segment_to_stream_time (&sink_segment,
+          GST_FORMAT_TIME, sink_segment.start), 0 * GST_SECOND);
+  fail_unless_equals_uint64 (sink_segment.start, 0 * GST_SECOND);
+
+  fail_unless_equals_int (sink_segment_counter, 5);
+
+  gst_check_drop_buffers ();
+
+  fail_unless (gst_pad_set_active (sinkpad, FALSE));
+  fail_unless (gst_pad_set_active (srcpad, FALSE));
+  gst_object_unref (sinkpad);
+  gst_object_unref (srcpad);
+}
+
+GST_START_TEST (test_pad_offset_src)
+{
+  test_pad_offset (TRUE);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_pad_suite (void)
 {
@@ -2769,6 +3244,9 @@
   tcase_add_test (tc_chain, test_pad_blocking_with_probe_type_block);
   tcase_add_test (tc_chain, test_pad_blocking_with_probe_type_blocking);
   tcase_add_test (tc_chain, test_pad_blocking_with_probe_type_idle);
+  tcase_add_test (tc_chain, test_pad_probe_pull);
+  tcase_add_test (tc_chain, test_pad_probe_pull_idle);
+  tcase_add_test (tc_chain, test_pad_probe_pull_buffer);
   tcase_add_test (tc_chain, test_pad_probe_remove);
   tcase_add_test (tc_chain, test_pad_probe_block_add_remove);
   tcase_add_test (tc_chain, test_pad_probe_block_and_drop_buffer);
@@ -2791,6 +3269,7 @@
   tcase_add_test (tc_chain, test_proxy_accept_caps_no_proxy);
   tcase_add_test (tc_chain, test_proxy_accept_caps_with_proxy);
   tcase_add_test (tc_chain, test_proxy_accept_caps_with_incompatible_proxy);
+  tcase_add_test (tc_chain, test_pad_offset_src);
 
   return s;
 }
diff --git a/tests/check/gst/gstplugin.c b/tests/check/gst/gstplugin.c
index 7e69629..cb4f17d 100644
--- a/tests/check/gst/gstplugin.c
+++ b/tests/check/gst/gstplugin.c
@@ -60,7 +60,7 @@
     GstPlugin *plugin = GST_PLUGIN (g->data);
 
     /* one for the registry, one for the list */
-    GST_DEBUG ("refcount %d %s", GST_OBJECT_REFCOUNT_VALUE (plugin),
+    GST_DEBUG ("Plugin refcount %d %s", GST_OBJECT_REFCOUNT_VALUE (plugin),
         gst_plugin_get_name (plugin));
     ASSERT_OBJECT_REFCOUNT (plugin, "plugin in registry", 2);
 
@@ -73,9 +73,8 @@
     GstPluginFeature *feature = GST_PLUGIN_FEATURE (g->data);
 
     /* one for the registry, one for the list */
-    GST_DEBUG ("refcount %d %s", GST_OBJECT_REFCOUNT_VALUE (feature),
+    GST_DEBUG ("Feature refcount %d %s", GST_OBJECT_REFCOUNT_VALUE (feature),
         GST_OBJECT_NAME (feature));
-    ASSERT_OBJECT_REFCOUNT (feature, "feature in registry", 2);
     gst_object_unref (feature);
   }
   g_list_free (list);
diff --git a/tests/check/gst/gstprotection.c b/tests/check/gst/gstprotection.c
index 89181f8..b5dae25 100644
--- a/tests/check/gst/gstprotection.c
+++ b/tests/check/gst/gstprotection.c
@@ -81,8 +81,8 @@
 {
   GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&gst_decrypt_sink_template));
+  gst_element_class_add_static_pad_template (element_class,
+      &gst_decrypt_sink_template);
 
   gst_element_class_set_metadata (element_class,
       "Decryptor element for unit tests",
diff --git a/tests/check/gst/gststream.c b/tests/check/gst/gststream.c
new file mode 100644
index 0000000..aa09b2b
--- /dev/null
+++ b/tests/check/gst/gststream.c
@@ -0,0 +1,225 @@
+/* GStreamer
+ * Copyright (C) <2015> Edward Hervey <edward@centricular.com>
+ *
+ * gststructure.c: Unit tests for GstStream and GstStreamCollection
+ *
+ * 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/gst.h>
+#include <gst/check/gstcheck.h>
+
+GST_START_TEST (test_stream_creation)
+{
+  GstStream *stream;
+  GstCaps *caps;
+  GstCaps *caps2;
+  GstTagList *tags, *tags2;
+
+  caps = gst_caps_from_string ("some/caps");
+  stream = gst_stream_new ("stream-id", caps, GST_STREAM_TYPE_AUDIO, 0);
+  fail_unless (stream != NULL);
+
+  fail_unless_equals_string (gst_stream_get_stream_id (stream), "stream-id");
+  caps2 = gst_stream_get_caps (stream);
+  fail_unless (gst_caps_is_equal (caps, caps2));
+  gst_caps_unref (caps2);
+
+  fail_unless (gst_stream_get_stream_type (stream) == GST_STREAM_TYPE_AUDIO);
+
+  gst_caps_unref (caps);
+
+  tags = gst_tag_list_new (GST_TAG_ALBUM, "test-album", NULL);
+  g_object_set (stream, "tags", tags, NULL);
+  tags2 = gst_stream_get_tags (stream);
+  fail_unless (gst_tag_list_is_equal (tags, tags2));
+  gst_tag_list_unref (tags);
+  gst_tag_list_unref (tags2);
+
+  gst_object_unref (stream);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_stream_event)
+{
+  GstEvent *event;
+  GstStream *stream, *stream2 = NULL;
+  GstCaps *caps;
+  GstCaps *caps2;
+
+  event = gst_event_new_stream_start ("here/we/go");
+  /* By default a stream-start event has no stream */
+  gst_event_parse_stream (event, &stream2);
+  fail_if (stream2 != NULL);
+
+  /* Create and set stream on event */
+  caps = gst_caps_from_string ("some/caps");
+  stream = gst_stream_new ("here/we/go", caps, GST_STREAM_TYPE_AUDIO, 0);
+  fail_unless (stream != NULL);
+  gst_event_set_stream (event, stream);
+
+  /* Parse and check it's the same */
+  gst_event_parse_stream (event, &stream2);
+  fail_unless (stream2 != NULL);
+  fail_unless_equals_string (gst_stream_get_stream_id (stream2), "here/we/go");
+  caps2 = gst_stream_get_caps (stream);
+  fail_unless (gst_caps_is_equal (caps, caps2));
+  fail_unless (gst_stream_get_stream_type (stream) == GST_STREAM_TYPE_AUDIO);
+  gst_caps_unref (caps2);
+
+  gst_event_unref (event);
+  gst_caps_unref (caps);
+  gst_object_unref (stream);
+  gst_object_unref (stream2);
+}
+
+GST_END_TEST;
+
+struct NotifyStats
+{
+  guint collection_notify;
+  guint collection_notify_caps;
+  guint collection_notify_tags;
+  guint collection_notify_type;
+  guint collection_notify_flags;
+
+  guint stream_notify;
+  guint stream_notify_caps;
+  guint stream_notify_tags;
+  guint stream_notify_type;
+  guint stream_notify_flags;
+
+  guint stream2_notify;
+  guint stream2_notify_caps;
+  guint stream2_notify_tags;
+  guint stream2_notify_type;
+  guint stream2_notify_flags;
+};
+
+static void
+stream_notify_cb (GstStreamCollection * collection, GstStream * stream,
+    GParamSpec * pspec, guint * val)
+{
+  GST_LOG ("Got stream-notify from %" GST_PTR_FORMAT " for %s from %"
+      GST_PTR_FORMAT, stream, pspec->name, collection);
+  (*val)++;
+}
+
+static void
+notify_cb (GstStream * stream, GParamSpec * pspec, guint * val)
+{
+  GST_LOG ("Got notify from %" GST_PTR_FORMAT " for %s", stream, pspec->name);
+  (*val)++;
+}
+
+GST_START_TEST (test_notifies)
+{
+  GstStreamCollection *collection;
+  GstStream *stream, *stream2 = NULL;
+  GstCaps *caps;
+  struct NotifyStats stats = { 0, };
+  GstTagList *tags;
+
+  collection = gst_stream_collection_new ("check-collection");
+  g_signal_connect (collection, "stream-notify", (GCallback) stream_notify_cb,
+      &stats.collection_notify);
+  g_signal_connect (collection, "stream-notify::stream-type",
+      (GCallback) stream_notify_cb, &stats.collection_notify_type);
+  g_signal_connect (collection, "stream-notify::stream-flags",
+      (GCallback) stream_notify_cb, &stats.collection_notify_flags);
+  g_signal_connect (collection, "stream-notify::caps",
+      (GCallback) stream_notify_cb, &stats.collection_notify_caps);
+  g_signal_connect (collection, "stream-notify::tags",
+      (GCallback) stream_notify_cb, &stats.collection_notify_tags);
+
+  caps = gst_caps_from_string ("some/audio-caps");
+  stream = gst_stream_new ("here/we/go", caps, GST_STREAM_TYPE_AUDIO, 0);
+  gst_caps_unref (caps);
+  g_signal_connect (stream, "notify", (GCallback) notify_cb,
+      &stats.stream_notify);
+  g_signal_connect (stream, "notify::stream-type", (GCallback) notify_cb,
+      &stats.stream_notify_type);
+  g_signal_connect (stream, "notify::stream-flags", (GCallback) notify_cb,
+      &stats.stream_notify_flags);
+  g_signal_connect (stream, "notify::caps", (GCallback) notify_cb,
+      &stats.stream_notify_caps);
+  g_signal_connect (stream, "notify::tags", (GCallback) notify_cb,
+      &stats.stream_notify_tags);
+  gst_stream_collection_add_stream (collection, stream);
+
+  caps = gst_caps_from_string ("some/video-caps");
+  stream2 = gst_stream_new ("here/we/go/again", caps, GST_STREAM_TYPE_VIDEO, 0);
+  gst_caps_unref (caps);
+  g_signal_connect (stream2, "notify", (GCallback) notify_cb,
+      &stats.stream2_notify);
+  g_signal_connect (stream2, "notify::stream-type", (GCallback) notify_cb,
+      &stats.stream2_notify_type);
+  g_signal_connect (stream2, "notify::stream-flags", (GCallback) notify_cb,
+      &stats.stream2_notify_flags);
+  g_signal_connect (stream2, "notify::caps", (GCallback) notify_cb,
+      &stats.stream2_notify_caps);
+  g_signal_connect (stream2, "notify::tags", (GCallback) notify_cb,
+      &stats.stream2_notify_tags);
+  gst_stream_collection_add_stream (collection, stream2);
+
+  caps = gst_caps_from_string ("some/new-video-caps");
+  gst_stream_set_caps (stream2, caps);
+  gst_caps_unref (caps);
+
+  fail_unless (stats.collection_notify == 1);
+  fail_unless (stats.collection_notify_caps == 1);
+  fail_unless (stats.stream_notify == 0);
+  fail_unless (stats.stream_notify_caps == 0);
+  fail_unless (stats.stream_notify_tags == 0);
+  fail_unless (stats.stream2_notify == 1);
+  fail_unless (stats.stream2_notify_caps == 1);
+  fail_unless (stats.stream2_notify_tags == 0);
+
+  tags = gst_tag_list_new (GST_TAG_ALBUM, "test-album", NULL);
+  gst_stream_set_tags (stream, tags);
+  gst_tag_list_unref (tags);
+
+  fail_unless (stats.collection_notify == 2);
+  fail_unless (stats.collection_notify_caps == 1);
+  fail_unless (stats.collection_notify_tags == 1);
+  fail_unless (stats.stream_notify == 1);
+  fail_unless (stats.stream_notify_caps == 0);
+  fail_unless (stats.stream_notify_tags == 1);
+  fail_unless (stats.stream2_notify == 1);
+  fail_unless (stats.stream2_notify_caps == 1);
+  fail_unless (stats.stream2_notify_tags == 0);
+
+  gst_object_unref (collection);
+}
+
+GST_END_TEST;
+
+static Suite *
+gst_streams_suite (void)
+{
+  Suite *s = suite_create ("GstStream");
+  TCase *tc_chain = tcase_create ("general");
+
+  suite_add_tcase (s, tc_chain);
+  tcase_add_test (tc_chain, test_stream_creation);
+  tcase_add_test (tc_chain, test_stream_event);
+  tcase_add_test (tc_chain, test_notifies);
+  return s;
+}
+
+GST_CHECK_MAIN (gst_streams);
diff --git a/tests/check/gst/gstutils.c b/tests/check/gst/gstutils.c
index 012a69a..3a5de64 100644
--- a/tests/check/gst/gstutils.c
+++ b/tests/check/gst/gstutils.c
@@ -1385,8 +1385,8 @@
       "Fake Request Sink", "Sink", "Fake sink with request pads",
       "Sebastian Rasmussen <sebras@hotmail.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&fakereqsink_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &fakereqsink_sink_template);
 
   gstelement_class->request_new_pad = gst_fakereqsink_request_new_pad;
   gstelement_class->release_pad = gst_fakereqsink_release_pad;
@@ -1593,10 +1593,10 @@
       "Test Pad Request Sink", "Sink", "Sink for unit tests with request pads",
       "Thiago Santos <thiagoss@osg.samsung.com>");
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&testpadreqsink_video_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&testpadreqsink_audio_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &testpadreqsink_video_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &testpadreqsink_audio_template);
 
   gstelement_class->request_new_pad = gst_testpadreqsink_request_new_pad;
   gstelement_class->release_pad = gst_testpadreqsink_release_pad;
@@ -1701,6 +1701,52 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_element_link_with_ghost_pads)
+{
+  GstElement *sink_bin, *sink2_bin, *pipeline;
+  GstElement *src, *tee, *queue, *queue2, *sink, *sink2;
+  GstMessage *message;
+  GstBus *bus;
+
+  fail_unless (pipeline = gst_pipeline_new (NULL));
+  fail_unless (sink_bin = gst_bin_new (NULL));
+  fail_unless (sink2_bin = gst_bin_new (NULL));
+  fail_unless (src = gst_element_factory_make ("fakesrc", NULL));
+  fail_unless (tee = gst_element_factory_make ("tee", NULL));
+  fail_unless (queue = gst_element_factory_make ("queue", NULL));
+  fail_unless (sink = gst_element_factory_make ("fakesink", NULL));
+  fail_unless (queue2 = gst_element_factory_make ("queue", NULL));
+  fail_unless (sink2 = gst_element_factory_make ("fakesink", NULL));
+
+  gst_bin_add_many (GST_BIN (pipeline), src, tee, queue, sink, sink2_bin, NULL);
+  fail_unless (gst_element_link_many (src, tee, queue, sink, NULL));
+  fail_unless (gst_element_set_state (pipeline,
+          GST_STATE_PLAYING) == GST_STATE_CHANGE_ASYNC);
+
+  /* wait for a buffer to arrive at the sink */
+  bus = gst_element_get_bus (pipeline);
+  message = gst_bus_poll (bus, GST_MESSAGE_ASYNC_DONE, -1);
+  gst_message_unref (message);
+  gst_object_unref (bus);
+
+  gst_bin_add_many (GST_BIN (sink_bin), queue2, sink2, NULL);
+  fail_unless (gst_element_link (queue2, sink2));
+
+  gst_bin_add (GST_BIN (sink2_bin), sink_bin);
+  /* The two levels of bins with the outer bin in the running state is
+   * important, when the second ghost pad is created (from this
+   * gst_element_link()) in the running bin, we need to activate the
+   * created ghost pad */
+  fail_unless (gst_element_link (tee, queue2));
+
+  fail_unless (gst_element_set_state (pipeline,
+          GST_STATE_NULL) == GST_STATE_CHANGE_SUCCESS);
+
+  gst_object_unref (pipeline);
+}
+
+GST_END_TEST;
+
 static Suite *
 gst_utils_suite (void)
 {
@@ -1729,6 +1775,7 @@
 #endif
   tcase_add_test (tc_chain, test_element_found_tags);
   tcase_add_test (tc_chain, test_element_link);
+  tcase_add_test (tc_chain, test_element_link_with_ghost_pads);
   tcase_add_test (tc_chain, test_element_unlink);
   tcase_add_test (tc_chain, test_element_get_compatible_pad_request);
   tcase_add_test (tc_chain, test_set_value_from_string);
@@ -1739,6 +1786,7 @@
 
   tcase_add_test (tc_chain, test_read_macros);
   tcase_add_test (tc_chain, test_write_macros);
+
   return s;
 }
 
diff --git a/tests/check/gst/gstvalue.c b/tests/check/gst/gstvalue.c
index 7bb8955..64082c4 100644
--- a/tests/check/gst/gstvalue.c
+++ b/tests/check/gst/gstvalue.c
@@ -662,17 +662,22 @@
 
   /* GstFlagSet should always intersect with itself */
   g_value_unset (&dest);
+  fail_unless (gst_value_can_intersect (&value, &value));
   fail_unless (gst_value_intersect (&dest, &value, &value));
 
   /* GstFlagSet subtype should intersect with itself */
   g_value_unset (&dest);
+  fail_unless (gst_value_can_intersect (&value2, &value2));
   fail_unless (gst_value_intersect (&dest, &value2, &value2));
 
   /* Check we can intersect custom flagset subtype with flagset */
   g_value_unset (&dest);
+  fail_unless (gst_value_can_intersect (&value2, &value));
   fail_unless (gst_value_intersect (&dest, &value2, &value));
 
+  /* and in the other order */
   g_value_unset (&dest);
+  fail_unless (gst_value_can_intersect (&value, &value2));
   fail_unless (gst_value_intersect (&dest, &value, &value2));
 
   fail_unless (gst_value_get_flagset_flags (&dest) == test_flags,
diff --git a/tests/check/libs/adapter.c b/tests/check/libs/adapter.c
index 95d2952..f503245 100644
--- a/tests/check/libs/adapter.c
+++ b/tests/check/libs/adapter.c
@@ -364,6 +364,7 @@
   guint64 dist;
   guint8 *data;
   const guint8 *cdata;
+  guint64 offset;
 
   adapter = gst_adapter_new ();
   fail_unless (adapter != NULL);
@@ -380,6 +381,21 @@
   fail_unless (timestamp == GST_CLOCK_TIME_NONE);
   fail_unless (dist == 0);
 
+  timestamp = gst_adapter_pts_at_discont (adapter);
+  fail_unless (timestamp == GST_CLOCK_TIME_NONE);
+
+  /* Offset should be undefined */
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless (offset == GST_BUFFER_OFFSET_NONE);
+  fail_unless (dist == 0);
+
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless (offset == GST_CLOCK_TIME_NONE);
+
+  /* 0 bytes since discont */
+  dist = gst_adapter_distance_from_discont (adapter);
+  fail_unless (dist == 0);
+
   gst_adapter_flush (adapter, 50);
   avail = gst_adapter_available (adapter);
   fail_unless (avail == 50);
@@ -389,6 +405,21 @@
   fail_unless (timestamp == GST_CLOCK_TIME_NONE);
   fail_unless (dist == 50);
 
+  timestamp = gst_adapter_pts_at_discont (adapter);
+  fail_unless (timestamp == GST_CLOCK_TIME_NONE);
+
+  /* Offset still undefined */
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless (offset == GST_BUFFER_OFFSET_NONE);
+  fail_unless (dist == 50);
+
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless (offset == GST_CLOCK_TIME_NONE);
+
+  /* 50 bytes since discont */
+  dist = gst_adapter_distance_from_discont (adapter);
+  fail_unless (dist == 50);
+
   buffer = gst_buffer_new_and_alloc (100);
   GST_BUFFER_TIMESTAMP (buffer) = 1 * GST_SECOND;
 
@@ -402,6 +433,21 @@
   fail_unless (timestamp == GST_CLOCK_TIME_NONE);
   fail_unless (dist == 50);
 
+  timestamp = gst_adapter_pts_at_discont (adapter);
+  fail_unless (timestamp == GST_CLOCK_TIME_NONE);
+
+  /* Offset still undefined */
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless (offset == GST_BUFFER_OFFSET_NONE);
+  fail_unless (dist == 50);
+
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless (offset == GST_CLOCK_TIME_NONE);
+
+  /* 50 bytes since discont */
+  dist = gst_adapter_distance_from_discont (adapter);
+  fail_unless (dist == 50);
+
   /* flush out first buffer we are now at the second buffer timestamp */
   gst_adapter_flush (adapter, 50);
   avail = gst_adapter_available (adapter);
@@ -411,6 +457,14 @@
   fail_unless (timestamp == 1 * GST_SECOND);
   fail_unless (dist == 0);
 
+  /* timestamp was undefined at discont */
+  timestamp = gst_adapter_pts_at_discont (adapter);
+  fail_unless (timestamp == GST_CLOCK_TIME_NONE);
+
+  /* 100 bytes since discont */
+  dist = gst_adapter_distance_from_discont (adapter);
+  fail_unless (dist == 100);
+
   /* move some more, still the same timestamp but further away */
   gst_adapter_flush (adapter, 50);
   avail = gst_adapter_available (adapter);
@@ -420,6 +474,10 @@
   fail_unless (timestamp == 1 * GST_SECOND);
   fail_unless (dist == 50);
 
+  /* timestamp was undefined at discont */
+  timestamp = gst_adapter_pts_at_discont (adapter);
+  fail_unless (timestamp == GST_CLOCK_TIME_NONE);
+
   /* push a buffer without timestamp in the adapter */
   buffer = gst_buffer_new_and_alloc (100);
   gst_adapter_push (adapter, buffer);
@@ -437,6 +495,10 @@
   fail_unless (timestamp == 1 * GST_SECOND);
   fail_unless (dist == 50);
 
+  /* timestamp was undefined at discont */
+  timestamp = gst_adapter_pts_at_discont (adapter);
+  fail_unless (timestamp == GST_CLOCK_TIME_NONE);
+
   /* flush away buffer with the timestamp */
   gst_adapter_flush (adapter, 50);
   avail = gst_adapter_available (adapter);
@@ -445,6 +507,10 @@
   fail_unless (timestamp == 1 * GST_SECOND);
   fail_unless (dist == 100);
 
+  /* timestamp was undefined at discont */
+  timestamp = gst_adapter_pts_at_discont (adapter);
+  fail_unless (timestamp == GST_CLOCK_TIME_NONE);
+
   /* move into the second buffer */
   gst_adapter_flush (adapter, 50);
   avail = gst_adapter_available (adapter);
@@ -453,6 +519,10 @@
   fail_unless (timestamp == 1 * GST_SECOND);
   fail_unless (dist == 150);
 
+  /* timestamp was undefined at discont */
+  timestamp = gst_adapter_pts_at_discont (adapter);
+  fail_unless (timestamp == GST_CLOCK_TIME_NONE);
+
   /* move to third buffer we move to the new timestamp */
   gst_adapter_flush (adapter, 50);
   avail = gst_adapter_available (adapter);
@@ -461,6 +531,10 @@
   fail_unless (timestamp == 2 * GST_SECOND);
   fail_unless (dist == 0);
 
+  /* timestamp was undefined at discont */
+  timestamp = gst_adapter_pts_at_discont (adapter);
+  fail_unless (timestamp == GST_CLOCK_TIME_NONE);
+
   /* move everything out */
   gst_adapter_flush (adapter, 100);
   avail = gst_adapter_available (adapter);
@@ -477,6 +551,10 @@
   fail_unless (timestamp == GST_CLOCK_TIME_NONE);
   fail_unless (dist == 0);
 
+  /* timestamp was undefined at discont */
+  timestamp = gst_adapter_pts_at_discont (adapter);
+  fail_unless (timestamp == GST_CLOCK_TIME_NONE);
+
   /* push an empty buffer with timestamp in the adapter */
   buffer = gst_buffer_new ();
   GST_BUFFER_TIMESTAMP (buffer) = 2 * GST_SECOND;
@@ -487,6 +565,11 @@
   fail_unless (timestamp == 2 * GST_SECOND);
   fail_unless (dist == 0);
 
+  /* timestamp was undefined at discont (clearing the adapter is not
+   * necessarily a discont) */
+  timestamp = gst_adapter_pts_at_discont (adapter);
+  fail_unless (timestamp == GST_CLOCK_TIME_NONE);
+
   /* push another empty buffer */
   buffer = gst_buffer_new ();
   GST_BUFFER_TIMESTAMP (buffer) = 3 * GST_SECOND;
@@ -563,6 +646,198 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_offset)
+{
+  GstAdapter *adapter;
+  GstBuffer *buffer;
+  guint avail;
+  guint64 offset;
+  guint64 dist;
+
+  adapter = gst_adapter_new ();
+  fail_unless (adapter != NULL);
+
+  buffer = gst_buffer_new_and_alloc (100);
+
+  /* push in the adapter */
+  gst_adapter_push (adapter, buffer);
+  avail = gst_adapter_available (adapter);
+  fail_unless (avail == 100);
+
+  /* Offset should be undefined */
+  offset = gst_adapter_distance_from_discont (adapter);
+  fail_unless_equals_uint64 (offset, 0);
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless_equals_uint64 (offset, GST_BUFFER_OFFSET_NONE);
+  fail_unless_equals_int (dist, 0);
+
+  /* Offset is undefined */
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless_equals_uint64 (offset, GST_BUFFER_OFFSET_NONE);
+
+  gst_adapter_flush (adapter, 50);
+  avail = gst_adapter_available (adapter);
+  fail_unless (avail == 50);
+
+  /* Offset still undefined, dist changed though */
+  offset = gst_adapter_distance_from_discont (adapter);
+  fail_unless_equals_uint64 (offset, 50);
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless_equals_uint64 (offset, GST_BUFFER_OFFSET_NONE);
+  fail_unless_equals_int (dist, 50);
+
+  /* Offset is undefined */
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless_equals_uint64 (offset, GST_BUFFER_OFFSET_NONE);
+
+  /* Let's push in a discont buffer with a valid offset */
+  buffer = gst_buffer_new_and_alloc (100);
+  GST_BUFFER_OFFSET (buffer) = 10000;
+  GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+
+  /* push in the adapter */
+  gst_adapter_push (adapter, buffer);
+  avail = gst_adapter_available (adapter);
+  fail_unless (avail == 150);
+
+  /* offset is still undefined */
+  offset = gst_adapter_distance_from_discont (adapter);
+  fail_unless_equals_uint64 (offset, 50);
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless_equals_uint64 (offset, GST_BUFFER_OFFSET_NONE);
+  fail_unless_equals_int (dist, 50);
+
+  /* Offset is undefined */
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless_equals_uint64 (offset, GST_BUFFER_OFFSET_NONE);
+
+  /* flush out first buffer we are now at the second buffer offset */
+  gst_adapter_flush (adapter, 50);
+  avail = gst_adapter_available (adapter);
+  fail_unless (avail == 100);
+
+  offset = gst_adapter_distance_from_discont (adapter);
+  fail_unless_equals_uint64 (offset, 0);
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless_equals_uint64 (offset, 10000);
+  fail_unless_equals_int (dist, 0);
+
+  /* Offset should be defined now */
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless_equals_uint64 (offset, 10000);
+
+  /* move some more, we should have an updated offset */
+  gst_adapter_flush (adapter, 50);
+  avail = gst_adapter_available (adapter);
+  fail_unless (avail == 50);
+
+  offset = gst_adapter_distance_from_discont (adapter);
+  fail_unless_equals_uint64 (offset, 50);
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless_equals_uint64 (offset, 10000);
+  fail_unless_equals_int (dist, 50);
+
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless_equals_uint64 (offset, 10000);
+
+  /* push a buffer without offset in the adapter (contiguous with the
+     other) */
+  buffer = gst_buffer_new_and_alloc (100);
+  gst_adapter_push (adapter, buffer);
+  avail = gst_adapter_available (adapter);
+  fail_unless (avail == 150);
+
+  /* push a buffer with offset in the adapter (but contiguous with the
+     other), the offset shouldn't be taken into account */
+  buffer = gst_buffer_new_and_alloc (100);
+  GST_BUFFER_OFFSET (buffer) = 50000;
+  gst_adapter_push (adapter, buffer);
+  avail = gst_adapter_available (adapter);
+  fail_unless (avail == 250);
+
+  /* offset still as it was before the push */
+  offset = gst_adapter_distance_from_discont (adapter);
+  fail_unless_equals_uint64 (offset, 50);
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless_equals_uint64 (offset, 10000);
+  fail_unless_equals_int (dist, 50);
+
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless_equals_uint64 (offset, 10000);
+
+  /* flush away buffer with the offset */
+  gst_adapter_flush (adapter, 50);
+  avail = gst_adapter_available (adapter);
+  fail_unless (avail == 200);
+  offset = gst_adapter_distance_from_discont (adapter);
+  fail_unless_equals_uint64 (offset, 100);
+  /* The previous valid offset seen is now 100 bytes away */
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless_equals_uint64 (offset, 10000);
+  fail_unless_equals_int (dist, 100);
+
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless_equals_uint64 (offset, 10000);
+
+  /* move into the second buffer */
+  gst_adapter_flush (adapter, 50);
+  avail = gst_adapter_available (adapter);
+  fail_unless (avail == 150);
+  offset = gst_adapter_distance_from_discont (adapter);
+  fail_unless_equals_uint64 (offset, 150);
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless_equals_uint64 (offset, 10000);
+  fail_unless_equals_int (dist, 150);
+
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless_equals_uint64 (offset, 10000);
+
+  /* move to third buffer, we should still see a continuously increasing
+   * offset and ignore the non-discont offset */
+  gst_adapter_flush (adapter, 50);
+  avail = gst_adapter_available (adapter);
+  fail_unless (avail == 100);
+  offset = gst_adapter_distance_from_discont (adapter);
+  fail_unless_equals_uint64 (offset, 200);
+  /* But the prev_offset *does* give us the actual buffer offset value */
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless_equals_uint64 (offset, 50000);
+  fail_unless_equals_int (dist, 0);
+
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless_equals_uint64 (offset, 10000);
+
+  /* move everything out, we end up at the last offset */
+  gst_adapter_flush (adapter, 100);
+  avail = gst_adapter_available (adapter);
+  fail_unless (avail == 0);
+  offset = gst_adapter_distance_from_discont (adapter);
+  fail_unless_equals_uint64 (offset, 300);
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless_equals_uint64 (offset, 50000);
+  fail_unless_equals_int (dist, 100);
+
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless_equals_uint64 (offset, 10000);
+
+  /* clear everything */
+  gst_adapter_clear (adapter);
+  avail = gst_adapter_available (adapter);
+  fail_unless (avail == 0);
+  offset = gst_adapter_distance_from_discont (adapter);
+  fail_unless_equals_uint64 (offset, 0);
+  offset = gst_adapter_prev_offset (adapter, &dist);
+  fail_unless_equals_uint64 (offset, GST_BUFFER_OFFSET_NONE);
+  fail_unless_equals_int (dist, 0);
+
+  offset = gst_adapter_offset_at_discont (adapter);
+  fail_unless_equals_uint64 (offset, GST_BUFFER_OFFSET_NONE);
+
+  g_object_unref (adapter);
+}
+
+GST_END_TEST;
+
 GST_START_TEST (test_scan)
 {
   GstAdapter *adapter;
@@ -1064,6 +1339,7 @@
   tcase_add_test (tc_chain, test_get_buffer_list);
   tcase_add_test (tc_chain, test_merge);
   tcase_add_test (tc_chain, test_take_buffer_fast);
+  tcase_add_test (tc_chain, test_offset);
 
   return s;
 }
diff --git a/tests/check/libs/baseparse.c b/tests/check/libs/baseparse.c
index 8113e30..cbd3b66 100644
--- a/tests/check/libs/baseparse.c
+++ b/tests/check/libs/baseparse.c
@@ -118,10 +118,8 @@
       GST_PAD_SRC, GST_PAD_ALWAYS,
       GST_STATIC_CAPS ("video/x-test-custom"));
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&sink_templ));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (&src_templ));
+  gst_element_class_add_static_pad_template (element_class, &sink_templ);
+  gst_element_class_add_static_pad_template (element_class, &src_templ);
 
   gst_element_class_set_metadata (element_class,
       "ParserTester", "Parser/Video", "yep", "me");
@@ -455,6 +453,23 @@
 
 GST_END_TEST;
 
+static void
+baseparse_setup (void)
+{
+  /* init/reset global state */
+  mysrcpad = mysinkpad = NULL;
+  parsetest = NULL;
+  bus = NULL;
+  loop = NULL;
+  have_eos = have_data = caps_set = FALSE;
+  buffer_count = 0;
+}
+
+static void
+baseparse_teardown (void)
+{
+}
+
 static Suite *
 gst_baseparse_suite (void)
 {
@@ -462,6 +477,7 @@
   TCase *tc = tcase_create ("general");
 
   suite_add_tcase (s, tc);
+  tcase_add_checked_fixture (tc, baseparse_setup, baseparse_teardown);
   tcase_add_test (tc, parser_playback);
   tcase_add_test (tc, parser_empty_stream);
   tcase_add_test (tc, parser_reverse_playback_on_passthrough);
diff --git a/tests/check/libs/collectpads.c b/tests/check/libs/collectpads.c
index 4ad0c2a..53a9d4c 100644
--- a/tests/check/libs/collectpads.c
+++ b/tests/check/libs/collectpads.c
@@ -217,10 +217,10 @@
 
   gobject_class->dispose = gst_aggregator_dispose;
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_aggregator_src_template));
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&gst_aggregator_sink_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_aggregator_src_template);
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &gst_aggregator_sink_template);
   gst_element_class_set_static_metadata (gstelement_class, "Aggregator",
       "Testing", "Combine N buffers", "Stefan Sauer <ensonic@users.sf.net>");
 
@@ -423,9 +423,14 @@
 static void
 teardown (void)
 {
+  gst_object_unref (srcpad1);
+  gst_object_unref (srcpad2);
   gst_object_unref (sinkpad1);
   gst_object_unref (sinkpad2);
   gst_object_unref (collect);
+  srcpad1 = srcpad2 = NULL;
+  sinkpad1 = sinkpad2 = NULL;
+  collect = NULL;
 }
 
 GST_START_TEST (test_pad_add_remove)
@@ -857,6 +862,9 @@
   g_atomic_int_set (&flush_start_events, 0);
   g_atomic_int_set (&flush_stop_events, 0);
   gst_element_set_state (agg, GST_STATE_PLAYING);
+  outbuf1 = NULL;
+  outbuf2 = NULL;
+  collected = FALSE;
 }
 
 static void
@@ -869,6 +877,10 @@
   gst_object_unref (srcpad2);
   g_free (data1);
   g_free (data2);
+  agg = NULL;
+  agg_srcpad = NULL;
+  srcpad1 = srcpad2 = NULL;
+  data1 = data2 = NULL;
 }
 
 GST_START_TEST (test_flushing_seek_failure)
@@ -1071,6 +1083,7 @@
   suite_add_tcase (suite, general);
   tcase_add_checked_fixture (general, setup, teardown);
   tcase_add_test (general, test_pad_add_remove);
+
   tcase_add_test (general, test_collect);
   tcase_add_test (general, test_collect_eos);
   tcase_add_test (general, test_collect_twice);
diff --git a/tests/check/libs/gstlibscpp.cc b/tests/check/libs/gstlibscpp.cc
index f7f89e3..bee2588 100644
--- a/tests/check/libs/gstlibscpp.cc
+++ b/tests/check/libs/gstlibscpp.cc
@@ -22,27 +22,10 @@
 #endif
 
 #include <gst/gst.h>
-#include <gst/check/gstcheck.h>
-
-#include <gst/base/gstadapter.h>
-#include <gst/base/gstbasesink.h>
-#include <gst/base/gstbasesrc.h>
-#include <gst/base/gstbasetransform.h>
-#include <gst/base/gstbitreader.h>
-#include <gst/base/gstbytereader.h>
-#include <gst/base/gstbytewriter.h>
-#include <gst/base/gstcollectpads.h>
-#include <gst/base/gstpushsrc.h>
-#include <gst/base/gsttypefindhelper.h>
-
-#include <gst/controller/gstinterpolationcontrolsource.h>
-#include <gst/controller/gstlfocontrolsource.h>
-#include <gst/controller/gsttriggercontrolsource.h>
-
-#include <gst/net/gstnetclientclock.h>
-#include <gst/net/gstnet.h>
-#include <gst/net/gstnettimepacket.h>
-#include <gst/net/gstnettimeprovider.h>
+#include <gst/check/check.h>
+#include <gst/base/base.h>
+#include <gst/controller/controller.h>
+#include <gst/net/net.h>
 
 /* we mostly just want to make sure that our library headers don't
  * contain anything a C++ compiler might not like */
@@ -53,6 +36,17 @@
 
 GST_END_TEST;
 
+GST_START_TEST (test_init_macros)
+{
+  GstBitReader bit_reader = GST_BIT_READER_INIT (NULL, 0);
+  GstByteReader byte_reader = GST_BYTE_READER_INIT (NULL, 0);
+
+  fail_unless (bit_reader.data == NULL);
+  fail_unless (byte_reader.data == NULL);
+}
+
+GST_END_TEST;
+
 static Suite *
 libscpp_suite (void)
 {
@@ -61,6 +55,7 @@
 
   suite_add_tcase (s, tc_chain);
   tcase_add_test (tc_chain, test_nothing);
+  tcase_add_test (tc_chain, test_init_macros);
 
   return s;
 }
diff --git a/tests/check/libs/gstnetclientclock.c b/tests/check/libs/gstnetclientclock.c
index a37a1e0..1434dcb 100644
--- a/tests/check/libs/gstnetclientclock.c
+++ b/tests/check/libs/gstnetclientclock.c
@@ -52,7 +52,8 @@
   GstClock *client, *server;
   GstClockTime basex, basey, rate_num, rate_denom;
   GstClockTime servtime, clienttime, diff;
-  gint port, i;
+  gint port;
+  gchar sign;
 
   server = gst_system_clock_obtain ();
   fail_unless (server != NULL, "failed to get system clock");
@@ -73,36 +74,26 @@
   g_object_get (client, "port", &port, NULL);
 
   /* let the clocks synchronize */
-  for (i = 0; i < 11; ++i) {
-    gchar sign;
+  gst_clock_wait_for_sync (GST_CLOCK (client), GST_SECOND);
 
-    servtime = gst_clock_get_time (server);
-    clienttime = gst_clock_get_time (client);
+  servtime = gst_clock_get_time (server);
+  clienttime = gst_clock_get_time (client);
 
-    if (servtime > clienttime) {
-      sign = '-';
-      diff = servtime - clienttime;
-    } else {
-      sign = '+';
-      diff = clienttime - servtime;
-    }
-
-    GST_LOG ("server time:  %" GST_TIME_FORMAT, GST_TIME_ARGS (servtime));
-    GST_LOG ("client time:  %" GST_TIME_FORMAT, GST_TIME_ARGS (clienttime));
-    GST_LOG ("diff       : %c%" GST_TIME_FORMAT, sign, GST_TIME_ARGS (diff));
-
-    /* can't in general make a precise assertion here, because this depends on
-     * system load and a lot of things. however within half a second they should
-     * at least be within 1/10 of a second of each other... */
-    if (diff < 100 * GST_MSECOND)
-      break;
-
-    g_usleep (G_USEC_PER_SEC / 20);
+  if (servtime > clienttime) {
+    sign = '-';
+    diff = servtime - clienttime;
+  } else {
+    sign = '+';
+    diff = clienttime - servtime;
   }
 
-  GST_INFO ("done after %d iterations, diff: %" GST_TIME_FORMAT, i,
-      GST_TIME_ARGS (diff));
+  GST_LOG ("server time:  %" GST_TIME_FORMAT, GST_TIME_ARGS (servtime));
+  GST_LOG ("client time:  %" GST_TIME_FORMAT, GST_TIME_ARGS (clienttime));
+  GST_LOG ("diff       : %c%" GST_TIME_FORMAT, sign, GST_TIME_ARGS (diff));
 
+  /* can't in general make a precise assertion here, because this depends on
+   * system load and a lot of things. however within half a second they should
+   * at least be within 1/10 of a second of each other... */
   if (diff > 100 * GST_MSECOND)
     fail ("clocks not in sync (%" GST_TIME_FORMAT ")", diff);
 
diff --git a/tests/check/libs/test_transform.c b/tests/check/libs/test_transform.c
index dc45be0..5706f88 100644
--- a/tests/check/libs/test_transform.c
+++ b/tests/check/libs/test_transform.c
@@ -28,18 +28,7 @@
 typedef struct _GstTestTrans GstTestTrans;
 typedef struct _GstTestTransClass GstTestTransClass;
 
-#define GST_TYPE_TEST_TRANS \
-  (gst_test_trans_get_type())
-#define GST_TEST_TRANS(obj) \
-  (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_TEST_TRANS,GstTestTrans))
-#define GST_TEST_TRANS_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_TEST_TRANS,GstTestTransClass))
-#define GST_TEST_TRANS_GET_CLASS(obj) \
-  (G_TYPE_INSTANCE_GET_CLASS((obj), GST_TYPE_TEST_TRANS, GstTestTransClass))
-#define GST_IS_TEST_TRANS(obj) \
-  (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_TEST_TRANS))
-#define GST_IS_TEST_TRANS_CLASS(klass) \
-  (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_TEST_TRANS))
+#define GST_TEST_TRANS(obj) ((GstTestTrans *)(obj))
 
 struct _GstTestTrans
 {
@@ -53,10 +42,6 @@
   GstBaseTransformClass parent_class;
 };
 
-GType gst_test_trans_get_type (void);
-
-G_DEFINE_TYPE (GstTestTrans, gst_test_trans, GST_TYPE_BASE_TRANSFORM);
-
 static GstFlowReturn (*klass_transform) (GstBaseTransform * trans,
     GstBuffer * inbuf, GstBuffer * outbuf) = NULL;
 static GstFlowReturn (*klass_transform_ip) (GstBaseTransform * trans,
@@ -89,10 +74,10 @@
   gst_element_class_set_metadata (element_class, "TestTrans",
       "Filter/Test", "Test transform", "Wim Taymans <wim.taymans@gmail.com>");
 
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (sink_template));
-  gst_element_class_add_pad_template (element_class,
-      gst_static_pad_template_get (src_template));
+  gst_element_class_add_static_pad_template (element_class, sink_template);
+  gst_element_class_add_static_pad_template (element_class, src_template);
+
+  GST_INFO ("setting up %s", g_type_name (((GTypeClass *) klass)->g_type));
 
   trans_class->passthrough_on_same_caps = klass_passthrough_on_same_caps;
   if (klass_transform_ip != NULL)
@@ -158,9 +143,24 @@
   TestTransData *res;
   GstPad *tmp;
   GstPadTemplate *templ;
+  GType type;
+
+  /* we register a new sub-class for every test-run, so the class init
+   * function is called for every test run and can be set up properly
+   * even with CK_FORK=no */
+  {
+    static gint counter = 0;
+    gchar name[100];
+
+    g_snprintf (name, sizeof (name), "GstTestTrans%d", ++counter);
+
+    type = g_type_register_static_simple (GST_TYPE_BASE_TRANSFORM, name,
+        sizeof (GstTestTransClass), (GClassInitFunc) gst_test_trans_class_init,
+        sizeof (GstTestTrans), (GInstanceInitFunc) gst_test_trans_init, 0);
+  }
 
   res = g_new0 (TestTransData, 1);
-  res->trans = g_object_new (GST_TYPE_TEST_TRANS, NULL);
+  res->trans = g_object_new (type, NULL);
 
   templ = gst_static_pad_template_get (sink_template);
   templ->direction = GST_PAD_SRC;
diff --git a/tests/check/libs/transform1.c b/tests/check/libs/transform1.c
index f8f32e2..45e6477 100644
--- a/tests/check/libs/transform1.c
+++ b/tests/check/libs/transform1.c
@@ -96,6 +96,14 @@
   gst_test_trans_push_segment (trans);
 
   gst_test_trans_free (trans);
+
+  klass_transform_ip = NULL;
+  klass_transform = NULL;
+  klass_transform_caps = NULL;
+  klass_transform_size = NULL;
+  klass_set_caps = NULL;
+  klass_submit_input_buffer = NULL;
+  klass_generate_output = NULL;
 }
 
 GST_END_TEST;
@@ -879,6 +887,25 @@
 
 GST_END_TEST;
 
+static void
+transform1_setup (void)
+{
+  sink_template = &gst_test_trans_sink_template;
+  src_template = &gst_test_trans_src_template;
+}
+
+static void
+transform1_teardown (void)
+{
+  /* reset global state */
+  klass_transform_ip = NULL;
+  klass_transform = NULL;
+  klass_transform_caps = NULL;
+  klass_transform_size = NULL;
+  klass_set_caps = NULL;
+  klass_submit_input_buffer = NULL;
+  klass_generate_output = NULL;
+}
 
 static Suite *
 gst_basetransform_suite (void)
@@ -887,6 +914,8 @@
   TCase *tc = tcase_create ("general");
 
   suite_add_tcase (s, tc);
+  tcase_add_checked_fixture (tc, transform1_setup, transform1_teardown);
+
   /* pass through */
   tcase_add_test (tc, basetransform_chain_pt1);
   tcase_add_test (tc, basetransform_chain_pt2);
diff --git a/tests/check/libs/transform2.c b/tests/check/libs/transform2.c
index e8e746f..bc1f4d0 100644
--- a/tests/check/libs/transform2.c
+++ b/tests/check/libs/transform2.c
@@ -49,10 +49,13 @@
 collate_submit_input_buffer (GstBaseTransform * trans,
     gboolean is_discont, GstBuffer * input)
 {
-  GstFlowReturn ret =
-      GST_BASE_TRANSFORM_CLASS
-      (gst_test_trans_parent_class)->submit_input_buffer (trans, is_discont,
-      input);
+  GstBaseTransformClass *tt_parent_class;
+  GstFlowReturn ret;
+
+  tt_parent_class =
+      g_type_class_peek_parent (GST_BASE_TRANSFORM_GET_CLASS (trans));
+
+  ret = tt_parent_class->submit_input_buffer (trans, is_discont, input);
 
   if (ret != GST_FLOW_OK)
     return ret;
diff --git a/tests/check/pipelines/parse-launch.c b/tests/check/pipelines/parse-launch.c
index 091c747..6472070 100644
--- a/tests/check/pipelines/parse-launch.c
+++ b/tests/check/pipelines/parse-launch.c
@@ -22,11 +22,6 @@
 #  include "config.h"
 #endif
 
-#ifdef HAVE_VALGRIND_H
-# include <valgrind/valgrind.h>
-# include <valgrind/memcheck.h>
-#endif
-
 #include <gst/check/gstcheck.h>
 
 #define GST_TYPE_PARSE_TEST_ELEMENT (gst_parse_test_element_get_type())
@@ -131,6 +126,7 @@
   type = gst_element_factory_get_element_type (efac);
   fail_unless (type != 0);
   g_object_unref (efac);
+  g_object_unref (efac);
   fail_unless (gst_element_register (NULL, "1__dentity", GST_RANK_NONE, type));
 
   for (s = test_lines; *s != NULL; s++) {
@@ -396,19 +392,14 @@
   NULL
 };
 
+/* These don't seem to leak any longer? */
 GST_START_TEST (leaking_fail_pipes)
 {
   const gchar **s;
 
   for (s = leaking_failures; *s != NULL; s++) {
-    /* Uncomment if you want to try fixing the leaks */
-#if 0
-    g_print ("Trying pipe: %s\n", *s);
+    GST_INFO ("Trying pipe: %s", *s);
     expected_fail_pipe (*s);
-#endif
-#ifdef HAVE_VALGRIND_H
-    VALGRIND_DO_LEAK_CHECK;
-#endif
   }
 }
 
@@ -547,8 +538,8 @@
 {
   GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
 
-  gst_element_class_add_pad_template (gstelement_class,
-      gst_static_pad_template_get (&test_element_pad_template));
+  gst_element_class_add_static_pad_template (gstelement_class,
+      &test_element_pad_template);
 
   gst_element_class_set_metadata (gstelement_class,
       "Test element for parse launch tests", "Source",
diff --git a/tests/check/pipelines/seek.c b/tests/check/pipelines/seek.c
index ca7fd3b..5d030c5 100644
--- a/tests/check/pipelines/seek.c
+++ b/tests/check/pipelines/seek.c
@@ -75,8 +75,8 @@
   gstbasesrc_class->stop = timed_test_src_stop;
   gstbasesrc_class->create = timed_test_src_create;
 
-  gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
-      gst_static_pad_template_get (&timed_test_src_src_template));
+  gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+      &timed_test_src_src_template);
 }
 
 static void
@@ -190,6 +190,7 @@
   fail_unless (res != GST_STATE_CHANGE_FAILURE, NULL);
 
   /* cleanup */
+  gst_bus_remove_signal_watch (bus);
   gst_object_unref (bus);
   gst_object_unref (bin);
 }
diff --git a/tests/examples/Makefile.in b/tests/examples/Makefile.in
index 91d8c1b..cc2e67c 100644
--- a/tests/examples/Makefile.in
+++ b/tests/examples/Makefile.in
@@ -293,6 +293,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -300,17 +301,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -435,6 +433,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/tests/examples/adapter/Makefile.in b/tests/examples/adapter/Makefile.in
index 70bf932..850046e 100644
--- a/tests/examples/adapter/Makefile.in
+++ b/tests/examples/adapter/Makefile.in
@@ -283,6 +283,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -290,17 +291,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -425,6 +423,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/tests/examples/controller/Makefile.in b/tests/examples/controller/Makefile.in
index 5a6ceb3..89e5f15 100644
--- a/tests/examples/controller/Makefile.in
+++ b/tests/examples/controller/Makefile.in
@@ -311,6 +311,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -318,17 +319,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -453,6 +451,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/tests/examples/helloworld/Makefile.in b/tests/examples/helloworld/Makefile.in
index 8212aa2..460a536 100644
--- a/tests/examples/helloworld/Makefile.in
+++ b/tests/examples/helloworld/Makefile.in
@@ -282,6 +282,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -289,17 +290,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -424,6 +422,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/tests/examples/manual/Makefile.in b/tests/examples/manual/Makefile.in
index 6deee10..7bd0a4d 100644
--- a/tests/examples/manual/Makefile.in
+++ b/tests/examples/manual/Makefile.in
@@ -643,6 +643,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -650,17 +651,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -785,6 +783,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/tests/examples/memory/Makefile.in b/tests/examples/memory/Makefile.in
index 072baf0..76c3924 100644
--- a/tests/examples/memory/Makefile.in
+++ b/tests/examples/memory/Makefile.in
@@ -284,6 +284,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -291,17 +292,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -426,6 +424,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/tests/examples/netclock/Makefile.in b/tests/examples/netclock/Makefile.in
index 54e24d0..8f621db 100644
--- a/tests/examples/netclock/Makefile.in
+++ b/tests/examples/netclock/Makefile.in
@@ -294,6 +294,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -301,17 +302,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -436,6 +434,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/tests/examples/ptp/Makefile.in b/tests/examples/ptp/Makefile.in
index d41397d..c55d331 100644
--- a/tests/examples/ptp/Makefile.in
+++ b/tests/examples/ptp/Makefile.in
@@ -285,6 +285,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -292,17 +293,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -427,6 +425,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/tests/examples/stepping/Makefile.in b/tests/examples/stepping/Makefile.in
index 05f63e6..d5a5065 100644
--- a/tests/examples/stepping/Makefile.in
+++ b/tests/examples/stepping/Makefile.in
@@ -282,6 +282,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -289,17 +290,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -424,6 +422,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/tests/examples/streamiddemux/Makefile.in b/tests/examples/streamiddemux/Makefile.in
index e7509ba..d0d31a3 100644
--- a/tests/examples/streamiddemux/Makefile.in
+++ b/tests/examples/streamiddemux/Makefile.in
@@ -284,6 +284,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -291,17 +292,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -426,6 +424,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/tests/examples/streams/Makefile.in b/tests/examples/streams/Makefile.in
index 2f37e88..8628d23 100644
--- a/tests/examples/streams/Makefile.in
+++ b/tests/examples/streams/Makefile.in
@@ -291,6 +291,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -298,17 +299,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -433,6 +431,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/tests/misc/Makefile.am b/tests/misc/Makefile.am
index 7ba8572..5aaede5 100644
--- a/tests/misc/Makefile.am
+++ b/tests/misc/Makefile.am
@@ -2,3 +2,11 @@
 	network-clock.scm \
 	network-clock-utils.scm \
 	plot-data
+
+noinst_PROGRAMS = netclock-replay
+
+netclock_replay_LDADD = \
+	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la \
+	$(GST_OBJ_LIBS) \
+	$(GIO_LIBS)
+netclock_replay_CFLAGS = $(GST_OBJ_CFLAGS) $(GIO_CFLAGS)
diff --git a/tests/misc/Makefile.in b/tests/misc/Makefile.in
index 3576ba0..fe5a046 100644
--- a/tests/misc/Makefile.in
+++ b/tests/misc/Makefile.in
@@ -13,6 +13,7 @@
 # PARTICULAR PURPOSE.
 
 @SET_MAKE@
+
 VPATH = @srcdir@
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
@@ -88,6 +89,7 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
+noinst_PROGRAMS = netclock-replay$(EXEEXT)
 subdir = tests/misc
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -133,6 +135,21 @@
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
+PROGRAMS = $(noinst_PROGRAMS)
+netclock_replay_SOURCES = netclock-replay.c
+netclock_replay_OBJECTS = netclock_replay-netclock-replay.$(OBJEXT)
+am__DEPENDENCIES_1 =
+netclock_replay_DEPENDENCIES =  \
+	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la \
+	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+netclock_replay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+	$(netclock_replay_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -145,15 +162,55 @@
 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
 am__v_at_0 = @
 am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
+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 = netclock-replay.c
+DIST_SOURCES = netclock-replay.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__DIST_COMMON = $(srcdir)/Makefile.in
+# 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@
@@ -228,6 +285,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -235,17 +293,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -370,6 +425,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
@@ -452,9 +509,16 @@
 	network-clock-utils.scm \
 	plot-data
 
+netclock_replay_LDADD = \
+	$(top_builddir)/libs/gst/net/libgstnet-@GST_API_VERSION@.la \
+	$(GST_OBJ_LIBS) \
+	$(GIO_LIBS)
+
+netclock_replay_CFLAGS = $(GST_OBJ_CFLAGS) $(GIO_CFLAGS)
 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 \
@@ -485,17 +549,122 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
+clean-noinstPROGRAMS:
+	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+	echo " rm -f" $$list; \
+	rm -f $$list || exit $$?; \
+	test -n "$(EXEEXT)" || exit 0; \
+	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+	echo " rm -f" $$list; \
+	rm -f $$list
+
+netclock-replay$(EXEEXT): $(netclock_replay_OBJECTS) $(netclock_replay_DEPENDENCIES) $(EXTRA_netclock_replay_DEPENDENCIES) 
+	@rm -f netclock-replay$(EXEEXT)
+	$(AM_V_CCLD)$(netclock_replay_LINK) $(netclock_replay_OBJECTS) $(netclock_replay_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netclock_replay-netclock-replay.Po@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 $@ $<
+
+netclock_replay-netclock-replay.o: netclock-replay.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(netclock_replay_CFLAGS) $(CFLAGS) -MT netclock_replay-netclock-replay.o -MD -MP -MF $(DEPDIR)/netclock_replay-netclock-replay.Tpo -c -o netclock_replay-netclock-replay.o `test -f 'netclock-replay.c' || echo '$(srcdir)/'`netclock-replay.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/netclock_replay-netclock-replay.Tpo $(DEPDIR)/netclock_replay-netclock-replay.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='netclock-replay.c' object='netclock_replay-netclock-replay.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) $(netclock_replay_CFLAGS) $(CFLAGS) -c -o netclock_replay-netclock-replay.o `test -f 'netclock-replay.c' || echo '$(srcdir)/'`netclock-replay.c
+
+netclock_replay-netclock-replay.obj: netclock-replay.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(netclock_replay_CFLAGS) $(CFLAGS) -MT netclock_replay-netclock-replay.obj -MD -MP -MF $(DEPDIR)/netclock_replay-netclock-replay.Tpo -c -o netclock_replay-netclock-replay.obj `if test -f 'netclock-replay.c'; then $(CYGPATH_W) 'netclock-replay.c'; else $(CYGPATH_W) '$(srcdir)/netclock-replay.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/netclock_replay-netclock-replay.Tpo $(DEPDIR)/netclock_replay-netclock-replay.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='netclock-replay.c' object='netclock_replay-netclock-replay.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) $(netclock_replay_CFLAGS) $(CFLAGS) -c -o netclock_replay-netclock-replay.obj `if test -f 'netclock-replay.c'; then $(CYGPATH_W) 'netclock-replay.c'; else $(CYGPATH_W) '$(srcdir)/netclock-replay.c'; fi`
+
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
-tags TAGS:
 
-ctags CTAGS:
+ID: $(am__tagged_files)
+	$(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
 
-cscope cscopelist:
+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'`; \
@@ -529,7 +698,7 @@
 	done
 check-am: all-am
 check: check-am
-all-am: Makefile
+all-am: Makefile $(PROGRAMS)
 installdirs:
 install: install-am
 install-exec: install-exec-am
@@ -563,11 +732,14 @@
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool mostlyclean-am
+clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+	mostlyclean-am
 
 distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
-distclean-am: clean-am distclean-generic
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
 
 dvi: dvi-am
 
@@ -610,12 +782,14 @@
 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-generic mostlyclean-libtool
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
 
 pdf: pdf-am
 
@@ -629,17 +803,19 @@
 
 .MAKE: install-am install-strip
 
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-	cscopelist-am ctags-am distclean 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-man \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
+	clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+	ctags-am distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags-am uninstall uninstall-am
+	tags tags-am uninstall uninstall-am
 
 .PRECIOUS: Makefile
 
diff --git a/tests/misc/netclock-replay.c b/tests/misc/netclock-replay.c
new file mode 100644
index 0000000..531bbe7
--- /dev/null
+++ b/tests/misc/netclock-replay.c
@@ -0,0 +1,133 @@
+/* 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.
+ */
+
+#include <stdio.h>
+
+/* We need the internal netclock estimation function to (re)run the code on
+ * captured samples, plus its dependencies for the build to succeed. */
+#include "../../libs/gst/net/gstntppacket.c"
+#include "../../libs/gst/net/gstnetclientclock.c"
+
+static gchar *input = NULL;
+static gboolean debug = FALSE;
+static gint rtt_limit = 0;
+
+static GOptionEntry entries[] = {
+  {"input", 'i', 0, G_OPTION_ARG_FILENAME, &input,
+        "Clock reading file containing one local and remote time readings, one "
+        "per line",
+      "FILE"},
+  {"rtt-limit", 'r', 0, G_OPTION_ARG_INT64, &rtt_limit,
+      "Round trip time limit on packets (in ms)", "MSEC"},
+  {"debug", 'd', 0, G_OPTION_ARG_NONE, &debug, "Verbose debug output", NULL},
+  {NULL,}
+};
+
+int
+main (int argc, char *argv[])
+{
+  GstNetClientInternalClock *clock;
+  GstBus *bus;
+  GIOChannel *channel;
+  GIOStatus status;
+  GError *error = NULL;
+  GOptionContext *context;
+  gchar *line;
+  int ret = 1;
+
+  context = g_option_context_new (NULL);
+  g_option_context_add_main_entries (context, entries, NULL);
+  g_option_context_add_group (context, gst_init_get_option_group ());
+
+  if (!g_option_context_parse (context, &argc, &argv, &error)) {
+    g_print ("Failed to parse options: %s\n\n", error->message);
+    g_error_free (error);
+    return 1;
+  }
+
+  if (input) {
+    if (!(channel = g_io_channel_new_file (input, "r", NULL))) {
+      g_print ("Could not read input file: %s\n", input);
+      return 1;
+    }
+  } else {
+    if (!(channel = g_io_channel_unix_new (0))) {
+      g_print ("Could not read stdin");
+      return 1;
+    }
+  }
+
+  clock = g_object_new (GST_TYPE_NET_CLIENT_INTERNAL_CLOCK, NULL);
+  bus = gst_bus_new ();
+
+  /* FIXME: Find a way to do this without touching the structure internals */
+  if (rtt_limit)
+    clock->roundtrip_limit = rtt_limit * GST_MSECOND;
+  clock->busses = g_list_prepend (clock->busses, bus);
+
+  while ((status = g_io_channel_read_line (channel, &line, NULL, NULL,
+              &error)) == G_IO_STATUS_NORMAL) {
+    GstClockTime local_1, local_2, remote_1, remote_2;
+    GstMessage *message;
+
+    if (sscanf (line, "%" G_GUINT64_FORMAT " %" G_GUINT64_FORMAT " %"
+            G_GUINT64_FORMAT " %" G_GUINT64_FORMAT, &local_1, &remote_1,
+            &remote_2, &local_2) != 4) {
+      g_print ("Failed to get local/remote time values from: %s\n", line);
+      goto done;
+    }
+
+    if (debug)
+      g_print ("%s", line);
+
+    gst_net_client_internal_clock_observe_times (clock, local_1, remote_1,
+        remote_2, local_2);
+
+    g_free (line);
+
+    if ((message = gst_bus_pop_filtered (bus, GST_MESSAGE_ELEMENT))) {
+      const GstStructure *st;
+      gchar *str;
+
+      st = gst_message_get_structure (message);
+      str = gst_structure_to_string (st);
+
+      g_print ("%s\n", str);
+
+      g_free (str);
+      gst_message_unref (message);
+    }
+  }
+
+  if (status == G_IO_CHANNEL_ERROR) {
+    g_print ("Error reading file: %s\n", error->message);
+    g_error_free (error);
+    goto done;
+  }
+
+  g_io_channel_unref (channel);
+  g_free (input);
+  gst_object_unref (bus);
+
+  ret = 0;
+
+done:
+  return ret;
+}
diff --git a/tools/Makefile.in b/tools/Makefile.in
index f1eb96c..a560138 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -360,6 +360,7 @@
 GMSGFMT_015 = @GMSGFMT_015@
 GREP = @GREP@
 GSL_LIBS = @GSL_LIBS@
+GSTCONFIG_BUILT_WITH_MSVC = @GSTCONFIG_BUILT_WITH_MSVC@
 GST_AGE = @GST_AGE@
 GST_ALL_CFLAGS = @GST_ALL_CFLAGS@
 GST_ALL_CXXFLAGS = @GST_ALL_CXXFLAGS@
@@ -367,17 +368,14 @@
 GST_ALL_LIBS = @GST_ALL_LIBS@
 GST_API_VERSION = @GST_API_VERSION@
 GST_CURRENT = @GST_CURRENT@
-GST_DISABLE_ALLOC_TRACE_DEFINE = @GST_DISABLE_ALLOC_TRACE_DEFINE@
 GST_DISABLE_GST_DEBUG_DEFINE = @GST_DISABLE_GST_DEBUG_DEFINE@
 GST_DISABLE_GST_TRACER_HOOKS_DEFINE = @GST_DISABLE_GST_TRACER_HOOKS_DEFINE@
 GST_DISABLE_OPTION_PARSING_DEFINE = @GST_DISABLE_OPTION_PARSING_DEFINE@
 GST_DISABLE_PARSE_DEFINE = @GST_DISABLE_PARSE_DEFINE@
 GST_DISABLE_PLUGIN_DEFINE = @GST_DISABLE_PLUGIN_DEFINE@
 GST_DISABLE_REGISTRY_DEFINE = @GST_DISABLE_REGISTRY_DEFINE@
-GST_DISABLE_TRACE_DEFINE = @GST_DISABLE_TRACE_DEFINE@
 GST_HAVE_MONOTONIC_CLOCK_DEFINE = @GST_HAVE_MONOTONIC_CLOCK_DEFINE@
 GST_HAVE_POSIX_TIMERS_DEFINE = @GST_HAVE_POSIX_TIMERS_DEFINE@
-GST_HAVE_UNALIGNED_ACCESS_DEFINE = @GST_HAVE_UNALIGNED_ACCESS_DEFINE@
 GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
 GST_LIBVERSION = @GST_LIBVERSION@
 GST_LIB_LDFLAGS = @GST_LIB_LDFLAGS@
@@ -502,6 +500,8 @@
 SHELL = @SHELL@
 SOCKET_LIBS = @SOCKET_LIBS@
 STRIP = @STRIP@
+UNWIND_CFLAGS = @UNWIND_CFLAGS@
+UNWIND_LIBS = @UNWIND_LIBS@
 USE_NLS = @USE_NLS@
 VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
 VALGRIND_LIBS = @VALGRIND_LIBS@
diff --git a/tools/gst-inspect.c b/tools/gst-inspect.c
index 845f52e..3a59ef3 100644
--- a/tools/gst-inspect.c
+++ b/tools/gst-inspect.c
@@ -541,7 +541,6 @@
 static void
 print_pad_templates_info (GstElement * element, GstElementFactory * factory)
 {
-  GstElementClass *gstelement_class;
   const GList *pads;
   GstStaticPadTemplate *padtemplate;
 
@@ -551,8 +550,6 @@
     return;
   }
 
-  gstelement_class = GST_ELEMENT_CLASS (G_OBJECT_GET_CLASS (element));
-
   pads = gst_element_factory_get_static_pad_templates (factory);
   while (pads) {
     padtemplate = (GstStaticPadTemplate *) (pads->data);
@@ -571,8 +568,6 @@
       n_print ("    Availability: Sometimes\n");
     else if (padtemplate->presence == GST_PAD_REQUEST) {
       n_print ("    Availability: On request\n");
-      n_print ("      Has request_new_pad() function: %s\n",
-          GST_DEBUG_FUNCPTR_NAME (gstelement_class->request_new_pad));
     } else
       n_print ("    Availability: UNKNOWN!!!\n");
 
@@ -743,6 +738,19 @@
   return FALSE;
 }
 
+static gboolean
+gtype_needs_ptr_marker (GType type)
+{
+  if (type == G_TYPE_POINTER)
+    return FALSE;
+
+  if (G_TYPE_FUNDAMENTAL (type) == G_TYPE_POINTER || G_TYPE_IS_BOXED (type)
+      || G_TYPE_IS_OBJECT (type))
+    return TRUE;
+
+  return FALSE;
+}
+
 static void
 print_signal_info (GstElement * element)
 {
@@ -813,12 +821,7 @@
       indent_len = strlen (query->signal_name) +
           strlen (g_type_name (query->return_type)) + 24;
 
-
-      if (query->return_type == G_TYPE_POINTER) {
-        pmark = "";
-      } else if (G_TYPE_FUNDAMENTAL (query->return_type) == G_TYPE_POINTER
-          || G_TYPE_IS_BOXED (query->return_type)
-          || G_TYPE_IS_OBJECT (query->return_type)) {
+      if (gtype_needs_ptr_marker (query->return_type)) {
         pmark = "* ";
         indent_len += 2;
       } else {
@@ -833,17 +836,13 @@
           g_type_name (type));
 
       for (j = 0; j < query->n_params; j++) {
+        const gchar *type_name, *asterisk;
+
+        type_name = g_type_name (query->param_types[j]);
+        asterisk = gtype_needs_ptr_marker (query->param_types[j]) ? "*" : "";
+
         g_print (",\n");
-        if (G_TYPE_IS_FUNDAMENTAL (query->param_types[j])) {
-          n_print ("%s%s arg%d", indent,
-              g_type_name (query->param_types[j]), j);
-        } else if (G_TYPE_IS_ENUM (query->param_types[j])) {
-          n_print ("%s%s arg%d", indent,
-              g_type_name (query->param_types[j]), j);
-        } else {
-          n_print ("%s%s* arg%d", indent,
-              g_type_name (query->param_types[j]), j);
-        }
+        n_print ("%s%s%s arg%d", indent, type_name, asterisk, j);
       }
 
       if (k == 0) {
@@ -1561,6 +1560,9 @@
         } else {
           exit_code = 1;
         }
+
+        if (feature)
+          gst_object_unref (feature);
       } else {
         /* FIXME: support checking for plugins too */
         g_printerr ("Checking for plugins is not supported yet\n");
diff --git a/tools/gst-launch.1.in b/tools/gst-launch.1.in
index 409727f..5034f29 100644
--- a/tools/gst-launch.1.in
+++ b/tools/gst-launch.1.in
@@ -222,10 +222,10 @@
 .SH "PIPELINE EXAMPLES"
 
 The examples below assume that you have the correct plug-ins available.
-In general, "osssink" can be substituted with another audio output
-plug-in such as "esdsink", "alsasink", "osxaudiosink", or "artsdsink".
-Likewise, "xvimagesink" can be substituted with "ximagesink", "sdlvideosink",
-"osxvideosink", or "aasink". Keep in mind though that different sinks might
+In general, "pulsesink" can be substituted with another audio output
+plug-in such as "alsasink" or "osxaudiosink"
+Likewise, "xvimagesink" can be substituted with "ximagesink", "glimagesink",
+or "osxvideosink". Keep in mind though that different sinks might
 accept different formats and even the same sink might accept different formats
 on different machines, so you might need to add converter elements like
 audioconvert and audioresample (for audio) or videoconvert (for video)
@@ -234,45 +234,45 @@
 .B Audio playback
 
 .B
-        gst\-launch filesrc location=music.mp3 ! mad ! audioconvert ! audioresample ! osssink
+        gst\-launch filesrc location=music.mp3 ! mad ! audioconvert ! audioresample ! pulsesink
 .br
 Play the mp3 music file "music.mp3" using a libmad-based plug-in and
-output to an OSS device
+output to an Pulseaudio device
 
 .B
-        gst\-launch filesrc location=music.ogg ! oggdemux ! vorbisdec ! audioconvert ! audioresample ! osssink
+        gst\-launch filesrc location=music.ogg ! oggdemux ! vorbisdec ! audioconvert ! audioresample ! pulsesink
 .br
 Play an Ogg Vorbis format file
 
 .B
-        gst\-launch gnomevfssrc location=music.mp3 ! mad ! osssink
+        gst\-launch giosrc location=music.mp3 ! mpegaudioparse ! mad ! pulsesink
 .br
 .B
-        gst\-launch gnomevfssrc location=http://domain.com/music.mp3 ! mad ! audioconvert ! audioresample ! osssink
+        gst\-launch giosrc location=http://domain.com/music.mp3 ! mpegaudioparse ! mad ! audioconvert ! audioresample ! pulsesink
 .br
-Play an mp3 file or an http stream using GNOME\-VFS
+Play an mp3 file or an http stream using GIO
 
 .B
-        gst\-launch gnomevfssrc location=smb://computer/music.mp3 ! mad ! audioconvert ! audioresample ! osssink
+        gst\-launch giosrc location=smb://computer/music.mp3 ! mpegaudioparse ! mad ! audioconvert ! audioresample ! pulsesink
 .br
-Use GNOME\-VFS to play an mp3 file located on an SMB server
+Use GIO to play an mp3 file located on an SMB server
 
 .B Format conversion
 
 .B
-        gst\-launch filesrc location=music.mp3 ! mad ! audioconvert ! vorbisenc ! oggmux ! filesink location=music.ogg
+        gst\-launch filesrc location=music.mp3 ! mpegaudioparse ! mad ! audioconvert ! vorbisenc ! oggmux ! filesink location=music.ogg
 .br
 Convert an mp3 music file to an Ogg Vorbis file
 
 .B
-        gst\-launch filesrc location=music.mp3 ! mad ! audioconvert ! flacenc ! filesink location=test.flac
+        gst\-launch filesrc location=music.mp3 ! mpegaudioparse ! mad ! audioconvert ! flacenc ! filesink location=test.flac
 .br
 Convert to the FLAC format
 
 .B Other
 
 .B
-        gst\-launch filesrc location=music.wav ! wavparse ! audioconvert ! audioresample ! osssink
+        gst\-launch filesrc location=music.wav ! wavparse ! audioconvert ! audioresample ! pulsesink
 .br
 Plays a .WAV file that contains raw audio data (PCM).
 
@@ -285,12 +285,12 @@
 Convert a .WAV file containing raw audio data into an Ogg Vorbis or mp3 file
 
 .B
-        gst\-launch cdparanoiasrc mode=continuous ! audioconvert ! lame ! id3v2mux ! filesink location=cd.mp3
+        gst\-launch cdparanoiasrc mode=continuous ! audioconvert ! lame ! mpegaudioparse ! id3v2mux ! filesink location=cd.mp3
 .br
 rips all tracks from compact disc and convert them into a single mp3 file
 
 .B
-        gst\-launch cdparanoiasrc track=5 ! audioconvert ! lame ! id3v2mux ! filesink location=track5.mp3
+        gst\-launch cdparanoiasrc track=5 ! audioconvert ! lame ! mpegaudioparse ! id3v2mux ! filesink location=track5.mp3
 .br
 rips track 5 from the CD and converts it into a single mp3 file
 
@@ -302,31 +302,31 @@
        gst\-launch cdda://5 ! lame vbr=new vbr-quality=6 ! filesink location=track5.mp3
 
 .B
-        gst\-launch osssrc ! audioconvert ! vorbisenc ! oggmux ! filesink location=input.ogg
+        gst\-launch pulsesrc ! audioconvert ! vorbisenc ! oggmux ! filesink location=input.ogg
 .br
 records sound from your audio input and encodes it into an ogg file
 
 .B Video
 
 .B
-        gst\-launch filesrc location=JB_FF9_TheGravityOfLove.mpg ! dvddemux ! mpeg2dec ! xvimagesink
+        gst\-launch filesrc location=JB_FF9_TheGravityOfLove.mpg ! dvddemux ! mpegvideoparse ! mpeg2dec ! xvimagesink
 .br
 Display only the video portion of an MPEG-1 video file, outputting to
 an X display window
 
 .B
-        gst\-launch filesrc location=/flflfj.vob ! dvddemux ! mpeg2dec ! sdlvideosink
+        gst\-launch filesrc location=/flflfj.vob ! dvddemux ! mpegvideoparse ! mpeg2dec ! sdlvideosink
 .br
 Display the video portion of a .vob file (used on DVDs), outputting to
 an SDL window
 
 .B
-        gst\-launch filesrc location=movie.mpg ! dvddemux name=demuxer  demuxer. ! queue ! mpeg2dec ! sdlvideosink  demuxer. ! queue ! mad ! audioconvert ! audioresample ! osssink
+        gst\-launch filesrc location=movie.mpg ! dvddemux name=demuxer  demuxer. ! queue ! mpegvideoparse ! mpeg2dec ! sdlvideosink  demuxer. ! queue ! mpegaudioparse ! mad ! audioconvert ! audioresample ! pulsesink
 .br
 Play both video and audio portions of an MPEG movie
 
 .B
-        gst\-launch filesrc location=movie.mpg ! mpegdemux name=demuxer demuxer. ! queue ! mpeg2dec ! videoconvert ! sdlvideosink   demuxer. ! queue ! mad ! audioconvert ! audioresample ! osssink
+        gst\-launch filesrc location=movie.mpg ! mpegdemux name=demuxer demuxer. ! queue ! mpegvideoparse ! mpeg2dec ! videoconvert ! sdlvideosink   demuxer. ! queue ! mpegaudioparse ! mad ! audioconvert ! audioresample ! pulsesink
 .br
 Play an AVI movie with an external text subtitle stream
 
@@ -364,7 +364,7 @@
 Generate a null stream and ignore it (and print out details).
 
 .B
-        gst\-launch audiotestsrc ! audioconvert ! audioresample ! osssink
+        gst\-launch audiotestsrc ! audioconvert ! audioresample ! pulsesink
 .br
 Generate a pure sine tone to test the audio output
 
@@ -382,12 +382,12 @@
 to get a working pipeline.
 
 .B
-        gst\-launch filesrc location=musicfile ! decodebin ! audioconvert ! audioresample ! osssink
+        gst\-launch filesrc location=musicfile ! decodebin ! audioconvert ! audioresample ! pulsesink
 .br
 Play any supported audio format
 
 .B
-        gst\-launch filesrc location=videofile ! decodebin name=decoder decoder. ! queue ! audioconvert ! audioresample ! osssink   decoder. !  videoconvert ! xvimagesink
+        gst\-launch filesrc location=videofile ! decodebin name=decoder decoder. ! queue ! audioconvert ! audioresample ! pulsesink   decoder. !  videoconvert ! xvimagesink
 .br
 Play any supported video format with video and audio output. Threads are used
 automatically. To make this even easier, you can use the playbin element:
@@ -407,7 +407,7 @@
 Show a test image and use the YUY2 or YV12 video format for this.
 
 .B
-        gst\-launch osssrc !  'audio/x-raw,rate=[32000,64000],format={S16LE,S24LE,S32LE}' ! wavenc ! filesink location=recording.wav
+        gst\-launch pulsesrc !  'audio/x-raw,rate=[32000,64000],format={S16LE,S24LE,S32LE}' ! wavenc ! filesink location=recording.wav
 .br
 record audio and write it to a .wav file. Force usage of signed 16 to 32 bit
 samples and a sample rate between 32kHz and 64KHz.
diff --git a/tools/gst-launch.c b/tools/gst-launch.c
index 859f9db..2de754d 100644
--- a/tools/gst-launch.c
+++ b/tools/gst-launch.c
@@ -65,6 +65,7 @@
 static gboolean messages = FALSE;
 static gboolean is_live = FALSE;
 static gboolean waiting_eos = FALSE;
+static gchar **exclude_args = NULL;
 
 /* convenience macro so we don't have to litter the code with if(!quiet) */
 #define PRINT if(!quiet)g_print
@@ -834,6 +835,47 @@
         gst_context_unref (context);
         break;
       }
+      case GST_MESSAGE_PROPERTY_NOTIFY:{
+        const GValue *val;
+        const gchar *name;
+        GstObject *obj;
+        gchar *val_str = NULL;
+        gchar **ex_prop, *obj_name;
+
+        if (quiet)
+          break;
+
+        gst_message_parse_property_notify (message, &obj, &name, &val);
+
+        /* Let's not print anything for excluded properties... */
+        ex_prop = exclude_args;
+        while (ex_prop != NULL && *ex_prop != NULL) {
+          if (strcmp (name, *ex_prop) == 0)
+            break;
+          ex_prop++;
+        }
+        if (ex_prop != NULL && *ex_prop != NULL)
+          break;
+
+        obj_name = gst_object_get_path_string (GST_OBJECT (obj));
+        if (val != NULL) {
+          if (G_VALUE_HOLDS_STRING (val))
+            val_str = g_value_dup_string (val);
+          else if (G_VALUE_TYPE (val) == GST_TYPE_CAPS)
+            val_str = gst_caps_to_string (g_value_get_boxed (val));
+          else if (G_VALUE_TYPE (val) == GST_TYPE_TAG_LIST)
+            val_str = gst_tag_list_to_string (g_value_get_boxed (val));
+          else
+            val_str = gst_value_serialize (val);
+        } else {
+          val_str = g_strdup ("(no value)");
+        }
+
+        g_print ("%s: %s = %s\n", obj_name, name, val_str);
+        g_free (obj_name);
+        g_free (val_str);
+        break;
+      }
       default:
         /* just be quiet by default */
         break;
@@ -913,7 +955,6 @@
   gboolean check_index = FALSE;
 #endif
   gchar *savefile = NULL;
-  gchar **exclude_args = NULL;
 #ifndef GST_DISABLE_OPTION_PARSING
   GOptionEntry options[] = {
     {"tags", 't', 0, G_OPTION_ARG_NONE, &tags,
@@ -1032,8 +1073,8 @@
       pipeline = real_pipeline;
     }
     if (verbose) {
-      deep_notify_id = g_signal_connect (pipeline, "deep-notify",
-          G_CALLBACK (gst_object_default_deep_notify), exclude_args);
+      deep_notify_id =
+          gst_element_add_property_deep_notify_watch (pipeline, NULL, TRUE);
     }
 #if 0
     if (check_index) {
diff --git a/win32/common/config.h b/win32/common/config.h
index 0a804b2..9b86d4a 100644
--- a/win32/common/config.h
+++ b/win32/common/config.h
@@ -68,7 +68,7 @@
 #define GST_PACKAGE_ORIGIN "Unknown package origin"
 
 /* GStreamer package release date/time for plugins as YYYY-MM-DD */
-#define GST_PACKAGE_RELEASE_DATETIME "2016-08-19"
+#define GST_PACKAGE_RELEASE_DATETIME "2016-09-30"
 
 /* Define if static plugins should be built */
 #undef GST_PLUGIN_BUILD_STATIC
@@ -82,6 +82,9 @@
 /* Define to 1 if you have the `alarm' function. */
 #undef HAVE_ALARM
 
+/* Have backtrace */
+#undef HAVE_BACKTRACE
+
 /* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
    CoreFoundation framework. */
 #undef HAVE_CFLOCALECOPYCURRENT
@@ -167,6 +170,9 @@
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 
+/* Define to 1 if you have the <execinfo.h> header file. */
+#undef HAVE_EXECINFO_H
+
 /* Define to 1 if you have the `fgetpos' function. */
 #define HAVE_FGETPOS 1
 
@@ -400,15 +406,15 @@
 /* Have __uint128_t type */
 #undef HAVE_UINT128_T
 
-/* defined if unaligned memory access works correctly */
-#undef HAVE_UNALIGNED_ACCESS
-
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
 /* Define to 1 if the system has the type `unsigned long long int'. */
 #undef HAVE_UNSIGNED_LONG_LONG_INT
 
+/* libunwind available */
+#undef HAVE_UNWIND
+
 /* Define if valgrind should be used */
 #undef HAVE_VALGRIND
 
@@ -462,7 +468,7 @@
 #define PACKAGE_NAME "GStreamer"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "GStreamer 1.8.3"
+#define PACKAGE_STRING "GStreamer 1.9.90"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "gstreamer"
@@ -471,7 +477,7 @@
 #undef PACKAGE_URL
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.8.3"
+#define PACKAGE_VERSION "1.9.90"
 
 /* directory where plugins are located */
 #ifdef _DEBUG
@@ -515,7 +521,7 @@
 #undef USE_POISONING
 
 /* Version number of package */
-#define VERSION "1.8.3"
+#define VERSION "1.9.90"
 
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */
diff --git a/win32/common/gstconfig.h b/win32/common/gstconfig.h
index d893411..684a2e0 100644
--- a/win32/common/gstconfig.h
+++ b/win32/common/gstconfig.h
@@ -56,8 +56,6 @@
 #define GST_DISABLE_GST_DEBUG 1
 #define GST_DISABLE_LOADSAVE 1
 #define GST_DISABLE_PARSE 1
-#define GST_DISABLE_TRACE 1
-#define GST_DISABLE_ALLOC_TRACE 1
 #define GST_DISABLE_REGISTRY 1
 #define GST_DISABLE_PLUGIN 1
 #define GST_HAVE_GLIB_2_8 1
@@ -77,18 +75,9 @@
 /* #undef GST_DISABLE_GST_DEBUG */
 
 /* DOES NOT WORK */
-/* #undef GST_DISABLE_LOADSAVE */
-
-/* DOES NOT WORK */
 /* #undef GST_DISABLE_PARSE */
 
 /* DOES NOT WORK */
-/* #undef GST_DISABLE_TRACE */
-
-/* DOES NOT WORK */
-/* #undef GST_DISABLE_ALLOC_TRACE */
-
-/* DOES NOT WORK */
 /* #undef GST_DISABLE_REGISTRY */
 
 /* DOES NOT WORK */
diff --git a/win32/common/gstenumtypes.c b/win32/common/gstenumtypes.c
index 757bc6b..346613b 100644
--- a/win32/common/gstenumtypes.c
+++ b/win32/common/gstenumtypes.c
@@ -13,6 +13,8 @@
 {
   static gsize id = 0;
   static const GFlagsValue values[] = {
+    {C_FLAGS (GST_OBJECT_FLAG_MAY_BE_LEAKED), "GST_OBJECT_FLAG_MAY_BE_LEAKED",
+        "may-be-leaked"},
     {C_FLAGS (GST_OBJECT_FLAG_LAST), "GST_OBJECT_FLAG_LAST", "last"},
     {0, NULL, NULL}
   };
@@ -606,9 +608,13 @@
     {C_ENUM (GST_EVENT_STREAM_START), "GST_EVENT_STREAM_START", "stream-start"},
     {C_ENUM (GST_EVENT_CAPS), "GST_EVENT_CAPS", "caps"},
     {C_ENUM (GST_EVENT_SEGMENT), "GST_EVENT_SEGMENT", "segment"},
+    {C_ENUM (GST_EVENT_STREAM_COLLECTION), "GST_EVENT_STREAM_COLLECTION",
+        "stream-collection"},
     {C_ENUM (GST_EVENT_TAG), "GST_EVENT_TAG", "tag"},
     {C_ENUM (GST_EVENT_BUFFERSIZE), "GST_EVENT_BUFFERSIZE", "buffersize"},
     {C_ENUM (GST_EVENT_SINK_MESSAGE), "GST_EVENT_SINK_MESSAGE", "sink-message"},
+    {C_ENUM (GST_EVENT_STREAM_GROUP_DONE), "GST_EVENT_STREAM_GROUP_DONE",
+        "stream-group-done"},
     {C_ENUM (GST_EVENT_EOS), "GST_EVENT_EOS", "eos"},
     {C_ENUM (GST_EVENT_TOC), "GST_EVENT_TOC", "toc"},
     {C_ENUM (GST_EVENT_PROTECTION), "GST_EVENT_PROTECTION", "protection"},
@@ -621,6 +627,8 @@
     {C_ENUM (GST_EVENT_STEP), "GST_EVENT_STEP", "step"},
     {C_ENUM (GST_EVENT_RECONFIGURE), "GST_EVENT_RECONFIGURE", "reconfigure"},
     {C_ENUM (GST_EVENT_TOC_SELECT), "GST_EVENT_TOC_SELECT", "toc-select"},
+    {C_ENUM (GST_EVENT_SELECT_STREAMS), "GST_EVENT_SELECT_STREAMS",
+        "select-streams"},
     {C_ENUM (GST_EVENT_CUSTOM_UPSTREAM), "GST_EVENT_CUSTOM_UPSTREAM",
         "custom-upstream"},
     {C_ENUM (GST_EVENT_CUSTOM_DOWNSTREAM), "GST_EVENT_CUSTOM_DOWNSTREAM",
@@ -644,25 +652,6 @@
 }
 
 GType
-gst_qos_type_get_type (void)
-{
-  static gsize id = 0;
-  static const GEnumValue values[] = {
-    {C_ENUM (GST_QOS_TYPE_OVERFLOW), "GST_QOS_TYPE_OVERFLOW", "overflow"},
-    {C_ENUM (GST_QOS_TYPE_UNDERFLOW), "GST_QOS_TYPE_UNDERFLOW", "underflow"},
-    {C_ENUM (GST_QOS_TYPE_THROTTLE), "GST_QOS_TYPE_THROTTLE", "throttle"},
-    {0, NULL, NULL}
-  };
-
-  if (g_once_init_enter (&id)) {
-    GType tmp = g_enum_register_static ("GstQOSType", values);
-    g_once_init_leave (&id, tmp);
-  }
-
-  return (GType) id;
-}
-
-GType
 gst_stream_flags_get_type (void)
 {
   static gsize id = 0;
@@ -683,6 +672,25 @@
   return (GType) id;
 }
 
+GType
+gst_qos_type_get_type (void)
+{
+  static gsize id = 0;
+  static const GEnumValue values[] = {
+    {C_ENUM (GST_QOS_TYPE_OVERFLOW), "GST_QOS_TYPE_OVERFLOW", "overflow"},
+    {C_ENUM (GST_QOS_TYPE_UNDERFLOW), "GST_QOS_TYPE_UNDERFLOW", "underflow"},
+    {C_ENUM (GST_QOS_TYPE_THROTTLE), "GST_QOS_TYPE_THROTTLE", "throttle"},
+    {0, NULL, NULL}
+  };
+
+  if (g_once_init_enter (&id)) {
+    GType tmp = g_enum_register_static ("GstQOSType", values);
+    g_once_init_leave (&id, tmp);
+  }
+
+  return (GType) id;
+}
+
 /* enumerations from "gstformat.h" */
 GType
 gst_format_get_type (void)
@@ -883,6 +891,13 @@
         "device-added"},
     {C_FLAGS (GST_MESSAGE_DEVICE_REMOVED), "GST_MESSAGE_DEVICE_REMOVED",
         "device-removed"},
+    {C_FLAGS (GST_MESSAGE_PROPERTY_NOTIFY), "GST_MESSAGE_PROPERTY_NOTIFY",
+        "property-notify"},
+    {C_FLAGS (GST_MESSAGE_STREAM_COLLECTION), "GST_MESSAGE_STREAM_COLLECTION",
+        "stream-collection"},
+    {C_FLAGS (GST_MESSAGE_STREAMS_SELECTED), "GST_MESSAGE_STREAMS_SELECTED",
+        "streams-selected"},
+    {C_FLAGS (GST_MESSAGE_REDIRECT), "GST_MESSAGE_REDIRECT", "redirect"},
     {C_FLAGS (GST_MESSAGE_ANY), "GST_MESSAGE_ANY", "any"},
     {0, NULL, NULL}
   };
@@ -1050,6 +1065,8 @@
         "lockable"},
     {C_FLAGS (GST_MINI_OBJECT_FLAG_LOCK_READONLY),
         "GST_MINI_OBJECT_FLAG_LOCK_READONLY", "lock-readonly"},
+    {C_FLAGS (GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED),
+        "GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED", "may-be-leaked"},
     {C_FLAGS (GST_MINI_OBJECT_FLAG_LAST), "GST_MINI_OBJECT_FLAG_LAST", "last"},
     {0, NULL, NULL}
   };
@@ -1650,6 +1667,29 @@
   return (GType) id;
 }
 
+/* enumerations from "gststreams.h" */
+GType
+gst_stream_type_get_type (void)
+{
+  static gsize id = 0;
+  static const GFlagsValue values[] = {
+    {C_FLAGS (GST_STREAM_TYPE_UNKNOWN), "GST_STREAM_TYPE_UNKNOWN", "unknown"},
+    {C_FLAGS (GST_STREAM_TYPE_AUDIO), "GST_STREAM_TYPE_AUDIO", "audio"},
+    {C_FLAGS (GST_STREAM_TYPE_VIDEO), "GST_STREAM_TYPE_VIDEO", "video"},
+    {C_FLAGS (GST_STREAM_TYPE_CONTAINER), "GST_STREAM_TYPE_CONTAINER",
+        "container"},
+    {C_FLAGS (GST_STREAM_TYPE_TEXT), "GST_STREAM_TYPE_TEXT", "text"},
+    {0, NULL, NULL}
+  };
+
+  if (g_once_init_enter (&id)) {
+    GType tmp = g_flags_register_static ("GstStreamType", values);
+    g_once_init_leave (&id, tmp);
+  }
+
+  return (GType) id;
+}
+
 /* enumerations from "gstsystemclock.h" */
 GType
 gst_clock_type_get_type (void)
@@ -1994,6 +2034,8 @@
         "fatal-errors"},
     {C_FLAGS (GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS),
         "GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS", "no-single-element-bins"},
+    {C_FLAGS (GST_PARSE_FLAG_PLACE_IN_BIN), "GST_PARSE_FLAG_PLACE_IN_BIN",
+        "place-in-bin"},
     {0, NULL, NULL}
   };
 
diff --git a/win32/common/gstenumtypes.h b/win32/common/gstenumtypes.h
index bfe9a01..08d16c5 100644
--- a/win32/common/gstenumtypes.h
+++ b/win32/common/gstenumtypes.h
@@ -79,10 +79,10 @@
 #define GST_TYPE_EVENT_TYPE_FLAGS (gst_event_type_flags_get_type())
 GType gst_event_type_get_type (void);
 #define GST_TYPE_EVENT_TYPE (gst_event_type_get_type())
-GType gst_qos_type_get_type (void);
-#define GST_TYPE_QOS_TYPE (gst_qos_type_get_type())
 GType gst_stream_flags_get_type (void);
 #define GST_TYPE_STREAM_FLAGS (gst_stream_flags_get_type())
+GType gst_qos_type_get_type (void);
+#define GST_TYPE_QOS_TYPE (gst_qos_type_get_type())
 
 /* enumerations from "gstformat.h" */
 GType gst_format_get_type (void);
@@ -186,6 +186,10 @@
 GType gst_segment_flags_get_type (void);
 #define GST_TYPE_SEGMENT_FLAGS (gst_segment_flags_get_type())
 
+/* enumerations from "gststreams.h" */
+GType gst_stream_type_get_type (void);
+#define GST_TYPE_STREAM_TYPE (gst_stream_type_get_type())
+
 /* enumerations from "gstsystemclock.h" */
 GType gst_clock_type_get_type (void);
 #define GST_TYPE_CLOCK_TYPE (gst_clock_type_get_type())
diff --git a/win32/common/gstversion.h b/win32/common/gstversion.h
index 17afba5..020bf82 100644
--- a/win32/common/gstversion.h
+++ b/win32/common/gstversion.h
@@ -54,13 +54,13 @@
  *
  * The minor version of GStreamer at compile time:
  */
-#define GST_VERSION_MINOR (8)
+#define GST_VERSION_MINOR (9)
 /**
  * GST_VERSION_MICRO:
  *
  * The micro version of GStreamer at compile time:
  */
-#define GST_VERSION_MICRO (3)
+#define GST_VERSION_MICRO (90)
 /**
  * GST_VERSION_NANO:
  *
diff --git a/win32/common/libgstbase.def b/win32/common/libgstbase.def
index ff25b51..783f1af 100644
--- a/win32/common/libgstbase.def
+++ b/win32/common/libgstbase.def
@@ -4,6 +4,8 @@
 	gst_adapter_clear
 	gst_adapter_copy
 	gst_adapter_copy_bytes
+	gst_adapter_distance_from_discont
+	gst_adapter_dts_at_discont
 	gst_adapter_flush
 	gst_adapter_get_buffer
 	gst_adapter_get_buffer_fast
@@ -14,10 +16,13 @@
 	gst_adapter_masked_scan_uint32
 	gst_adapter_masked_scan_uint32_peek
 	gst_adapter_new
+	gst_adapter_offset_at_discont
 	gst_adapter_prev_dts
 	gst_adapter_prev_dts_at_offset
+	gst_adapter_prev_offset
 	gst_adapter_prev_pts
 	gst_adapter_prev_pts_at_offset
+	gst_adapter_pts_at_discont
 	gst_adapter_push
 	gst_adapter_take
 	gst_adapter_take_buffer
diff --git a/win32/common/libgstreamer.def b/win32/common/libgstreamer.def
index 3fa3c40..79fe904 100644
--- a/win32/common/libgstreamer.def
+++ b/win32/common/libgstreamer.def
@@ -69,7 +69,6 @@
 	_gst_tag_list_type DATA
 	_gst_toc_entry_type DATA
 	_gst_toc_type DATA
-	_gst_trace_mutex DATA
 	_gst_value_array_type DATA
 	_gst_value_list_type DATA
 	gst_allocation_params_copy
@@ -99,6 +98,7 @@
 	gst_bin_get_by_interface
 	gst_bin_get_by_name
 	gst_bin_get_by_name_recurse_up
+	gst_bin_get_suppressed_flags
 	gst_bin_get_type
 	gst_bin_iterate_all_by_interface
 	gst_bin_iterate_elements
@@ -110,6 +110,7 @@
 	gst_bin_recalculate_latency
 	gst_bin_remove
 	gst_bin_remove_many
+	gst_bin_set_suppressed_flags
 	gst_bin_sync_children_states
 	gst_bitmask_get_type
 	gst_buffer_add_meta
@@ -129,6 +130,7 @@
 	gst_buffer_flags_get_type
 	gst_buffer_foreach_meta
 	gst_buffer_get_all_memory
+	gst_buffer_get_flags
 	gst_buffer_get_max_memory
 	gst_buffer_get_memory
 	gst_buffer_get_memory_range
@@ -137,6 +139,7 @@
 	gst_buffer_get_sizes
 	gst_buffer_get_sizes_range
 	gst_buffer_get_type
+	gst_buffer_has_flags
 	gst_buffer_insert_memory
 	gst_buffer_is_all_memory_writable
 	gst_buffer_is_memory_range_writable
@@ -191,8 +194,10 @@
 	gst_buffer_replace_memory_range
 	gst_buffer_resize
 	gst_buffer_resize_range
+	gst_buffer_set_flags
 	gst_buffer_set_size
 	gst_buffer_unmap
+	gst_buffer_unset_flags
 	gst_buffering_mode_get_type
 	gst_bus_add_signal_watch
 	gst_bus_add_signal_watch_full
@@ -476,6 +481,9 @@
 	gst_double_range_get_type
 	gst_element_abort_state
 	gst_element_add_pad
+	gst_element_add_property_deep_notify_watch
+	gst_element_add_property_notify_watch
+	gst_element_call_async
 	gst_element_change_state
 	gst_element_class_add_metadata
 	gst_element_class_add_pad_template
@@ -535,6 +543,7 @@
 	gst_element_lost_state
 	gst_element_make_from_uri
 	gst_element_message_full
+	gst_element_message_full_with_details
 	gst_element_no_more_pads
 	gst_element_post_message
 	gst_element_provide_clock
@@ -545,6 +554,7 @@
 	gst_element_register
 	gst_element_release_request_pad
 	gst_element_remove_pad
+	gst_element_remove_property_notify_watch
 	gst_element_request_pad
 	gst_element_seek
 	gst_element_seek_simple
@@ -584,8 +594,11 @@
 	gst_event_new_seek
 	gst_event_new_segment
 	gst_event_new_segment_done
+	gst_event_new_select_streams
 	gst_event_new_sink_message
 	gst_event_new_step
+	gst_event_new_stream_collection
+	gst_event_new_stream_group_done
 	gst_event_new_stream_start
 	gst_event_new_tag
 	gst_event_new_toc
@@ -601,9 +614,13 @@
 	gst_event_parse_seek
 	gst_event_parse_segment
 	gst_event_parse_segment_done
+	gst_event_parse_select_streams
 	gst_event_parse_sink_message
 	gst_event_parse_step
+	gst_event_parse_stream
+	gst_event_parse_stream_collection
 	gst_event_parse_stream_flags
+	gst_event_parse_stream_group_done
 	gst_event_parse_stream_start
 	gst_event_parse_tag
 	gst_event_parse_toc
@@ -611,6 +628,7 @@
 	gst_event_set_group_id
 	gst_event_set_running_time_offset
 	gst_event_set_seqnum
+	gst_event_set_stream
 	gst_event_set_stream_flags
 	gst_event_type_flags_get_type
 	gst_event_type_get_flags
@@ -673,6 +691,7 @@
 	gst_library_error_get_type
 	gst_library_error_quark
 	gst_lock_flags_get_type
+	gst_make_element_message_details
 	gst_map_flags_get_type
 	gst_memory_alignment DATA
 	gst_memory_copy
@@ -688,6 +707,8 @@
 	gst_memory_resize
 	gst_memory_share
 	gst_memory_unmap
+	gst_message_add_redirect_entry
+	gst_message_get_num_redirect_entries
 	gst_message_get_seqnum
 	gst_message_get_stream_status_object
 	gst_message_get_structure
@@ -706,13 +727,17 @@
 	gst_message_new_element
 	gst_message_new_eos
 	gst_message_new_error
+	gst_message_new_error_with_details
 	gst_message_new_have_context
 	gst_message_new_info
+	gst_message_new_info_with_details
 	gst_message_new_latency
 	gst_message_new_need_context
 	gst_message_new_new_clock
 	gst_message_new_progress
+	gst_message_new_property_notify
 	gst_message_new_qos
+	gst_message_new_redirect
 	gst_message_new_request_state
 	gst_message_new_reset_time
 	gst_message_new_segment_done
@@ -721,12 +746,15 @@
 	gst_message_new_state_dirty
 	gst_message_new_step_done
 	gst_message_new_step_start
+	gst_message_new_stream_collection
 	gst_message_new_stream_start
 	gst_message_new_stream_status
+	gst_message_new_streams_selected
 	gst_message_new_structure_change
 	gst_message_new_tag
 	gst_message_new_toc
 	gst_message_new_warning
+	gst_message_new_warning_with_details
 	gst_message_parse_async_done
 	gst_message_parse_buffering
 	gst_message_parse_buffering_stats
@@ -736,14 +764,18 @@
 	gst_message_parse_device_added
 	gst_message_parse_device_removed
 	gst_message_parse_error
+	gst_message_parse_error_details
 	gst_message_parse_group_id
 	gst_message_parse_have_context
 	gst_message_parse_info
+	gst_message_parse_info_details
 	gst_message_parse_new_clock
 	gst_message_parse_progress
+	gst_message_parse_property_notify
 	gst_message_parse_qos
 	gst_message_parse_qos_stats
 	gst_message_parse_qos_values
+	gst_message_parse_redirect_entry
 	gst_message_parse_request_state
 	gst_message_parse_reset_time
 	gst_message_parse_segment_done
@@ -751,17 +783,23 @@
 	gst_message_parse_state_changed
 	gst_message_parse_step_done
 	gst_message_parse_step_start
+	gst_message_parse_stream_collection
 	gst_message_parse_stream_status
+	gst_message_parse_streams_selected
 	gst_message_parse_structure_change
 	gst_message_parse_tag
 	gst_message_parse_toc
 	gst_message_parse_warning
+	gst_message_parse_warning_details
 	gst_message_set_buffering_stats
 	gst_message_set_group_id
 	gst_message_set_qos_stats
 	gst_message_set_qos_values
 	gst_message_set_seqnum
 	gst_message_set_stream_status_object
+	gst_message_streams_selected_add
+	gst_message_streams_selected_get_size
+	gst_message_streams_selected_get_stream
 	gst_message_type_get_name
 	gst_message_type_get_type
 	gst_message_type_to_quark
@@ -844,6 +882,7 @@
 	gst_pad_get_peer
 	gst_pad_get_range
 	gst_pad_get_sticky_event
+	gst_pad_get_stream
 	gst_pad_get_stream_id
 	gst_pad_get_type
 	gst_pad_has_current_caps
@@ -857,6 +896,8 @@
 	gst_pad_link_check_get_type
 	gst_pad_link_full
 	gst_pad_link_get_name
+	gst_pad_link_maybe_ghosting
+	gst_pad_link_maybe_ghosting_full
 	gst_pad_link_return_get_type
 	gst_pad_mark_reconfigure
 	gst_pad_mode_get_name
@@ -1184,10 +1225,29 @@
 	gst_static_pad_template_get
 	gst_static_pad_template_get_caps
 	gst_static_pad_template_get_type
+	gst_stream_collection_add_stream
+	gst_stream_collection_get_size
+	gst_stream_collection_get_stream
+	gst_stream_collection_get_type
+	gst_stream_collection_get_upstream_id
+	gst_stream_collection_new
 	gst_stream_error_get_type
 	gst_stream_error_quark
 	gst_stream_flags_get_type
+	gst_stream_get_caps
+	gst_stream_get_stream_flags
+	gst_stream_get_stream_id
+	gst_stream_get_stream_type
+	gst_stream_get_tags
+	gst_stream_get_type
+	gst_stream_new
+	gst_stream_set_caps
+	gst_stream_set_stream_flags
+	gst_stream_set_stream_type
+	gst_stream_set_tags
 	gst_stream_status_type_get_type
+	gst_stream_type_get_name
+	gst_stream_type_get_type
 	gst_structure_can_intersect
 	gst_structure_change_type_get_type
 	gst_structure_copy
